/**
* GRANITE DATA SERVICES
* Copyright (C) 2006-2015 GRANITE DATA SERVICES S.A.S.
*
* This file is part of the Granite Data Services Platform.
*
* Granite Data Services is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Granite Data Services is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA, or see <http://www.gnu.org/licenses/>.
*/
package org.granite.tide.data;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
/**
* @author William DRAI
*/
public class ChangeSet implements Externalizable {
private static final long serialVersionUID = 1L;
private Change[] changes = new Change[0];
private final boolean local;
public ChangeSet() {
this.local = false;
}
public ChangeSet(Change... changes) {
this.changes = changes;
this.local = false;
}
public ChangeSet(Change[] changes, boolean local) {
this.changes = changes;
this.local = local;
}
public Change[] getChanges() {
return changes;
}
public void setChanges(Change[] changes) {
this.changes = changes;
}
public boolean isLocal() {
return local;
}
public int size() {
return changes.length;
}
public Change getChange(int index) {
return changes[index];
}
public void writeExternal(ObjectOutput out) throws IOException {
out.writeObject(changes);
}
@Override
public String toString() {
return getChanges() != null ? getChanges().toString() : "[]";
}
// public static valueToString(Object object) {
// if (object == null)
// return "null";
//
// ClassGetter classGetter = GraniteContext.getCurrentInstance().getGraniteConfig().getClassGetter();
// if (!classGetter.isEntity(object))
// return object.toString();
//
// StringBuilder sb = new StringBuilder("{ ");
// List<Object[]> values = classGetter.getFieldValues(object);
// for (Object[] value : values) {
// if (classGetter.isEntity(value[1]))
//
// }
// sb.append(" }");
// }
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
Object[] cs = (Object[])in.readObject();
changes = new Change[cs.length];
for (int i = 0; i < cs.length; i++)
changes[i] = (Change)cs[i];
}
}