1 package fi.vtt.simantics.procore.internal;
\r
3 import java.util.ArrayList;
\r
4 import java.util.Collection;
\r
5 import java.util.Collections;
\r
6 import java.util.List;
\r
8 import org.simantics.db.Operation;
\r
9 import org.simantics.db.service.ExternalOperation;
\r
11 public class OperationImpl implements Operation {
\r
12 private final long id;
\r
13 private final long csid;
\r
14 private Operation combined;
\r
15 private final List<ExternalOperation> externals;
\r
16 OperationImpl(long id, long csid) {
\r
17 this(id, csid, null);
\r
19 OperationImpl(long id, long csid, List<ExternalOperation> externals) {
\r
22 this.combined = null;
\r
23 this.externals = externals.isEmpty() ? null : externals;
\r
26 public String toString() {
\r
27 return "Operation id=" + id + " cs=" + csid + ".";
\r
30 public long getId() {
\r
35 public long getCSId() {
\r
40 public void combine(Operation operation) {
\r
41 combined = operation;
\r
45 public List<Operation> getOperations() {
\r
47 if(combined == null) return Collections.<Operation>singletonList(this);
\r
49 ArrayList<Operation> result = new ArrayList<Operation>();
\r
50 OperationImpl current = this;
\r
51 while(current != null) {
\r
52 result.add(current);
\r
53 current = (OperationImpl)(current.combined);
\r
56 Collections.reverse(result);
\r
63 public Collection<ExternalOperation> getExternalOperations() {
\r
64 if(externals == null)
\r
65 return Collections.emptyList();
\r