Newer
Older
NiHao / NiHao / src / nihao / context / StructureItemChangeset.java
@xwolf xwolf on 27 Jan 2015 1 KB Initial upload
package nihao.context;

import java.util.ArrayList;

import nihao.db.Changeset;
import nihao.util.Conversor;
import nihao.util.Hasher;

public class StructureItemChangeset extends StructureItem {
	String engine;
	String author;
	private ArrayList<String> queries = new ArrayList<String>();
	private String hash;
	Changeset.ExecutionMode executeMode;

	public StructureItemChangeset(Context owner, String id) {
		super(owner, id);
	}

	public void addQuery(String q) {
		if (q == null || q.length() == 0)
			return;
		queries.add(q);
	}

	@Override
	public String toString() {
		return "changeset: " + id;
	}

	@Override
	public Object get() {
		return new Changeset(id, engine, author, queries.toArray(new String[queries.size()]), hash, executeMode);
	}

	@Override
	public boolean canPreinstantiate() {
		return true;
	}

	@Override
	public Class<?> getStructureClass() {
		return Changeset.class;
	}

	@Override
	public void commit() {
		StringBuilder sb = new StringBuilder();
		for (String s : queries) {
			sb.append(s);
			sb.append(';');
		}
		hash = Conversor.bytesToHex(Hasher.SHA1(Conversor.utf8ToBytes(sb.toString())));
	}
}