import org.simantics.db.Resource;
import org.simantics.db.common.utils.NameUtils;
import org.simantics.db.exception.DatabaseException;
-import org.simantics.db.exception.NoSingleResultException;
-import org.simantics.db.exception.ServiceException;
-import org.simantics.db.exception.ValidationException;
import org.simantics.layer0.Layer0;
-public abstract class UpdateNode {
+public class UpdateNode {
public enum Status {EXIST,DELETED,NEW,CONTAINS};
private Status status;
private UpdateOp op;
private Resource r;
+ private String label;
private Collection<UpdateNode> children = new ArrayList<UpdateNode>();
* @param status
* @param changes
*/
- public UpdateNode(Status status, UpdateOp op) {
+ public UpdateNode(ReadGraph g, Status status, UpdateOp op) throws DatabaseException{
this.status = status;
this.op = op;
this.r = op.getResource();
+ this.label = getLabel(g, r);
}
- public UpdateNode(Status status, Resource r) {
+ public UpdateNode(ReadGraph g, Status status, Resource r) throws DatabaseException {
this.status = status;
this.op = null;
this.r = r;
+ this.label = getLabel(g, r);
}
public Resource getResource() {
public void addChild(UpdateNode node) {
children.add(node);
+ if (op != null && node.op != null) {
+ if (!op.getSubOps().contains(node.op)) {
+ op.addSubOp(node.op);
+ node.op.addParentOp(op);
+ }
+ }
}
- public abstract ImageDescriptor getImage(ReadGraph graph) throws DatabaseException;
+ public ImageDescriptor getImage(ReadGraph graph) throws DatabaseException {
+ return null;
+ }
- public String getLabel(ReadGraph graph) throws DatabaseException {
- return getLabel(graph,r);
+ public String getLabel() {
+ return label;
+ }
+
+ @Override
+ public String toString() {
+ return label;
}
- protected String getLabel(ReadGraph graph, Resource r) throws ValidationException, ServiceException, NoSingleResultException {
+ protected String getLabel(ReadGraph graph, Resource r) throws DatabaseException {
String label = NameUtils.getSafeLabel(graph, r);
if (label.length() == 0)
label = NameUtils.getSafeName(graph, r);