1 package org.simantics.db;
\r
4 import java.nio.ByteBuffer;
\r
5 import java.nio.file.Path;
\r
6 import java.util.Properties;
\r
8 import org.simantics.db.exception.DatabaseException;
\r
9 import org.simantics.db.exception.SDBException;
\r
10 import org.simantics.db.service.ClusterUID;
\r
12 public interface Database {
\r
13 static public enum Status {
\r
14 NoDatabase { @Override public String getString() { return "NoDatabase"; }},
\r
15 NotRunning { @Override public String getString() { return "NotRunning"; }},
\r
16 Standalone { @Override public String getString() { return "Standalone"; }},
\r
17 Local { @Override public String getString() { return "Local"; }},
\r
18 Remote { @Override public String getString() { return "Remote";}};
\r
19 public abstract String getString();
\r
21 public String toString() {
\r
24 public String message = "";
\r
26 public DatabaseUserAgent getUserAgent();
\r
27 public void setUserAgent(DatabaseUserAgent dbUserAgent);
\r
28 public Status getStatus();
\r
30 public File getFolder();
\r
31 public boolean isFolderOk();
\r
32 public boolean isFolderOk(File aFolder);
\r
33 public boolean isFolderEmpty();
\r
34 public boolean isFolderEmpty(File aFolder);
\r
35 public void initFolder(Properties properties) throws SDBException;
\r
36 public void deleteFiles() throws SDBException;
\r
38 public void start() throws SDBException;
\r
39 public boolean isRunning() throws SDBException;
\r
40 public boolean tryToStop() throws SDBException;
\r
42 public void connect() throws SDBException;
\r
43 public boolean isConnected() throws SDBException;
\r
44 public String execute(String command) throws SDBException;
\r
45 public void disconnect() throws SDBException;
\r
47 public void clone(File to, int revision, boolean saveHistory) throws SDBException;
\r
48 public Path createFromChangeSets(int revision) throws SDBException;
\r
49 public void deleteGuard() throws SDBException;
\r
50 public Path dumpChangeSets() throws SDBException;
\r
51 public void purgeDatabase() throws SDBException;
\r
52 public long serverGetTailChangeSetId() throws SDBException;
\r
54 public interface Session {
\r
55 public Database getDatabase(); // Convenience method.
\r
56 public void close() throws SDBException;
\r
57 public void open() throws SDBException;
\r
58 public boolean isClosed() throws SDBException;
\r
59 public interface ChangeSetData {
\r
60 public boolean isOk();
\r
62 public interface ChangeSetIds {
\r
63 public long getFirstChangeSetId();
\r
64 public int getCount();
\r
66 public interface Cluster {
\r
67 public int getInflateSize();
\r
68 public ByteBuffer getDeflated();
\r
70 public interface ClusterChanges {
\r
71 public long getHeadChangeSetId();
\r
72 public int[] getResourceIndex();
\r
73 public int[] getPredicateIndex();
\r
74 public long[] getPredicateFirst();
\r
75 public long[] getPredicateSecond();
\r
76 public int[] getValueIndex();
\r
78 public interface ClusterIds {
\r
79 public int getStatus();
\r
80 public long[] getFirst();
\r
81 public long[] getSecond();
\r
83 public interface Information {
\r
84 public String getServerId();
\r
85 public String getProtocolId();
\r
86 public String getDatabaseId();
\r
87 public long getFirstChangeSetId();
\r
89 public interface Refresh {
\r
90 public long getHeadChangeSetId();
\r
91 public long[] getFirst();
\r
92 public long[] getSecond();
\r
94 public interface ResourceSegment {
\r
95 public byte[] getClusterId();
\r
96 public int getResourceIndex();
\r
97 public long getValueSize(); // Size of whole value.
\r
98 public byte[] getSegment(); // Bytes of asked segment.
\r
99 public long getOffset(); // Segment offset.
\r
101 public interface Transaction {
\r
102 public long getHeadChangeSetId();
\r
103 public long getTransactionId();
\r
105 interface OnChangeSetUpdate {
\r
106 public void onChangeSetUpdate(ChangeSetUpdate changeSetUpdate) throws SDBException;
\r
108 public void acceptCommit(long transactionId, long changeSetId, byte[] metadata) throws SDBException;
\r
109 public long cancelCommit(long transactionId, long changeSetId, byte[] metadata, OnChangeSetUpdate onChangeSetUpdate) throws SDBException;
\r
110 public Transaction askReadTransaction() throws SDBException;
\r
111 public Transaction askWriteTransaction(long transactionId) throws SDBException;
\r
112 public long endTransaction(long transactionId) throws SDBException; // Return head change set id.
\r
113 public String execute(String command) throws SDBException;
\r
114 public byte[] getChangeSetMetadata(long changeSetId) throws SDBException;
\r
115 public ChangeSetData getChangeSetData(long minChangeSetId, long maxChangeSetId, OnChangeSetUpdate onChangeSetupate) throws SDBException;
\r
116 public ChangeSetIds getChangeSetIds() throws SDBException;
\r
117 public Cluster getCluster(byte[] clusterId) throws SDBException;
\r
118 public ClusterChanges getClusterChanges(long changeSetId, byte[] clusterId) throws SDBException;
\r
119 public ClusterIds getClusterIds() throws SDBException;
\r
120 public Information getInformation() throws SDBException;
\r
121 public Refresh getRefresh(long changeSetId) throws SDBException;
\r
122 public ResourceSegment getResourceSegment(byte[] clusterUID, int resourceIndex, long offset, short size) throws SDBException;
\r
123 public long reserveIds(int count) throws SDBException;
\r
124 public void updateCluster(byte[] operations) throws SDBException;
\r
125 public interface ChangeSetUpdate {
\r
126 public long getChangeSetId();
\r
127 public int getChangeSetIndex();
\r
128 public int getNumberOfClusterChangeSets();
\r
129 public int getIndexOfClusterChangeSet();
\r
130 public byte[] getClusterId();
\r
131 public boolean getNewCluster();
\r
132 public byte[] getData();
\r
134 public boolean undo(long[] changeSetIds, OnChangeSetUpdate onChangeSetUpdate) throws SDBException;
\r
136 public <T> T clone(ClusterUID clusterUID, ClusterCreator clusterCreator) throws DatabaseException;
\r
137 public boolean refreshEnabled();
\r
138 public boolean rolledback();
\r
140 public Session newSession(ServiceLocator locator) throws SDBException;
\r
141 interface Journal {
\r
142 public class Line {
\r
143 public boolean status;
\r
144 public String request;
\r
145 public String comment;
\r
147 public boolean canRead();
\r
148 public int count();
\r
149 public int read(int index, Line line) throws SDBException;
\r
151 public Journal getJournal() throws SDBException;
\r
152 public String getCompression();
\r