From 694f09fb0aa13a21ad880a86270fcd1df0e4d183 Mon Sep 17 00:00:00 2001 From: David Huynh Date: Sun, 7 Mar 2010 22:37:26 +0000 Subject: [PATCH] Major refactoring: everything is now saved to disk using our own formats, mostly json-based, some inside zip files. git-svn-id: http://google-refine.googlecode.com/svn/trunk@226 7d457c2a-affb-35e4-300a-418c747d4874 --- .../java/com/metaweb/gridworks/Gridworks.java | 3 +- .../com/metaweb/gridworks/ProjectManager.java | 227 +-- .../metaweb/gridworks/ProjectMetadata.java | 105 +- .../commands/edit/ApplyOperationsCommand.java | 26 +- .../commands/edit/DeleteProjectCommand.java | 6 +- .../com/metaweb/gridworks/data/Model.java | 1331 ----------------- .../metaweb/gridworks/history/History.java | 59 +- .../gridworks/history/HistoryEntry.java | 68 +- .../gridworks/model/AbstractOperation.java | 5 +- .../com/metaweb/gridworks/model/Cell.java | 4 +- .../com/metaweb/gridworks/model/Column.java | 5 +- .../metaweb/gridworks/model/ColumnGroup.java | 44 +- .../metaweb/gridworks/model/ColumnModel.java | 69 +- .../com/metaweb/gridworks/model/Project.java | 187 ++- .../com/metaweb/gridworks/model/Recon.java | 5 +- .../gridworks/model/ReconCandidate.java | 5 +- .../metaweb/gridworks/model/ReconStats.java | 5 +- .../java/com/metaweb/gridworks/model/Row.java | 5 +- .../gridworks/model/changes/CellAtRow.java | 2 +- .../model/recon/GuidBasedReconConfig.java | 2 - .../model/recon/HeuristicReconConfig.java | 11 +- .../model/recon/IdBasedReconConfig.java | 2 - .../model/recon/KeyBasedReconConfig.java | 2 - .../gridworks/model/recon/ReconConfig.java | 5 +- .../model/recon/StrictReconConfig.java | 2 - .../operations/ColumnAdditionOperation.java | 2 - .../operations/ColumnRemovalOperation.java | 2 - .../EngineDependentMassCellOperation.java | 2 - .../operations/EngineDependentOperation.java | 2 - .../operations/MassEditOperation.java | 6 +- .../MultiValuedCellJoinOperation.java | 4 +- .../MultiValuedCellSplitOperation.java | 6 +- .../operations/OperationRegistry.java | 21 + .../ReconDiscardJudgmentsOperation.java | 2 - .../ReconJudgeSimilarCellsOperation.java | 8 +- .../ReconMarkNewTopicsOperation.java | 2 - .../ReconMatchBestCandidatesOperation.java | 2 - .../ReconMatchSpecificTopicOperation.java | 2 - .../gridworks/operations/ReconOperation.java | 2 - .../operations/RowStarOperation.java | 2 - .../operations/SaveProtographOperation.java | 2 - .../operations/TextTransformOperation.java | 2 - .../gridworks/protograph/AnonymousNode.java | 2 - .../gridworks/protograph/CellKeyNode.java | 2 - .../gridworks/protograph/CellNode.java | 2 - .../gridworks/protograph/CellTopicNode.java | 4 +- .../gridworks/protograph/CellValueNode.java | 2 - .../protograph/FreebaseProperty.java | 2 - .../gridworks/protograph/FreebaseTopic.java | 5 +- .../protograph/FreebaseTopicNode.java | 2 - .../gridworks/protograph/FreebaseType.java | 2 - .../metaweb/gridworks/protograph/Link.java | 5 +- .../metaweb/gridworks/protograph/Node.java | 4 +- .../gridworks/protograph/Protograph.java | 22 +- .../gridworks/protograph/ValueNode.java | 2 - src/main/proto/gridworks.proto | 23 - 56 files changed, 605 insertions(+), 1728 deletions(-) delete mode 100644 src/main/java/com/metaweb/gridworks/data/Model.java delete mode 100644 src/main/proto/gridworks.proto diff --git a/src/main/java/com/metaweb/gridworks/Gridworks.java b/src/main/java/com/metaweb/gridworks/Gridworks.java index 60daa2607..549a0878f 100644 --- a/src/main/java/com/metaweb/gridworks/Gridworks.java +++ b/src/main/java/com/metaweb/gridworks/Gridworks.java @@ -27,7 +27,8 @@ import com.metaweb.util.signal.SignalHandler; import com.metaweb.util.threads.ThreadPoolExecutorAdapter; public class Gridworks extends Server { - + final static public String s_version = "1.0"; + private static Logger root = Logger.getRootLogger(); private static Logger logger = Logger.getLogger("com.metaweb.gridworks"); diff --git a/src/main/java/com/metaweb/gridworks/ProjectManager.java b/src/main/java/com/metaweb/gridworks/ProjectManager.java index 4b8315cbf..c790aadd8 100644 --- a/src/main/java/com/metaweb/gridworks/ProjectManager.java +++ b/src/main/java/com/metaweb/gridworks/ProjectManager.java @@ -1,19 +1,13 @@ package com.metaweb.gridworks; import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.Serializable; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.Properties; import org.json.JSONArray; import org.json.JSONException; @@ -26,12 +20,11 @@ import com.codeberry.jdatapath.JDataPathSystem; import com.metaweb.gridworks.model.Project; import com.metaweb.gridworks.util.JSONUtilities; -public class ProjectManager implements Serializable { +public class ProjectManager { - private static final long serialVersionUID = -2967415873336723962L; private static final int s_expressionHistoryMax = 100; // last n expressions used across all projects - protected File _workspaceDir; + protected File _workspaceDir; protected Map _projectsMetadata; protected List _expressions; @@ -44,12 +37,7 @@ public class ProjectManager implements Serializable { File dir = getProjectLocation(); Gridworks.log("Using data directory: " + dir.getAbsolutePath()); - if (dir.exists()) { - singleton = load(dir); - } - if (singleton == null) { - singleton = new ProjectManager(dir); - } + singleton = new ProjectManager(dir); } } @@ -98,20 +86,26 @@ public class ProjectManager implements Serializable { _projectsMetadata = new HashMap(); _expressions = new LinkedList(); _projects = new HashMap(); + + load(); } public File getWorkspaceDir() { return _workspaceDir; } - public File getProjectDir(long projectID) { - File dir = new File(_workspaceDir, projectID + ".project"); + static public File getProjectDir(File workspaceDir, long projectID) { + File dir = new File(workspaceDir, projectID + ".project"); if (!dir.exists()) { dir.mkdir(); } return dir; } + public File getProjectDir(long projectID) { + return getProjectDir(_workspaceDir, projectID); + } + public void registerProject(Project project, ProjectMetadata projectMetadata) { _projects.put(project.id, project); _projectsMetadata.put(project.id, projectMetadata); @@ -129,34 +123,7 @@ public class ProjectManager implements Serializable { if (_projects.containsKey(id)) { return _projects.get(id); } else { - File file = new File(getProjectDir(id), "raw-data"); - - Project project = null; - FileInputStream fis = null; - ObjectInputStream in = null; - try { - fis = new FileInputStream(file); - in = new ObjectInputStream(fis); - - project = (Project) in.readObject(); - } catch(IOException e) { - e.printStackTrace(); - } catch(ClassNotFoundException e) { - e.printStackTrace(); - } finally { - if (fis != null) { - try { - fis.close(); - } catch (Exception e) { - } - } - if (in != null) { - try { - in.close(); - } catch (Exception e) { - } - } - } + Project project = Project.load(getProjectDir(id), id); _projects.put(id, project); @@ -177,20 +144,20 @@ public class ProjectManager implements Serializable { } public void save() { - Gridworks.log("Saving project metadata ..."); + Gridworks.log("Saving all projects' metadata ..."); - File tempFile = new File(_workspaceDir, "projects.json.temp"); + File tempFile = new File(_workspaceDir, "workspace.temp.json"); try { saveToFile(tempFile); } catch (Exception e) { e.printStackTrace(); - Gridworks.log("Failed to save project"); + Gridworks.log("Failed to save projects' metadata."); return; } - File file = new File(_workspaceDir, "projects.json"); - File oldFile = new File(_workspaceDir, "projects.json.old"); + File file = new File(_workspaceDir, "workspace.json"); + File oldFile = new File(_workspaceDir, "workspace.old.json"); if (file.exists()) { file.renameTo(oldFile); @@ -201,25 +168,25 @@ public class ProjectManager implements Serializable { oldFile.delete(); } - Gridworks.log("Project metadata saved."); + Gridworks.log("All projects' metadata saved."); } - public void saveToFile(File file) throws IOException, JSONException { + protected void saveToFile(File file) throws IOException, JSONException { FileWriter writer = new FileWriter(file); try { JSONWriter jsonWriter = new JSONWriter(writer); - Properties options = new Properties(); - options.setProperty("mode", "save"); - jsonWriter.object(); - jsonWriter.key("projectMetadata"); + jsonWriter.key("projectIDs"); jsonWriter.array(); for (Long id : _projectsMetadata.keySet()) { - jsonWriter.object(); - jsonWriter.key("id"); jsonWriter.value(id); - jsonWriter.key("metadata"); _projectsMetadata.get(id).write(jsonWriter, options); - jsonWriter.endObject(); - writer.write('\n'); + jsonWriter.value(id); + + ProjectMetadata metadata = _projectsMetadata.get(id); + try { + metadata.save(getProjectDir(id)); + } catch (Exception e) { + e.printStackTrace(); + } } jsonWriter.endArray(); writer.write('\n'); @@ -231,106 +198,78 @@ public class ProjectManager implements Serializable { } } - static protected ProjectManager load(File dir) { - try { - return loadFromFile(new File(dir, "projects.json")); - } catch (Exception e) { + public void saveAllProjects() { + Gridworks.log("Saving all projects ..."); + for (Project project : _projects.values()) { + try { + project.save(); + } catch (Exception e) { + e.printStackTrace(); + } } - - try { - return loadFromFile(new File(dir, "projects.json.temp")); - } catch (Exception e) { - } - - try { - return loadFromFile(new File(dir, "projects.json.old")); - } catch (Exception e) { - } - - return null; } - static protected ProjectManager loadFromFile(File file) throws IOException, JSONException { + public void deleteProject(Project project) { + if (_projectsMetadata.containsKey(project.id)) { + _projectsMetadata.remove(project.id); + } + if (_projects.containsKey(project.id)) { + _projects.remove(project.id); + } + + File dir = getProjectDir(project.id); + if (dir.exists()) { + dir.delete(); + } + + save(); + } + + protected void load() { + try { + loadFromFile(new File(_workspaceDir, "workspace.json")); + return; + } catch (Exception e) { + } + + try { + loadFromFile(new File(_workspaceDir, "workspace.temp.json")); + return; + } catch (Exception e) { + } + + try { + loadFromFile(new File(_workspaceDir, "workspace.old.json")); + return; + } catch (Exception e) { + } + } + + protected void loadFromFile(File file) throws IOException, JSONException { Gridworks.log("Loading project metadata from " + file.getAbsolutePath()); + _projectsMetadata.clear(); + _expressions.clear(); + FileReader reader = new FileReader(file); try { JSONTokener tokener = new JSONTokener(reader); - ProjectManager pm = new ProjectManager(file.getParentFile()); - JSONObject obj = (JSONObject) tokener.nextValue(); - JSONArray a = obj.getJSONArray("projectMetadata"); + JSONArray a = obj.getJSONArray("projectIDs"); int count = a.length(); for (int i = 0; i < count; i++) { - JSONObject obj2 = a.getJSONObject(i); + long id = a.getLong(i); - long id = obj2.getLong("id"); - pm._projectsMetadata.put(id, ProjectMetadata.loadFromJSON(obj2.getJSONObject("metadata"))); + File projectDir = getProjectDir(id); + ProjectMetadata metadata = ProjectMetadata.load(projectDir); + + _projectsMetadata.put(id, metadata); } - JSONUtilities.getStringList(obj, "expressions", pm._expressions); - - return pm; + JSONUtilities.getStringList(obj, "expressions", _expressions); } finally { reader.close(); } } - - public void saveAllProjects() { - Gridworks.log("Saving all projects ..."); - for (Project project : _projects.values()) { - try { - saveProject(project); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - protected void saveProject(Project project) { - File file = new File(getProjectDir(project.id), "raw-data"); - - FileOutputStream fos = null; - ObjectOutputStream out = null; - try { - fos = new FileOutputStream(file); - out = new ObjectOutputStream(fos); - out.writeObject(project); - out.flush(); - } catch(IOException e) { - e.printStackTrace(); - } finally { - if (fos != null) { - try { - fos.close(); - } catch (Exception e) { - } - } - if (out != null) { - try { - out.close(); - } catch (Exception e) { - } - } - } - } - - public boolean deleteProject(Project project) { - if (_projectsMetadata.containsKey(project.id)) { - _projects.remove(project.id); - _projectsMetadata.remove(project.id); - - File file = new File(getProjectDir(project.id), "raw-data"); - if (file.exists()) { - file.delete(); - } - - save(); - - return true; - } else { - return false; - } - } } diff --git a/src/main/java/com/metaweb/gridworks/ProjectMetadata.java b/src/main/java/com/metaweb/gridworks/ProjectMetadata.java index 6403186ed..44a8a0fb6 100644 --- a/src/main/java/com/metaweb/gridworks/ProjectMetadata.java +++ b/src/main/java/com/metaweb/gridworks/ProjectMetadata.java @@ -1,5 +1,10 @@ package com.metaweb.gridworks; +import java.io.File; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.OutputStreamWriter; +import java.io.Writer; import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -7,6 +12,7 @@ import java.util.Properties; import org.json.JSONException; import org.json.JSONObject; +import org.json.JSONTokener; import org.json.JSONWriter; import com.metaweb.gridworks.util.JSONUtilities; @@ -24,21 +30,6 @@ public class ProjectMetadata implements Jsonizable { private int _encodingConfidence; private List _expressions = new LinkedList(); - static public ProjectMetadata loadFromJSON(JSONObject obj) { - ProjectMetadata pm = new ProjectMetadata(JSONUtilities.getDate(obj, "modified", new Date())); - - pm._modified = JSONUtilities.getDate(obj, "modified", new Date()); - pm._name = JSONUtilities.getString(obj, "name", ""); - pm._password = JSONUtilities.getString(obj, "password", ""); - - pm._encoding = JSONUtilities.getString(obj, "encoding", ""); - pm._encodingConfidence = JSONUtilities.getInt(obj, "encodingConfidence", 0); - - JSONUtilities.getStringList(obj, "expressions", pm._expressions); - - return pm; - } - protected ProjectMetadata(Date date) { _created = date; } @@ -66,6 +57,90 @@ public class ProjectMetadata implements Jsonizable { writer.endObject(); } + public void save(File dir) throws Exception { + File tempFile = new File(dir, "metadata.temp.json"); + try { + saveToFile(tempFile); + } catch (Exception e) { + e.printStackTrace(); + + Gridworks.log("Failed to save project metadata"); + return; + } + + File file = new File(dir, "metadata.json"); + File oldFile = new File(dir, "metadata.old.json"); + + if (file.exists()) { + file.renameTo(oldFile); + } + + tempFile.renameTo(file); + if (oldFile.exists()) { + oldFile.delete(); + } + } + + protected void saveToFile(File file) throws Exception { + Writer writer = new OutputStreamWriter(new FileOutputStream(file)); + try { + Properties options = new Properties(); + options.setProperty("mode", "save"); + + JSONWriter jsonWriter = new JSONWriter(writer); + + write(jsonWriter, options); + } finally { + writer.close(); + } + } + + static public ProjectMetadata load(File dir) { + try { + return loadFromFile(new File(dir, "metadata.json")); + } catch (Exception e) { + } + + try { + return loadFromFile(new File(dir, "metadata.temp.json")); + } catch (Exception e) { + } + + try { + return loadFromFile(new File(dir, "metadata.old.json")); + } catch (Exception e) { + } + + return null; + } + + static protected ProjectMetadata loadFromFile(File file) throws Exception { + FileReader reader = new FileReader(file); + try { + JSONTokener tokener = new JSONTokener(reader); + JSONObject obj = (JSONObject) tokener.nextValue(); + + return loadFromJSON(obj); + } finally { + reader.close(); + } + } + + static protected ProjectMetadata loadFromJSON(JSONObject obj) { + ProjectMetadata pm = new ProjectMetadata(JSONUtilities.getDate(obj, "modified", new Date())); + + pm._modified = JSONUtilities.getDate(obj, "modified", new Date()); + pm._name = JSONUtilities.getString(obj, "name", ""); + pm._password = JSONUtilities.getString(obj, "password", ""); + + pm._encoding = JSONUtilities.getString(obj, "encoding", ""); + pm._encodingConfidence = JSONUtilities.getInt(obj, "encodingConfidence", 0); + + JSONUtilities.getStringList(obj, "expressions", pm._expressions); + + return pm; + } + public Date getCreated() { return _created; } diff --git a/src/main/java/com/metaweb/gridworks/commands/edit/ApplyOperationsCommand.java b/src/main/java/com/metaweb/gridworks/commands/edit/ApplyOperationsCommand.java index fc75b66e7..d6a3eea2b 100644 --- a/src/main/java/com/metaweb/gridworks/commands/edit/ApplyOperationsCommand.java +++ b/src/main/java/com/metaweb/gridworks/commands/edit/ApplyOperationsCommand.java @@ -1,7 +1,6 @@ package com.metaweb.gridworks.commands.edit; - import java.io.IOException; -import java.lang.reflect.Method; +import java.io.IOException; import java.util.Properties; import javax.servlet.ServletException; @@ -46,28 +45,15 @@ public class ApplyOperationsCommand extends Command { } protected void reconstructOperation(Project project, JSONObject obj) { - try { - String op = obj.getString("op"); - - Class klass = OperationRegistry.s_opNameToClass.get(op); - if (klass == null) { - return; - } - - Method reconstruct = klass.getMethod("reconstruct", Project.class, JSONObject.class); - if (reconstruct == null) { - return; - } - - AbstractOperation operation = (AbstractOperation) reconstruct.invoke(null, project, obj); - if (operation != null) { + AbstractOperation operation = OperationRegistry.reconstruct(project, obj); + if (operation != null) { + try { Process process = operation.createProcess(project, new Properties()); project.processManager.queueProcess(process); + } catch (Exception e) { + e.printStackTrace(); } - } catch (Exception e) { - e.printStackTrace(); } - } } diff --git a/src/main/java/com/metaweb/gridworks/commands/edit/DeleteProjectCommand.java b/src/main/java/com/metaweb/gridworks/commands/edit/DeleteProjectCommand.java index 045a8254c..60bf0aeb6 100644 --- a/src/main/java/com/metaweb/gridworks/commands/edit/DeleteProjectCommand.java +++ b/src/main/java/com/metaweb/gridworks/commands/edit/DeleteProjectCommand.java @@ -15,9 +15,9 @@ public class DeleteProjectCommand extends Command { throws ServletException, IOException { try { - boolean result = ProjectManager.singleton.deleteProject(getProject(request)); - - respond(response, "{ \"code\" : " + (result ? "\"ok\"" : "\"error\"") + " }"); + ProjectManager.singleton.deleteProject(getProject(request)); + + respond(response, "{ \"code\" : \"ok\" }"); } catch (Exception e) { respondException(response, e); diff --git a/src/main/java/com/metaweb/gridworks/data/Model.java b/src/main/java/com/metaweb/gridworks/data/Model.java deleted file mode 100644 index 84a6c92c3..000000000 --- a/src/main/java/com/metaweb/gridworks/data/Model.java +++ /dev/null @@ -1,1331 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: gridworks.proto - -package com.metaweb.gridworks.data; - -public final class Model { - private Model() {} - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistry registry) { - } - public static final class Expression extends - com.google.protobuf.GeneratedMessage { - // Use Expression.newBuilder() to construct. - private Expression() { - initFields(); - } - private Expression(boolean noInit) {} - - private static final Expression defaultInstance; - public static Expression getDefaultInstance() { - return defaultInstance; - } - - public Expression getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.metaweb.gridworks.data.Model.internal_static_gridworks_Expression_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.metaweb.gridworks.data.Model.internal_static_gridworks_Expression_fieldAccessorTable; - } - - // required string value = 1; - public static final int VALUE_FIELD_NUMBER = 1; - private boolean hasValue; - private java.lang.String value_ = ""; - public boolean hasValue() { return hasValue; } - public java.lang.String getValue() { return value_; } - - private void initFields() { - } - public final boolean isInitialized() { - if (!hasValue) return false; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasValue()) { - output.writeString(1, getValue()); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasValue()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getValue()); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static com.metaweb.gridworks.data.Model.Expression parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Expression parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Expression parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Expression parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Expression parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Expression parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Expression parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.metaweb.gridworks.data.Model.Expression parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.metaweb.gridworks.data.Model.Expression parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Expression parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(com.metaweb.gridworks.data.Model.Expression prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private com.metaweb.gridworks.data.Model.Expression result; - - // Construct using com.metaweb.gridworks.data.Model.Expression.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new com.metaweb.gridworks.data.Model.Expression(); - return builder; - } - - protected com.metaweb.gridworks.data.Model.Expression internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new com.metaweb.gridworks.data.Model.Expression(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return com.metaweb.gridworks.data.Model.Expression.getDescriptor(); - } - - public com.metaweb.gridworks.data.Model.Expression getDefaultInstanceForType() { - return com.metaweb.gridworks.data.Model.Expression.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public com.metaweb.gridworks.data.Model.Expression build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private com.metaweb.gridworks.data.Model.Expression buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public com.metaweb.gridworks.data.Model.Expression buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - com.metaweb.gridworks.data.Model.Expression returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.metaweb.gridworks.data.Model.Expression) { - return mergeFrom((com.metaweb.gridworks.data.Model.Expression)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(com.metaweb.gridworks.data.Model.Expression other) { - if (other == com.metaweb.gridworks.data.Model.Expression.getDefaultInstance()) return this; - if (other.hasValue()) { - setValue(other.getValue()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setValue(input.readString()); - break; - } - } - } - } - - - // required string value = 1; - public boolean hasValue() { - return result.hasValue(); - } - public java.lang.String getValue() { - return result.getValue(); - } - public Builder setValue(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasValue = true; - result.value_ = value; - return this; - } - public Builder clearValue() { - result.hasValue = false; - result.value_ = getDefaultInstance().getValue(); - return this; - } - - // @@protoc_insertion_point(builder_scope:gridworks.Expression) - } - - static { - defaultInstance = new Expression(true); - com.metaweb.gridworks.data.Model.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:gridworks.Expression) - } - - public static final class Project extends - com.google.protobuf.GeneratedMessage { - // Use Project.newBuilder() to construct. - private Project() { - initFields(); - } - private Project(boolean noInit) {} - - private static final Project defaultInstance; - public static Project getDefaultInstance() { - return defaultInstance; - } - - public Project getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.metaweb.gridworks.data.Model.internal_static_gridworks_Project_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.metaweb.gridworks.data.Model.internal_static_gridworks_Project_fieldAccessorTable; - } - - // required string name = 1; - public static final int NAME_FIELD_NUMBER = 1; - private boolean hasName; - private java.lang.String name_ = ""; - public boolean hasName() { return hasName; } - public java.lang.String getName() { return name_; } - - // required int64 created = 2; - public static final int CREATED_FIELD_NUMBER = 2; - private boolean hasCreated; - private long created_ = 0L; - public boolean hasCreated() { return hasCreated; } - public long getCreated() { return created_; } - - // required int64 modified = 3; - public static final int MODIFIED_FIELD_NUMBER = 3; - private boolean hasModified; - private long modified_ = 0L; - public boolean hasModified() { return hasModified; } - public long getModified() { return modified_; } - - // required string encoding = 4; - public static final int ENCODING_FIELD_NUMBER = 4; - private boolean hasEncoding; - private java.lang.String encoding_ = ""; - public boolean hasEncoding() { return hasEncoding; } - public java.lang.String getEncoding() { return encoding_; } - - // optional int32 encoding_confidence = 5; - public static final int ENCODING_CONFIDENCE_FIELD_NUMBER = 5; - private boolean hasEncodingConfidence; - private int encodingConfidence_ = 0; - public boolean hasEncodingConfidence() { return hasEncodingConfidence; } - public int getEncodingConfidence() { return encodingConfidence_; } - - // optional string creator = 6; - public static final int CREATOR_FIELD_NUMBER = 6; - private boolean hasCreator; - private java.lang.String creator_ = ""; - public boolean hasCreator() { return hasCreator; } - public java.lang.String getCreator() { return creator_; } - - // optional string password = 7; - public static final int PASSWORD_FIELD_NUMBER = 7; - private boolean hasPassword; - private java.lang.String password_ = ""; - public boolean hasPassword() { return hasPassword; } - public java.lang.String getPassword() { return password_; } - - // repeated .gridworks.Expression expression = 8; - public static final int EXPRESSION_FIELD_NUMBER = 8; - private java.util.List expression_ = - java.util.Collections.emptyList(); - public java.util.List getExpressionList() { - return expression_; - } - public int getExpressionCount() { return expression_.size(); } - public com.metaweb.gridworks.data.Model.Expression getExpression(int index) { - return expression_.get(index); - } - - private void initFields() { - } - public final boolean isInitialized() { - if (!hasName) return false; - if (!hasCreated) return false; - if (!hasModified) return false; - if (!hasEncoding) return false; - for (com.metaweb.gridworks.data.Model.Expression element : getExpressionList()) { - if (!element.isInitialized()) return false; - } - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasName()) { - output.writeString(1, getName()); - } - if (hasCreated()) { - output.writeInt64(2, getCreated()); - } - if (hasModified()) { - output.writeInt64(3, getModified()); - } - if (hasEncoding()) { - output.writeString(4, getEncoding()); - } - if (hasEncodingConfidence()) { - output.writeInt32(5, getEncodingConfidence()); - } - if (hasCreator()) { - output.writeString(6, getCreator()); - } - if (hasPassword()) { - output.writeString(7, getPassword()); - } - for (com.metaweb.gridworks.data.Model.Expression element : getExpressionList()) { - output.writeMessage(8, element); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasName()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getName()); - } - if (hasCreated()) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(2, getCreated()); - } - if (hasModified()) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(3, getModified()); - } - if (hasEncoding()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(4, getEncoding()); - } - if (hasEncodingConfidence()) { - size += com.google.protobuf.CodedOutputStream - .computeInt32Size(5, getEncodingConfidence()); - } - if (hasCreator()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(6, getCreator()); - } - if (hasPassword()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(7, getPassword()); - } - for (com.metaweb.gridworks.data.Model.Expression element : getExpressionList()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(8, element); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static com.metaweb.gridworks.data.Model.Project parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Project parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Project parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Project parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Project parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Project parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Project parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.metaweb.gridworks.data.Model.Project parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.metaweb.gridworks.data.Model.Project parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.metaweb.gridworks.data.Model.Project parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(com.metaweb.gridworks.data.Model.Project prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private com.metaweb.gridworks.data.Model.Project result; - - // Construct using com.metaweb.gridworks.data.Model.Project.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new com.metaweb.gridworks.data.Model.Project(); - return builder; - } - - protected com.metaweb.gridworks.data.Model.Project internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new com.metaweb.gridworks.data.Model.Project(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return com.metaweb.gridworks.data.Model.Project.getDescriptor(); - } - - public com.metaweb.gridworks.data.Model.Project getDefaultInstanceForType() { - return com.metaweb.gridworks.data.Model.Project.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public com.metaweb.gridworks.data.Model.Project build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private com.metaweb.gridworks.data.Model.Project buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public com.metaweb.gridworks.data.Model.Project buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.expression_ != java.util.Collections.EMPTY_LIST) { - result.expression_ = - java.util.Collections.unmodifiableList(result.expression_); - } - com.metaweb.gridworks.data.Model.Project returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.metaweb.gridworks.data.Model.Project) { - return mergeFrom((com.metaweb.gridworks.data.Model.Project)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(com.metaweb.gridworks.data.Model.Project other) { - if (other == com.metaweb.gridworks.data.Model.Project.getDefaultInstance()) return this; - if (other.hasName()) { - setName(other.getName()); - } - if (other.hasCreated()) { - setCreated(other.getCreated()); - } - if (other.hasModified()) { - setModified(other.getModified()); - } - if (other.hasEncoding()) { - setEncoding(other.getEncoding()); - } - if (other.hasEncodingConfidence()) { - setEncodingConfidence(other.getEncodingConfidence()); - } - if (other.hasCreator()) { - setCreator(other.getCreator()); - } - if (other.hasPassword()) { - setPassword(other.getPassword()); - } - if (!other.expression_.isEmpty()) { - if (result.expression_.isEmpty()) { - result.expression_ = new java.util.ArrayList(); - } - result.expression_.addAll(other.expression_); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setName(input.readString()); - break; - } - case 16: { - setCreated(input.readInt64()); - break; - } - case 24: { - setModified(input.readInt64()); - break; - } - case 34: { - setEncoding(input.readString()); - break; - } - case 40: { - setEncodingConfidence(input.readInt32()); - break; - } - case 50: { - setCreator(input.readString()); - break; - } - case 58: { - setPassword(input.readString()); - break; - } - case 66: { - com.metaweb.gridworks.data.Model.Expression.Builder subBuilder = com.metaweb.gridworks.data.Model.Expression.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addExpression(subBuilder.buildPartial()); - break; - } - } - } - } - - - // required string name = 1; - public boolean hasName() { - return result.hasName(); - } - public java.lang.String getName() { - return result.getName(); - } - public Builder setName(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasName = true; - result.name_ = value; - return this; - } - public Builder clearName() { - result.hasName = false; - result.name_ = getDefaultInstance().getName(); - return this; - } - - // required int64 created = 2; - public boolean hasCreated() { - return result.hasCreated(); - } - public long getCreated() { - return result.getCreated(); - } - public Builder setCreated(long value) { - result.hasCreated = true; - result.created_ = value; - return this; - } - public Builder clearCreated() { - result.hasCreated = false; - result.created_ = 0L; - return this; - } - - // required int64 modified = 3; - public boolean hasModified() { - return result.hasModified(); - } - public long getModified() { - return result.getModified(); - } - public Builder setModified(long value) { - result.hasModified = true; - result.modified_ = value; - return this; - } - public Builder clearModified() { - result.hasModified = false; - result.modified_ = 0L; - return this; - } - - // required string encoding = 4; - public boolean hasEncoding() { - return result.hasEncoding(); - } - public java.lang.String getEncoding() { - return result.getEncoding(); - } - public Builder setEncoding(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasEncoding = true; - result.encoding_ = value; - return this; - } - public Builder clearEncoding() { - result.hasEncoding = false; - result.encoding_ = getDefaultInstance().getEncoding(); - return this; - } - - // optional int32 encoding_confidence = 5; - public boolean hasEncodingConfidence() { - return result.hasEncodingConfidence(); - } - public int getEncodingConfidence() { - return result.getEncodingConfidence(); - } - public Builder setEncodingConfidence(int value) { - result.hasEncodingConfidence = true; - result.encodingConfidence_ = value; - return this; - } - public Builder clearEncodingConfidence() { - result.hasEncodingConfidence = false; - result.encodingConfidence_ = 0; - return this; - } - - // optional string creator = 6; - public boolean hasCreator() { - return result.hasCreator(); - } - public java.lang.String getCreator() { - return result.getCreator(); - } - public Builder setCreator(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasCreator = true; - result.creator_ = value; - return this; - } - public Builder clearCreator() { - result.hasCreator = false; - result.creator_ = getDefaultInstance().getCreator(); - return this; - } - - // optional string password = 7; - public boolean hasPassword() { - return result.hasPassword(); - } - public java.lang.String getPassword() { - return result.getPassword(); - } - public Builder setPassword(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasPassword = true; - result.password_ = value; - return this; - } - public Builder clearPassword() { - result.hasPassword = false; - result.password_ = getDefaultInstance().getPassword(); - return this; - } - - // repeated .gridworks.Expression expression = 8; - public java.util.List getExpressionList() { - return java.util.Collections.unmodifiableList(result.expression_); - } - public int getExpressionCount() { - return result.getExpressionCount(); - } - public com.metaweb.gridworks.data.Model.Expression getExpression(int index) { - return result.getExpression(index); - } - public Builder setExpression(int index, com.metaweb.gridworks.data.Model.Expression value) { - if (value == null) { - throw new NullPointerException(); - } - result.expression_.set(index, value); - return this; - } - public Builder setExpression(int index, com.metaweb.gridworks.data.Model.Expression.Builder builderForValue) { - result.expression_.set(index, builderForValue.build()); - return this; - } - public Builder addExpression(com.metaweb.gridworks.data.Model.Expression value) { - if (value == null) { - throw new NullPointerException(); - } - if (result.expression_.isEmpty()) { - result.expression_ = new java.util.ArrayList(); - } - result.expression_.add(value); - return this; - } - public Builder addExpression(com.metaweb.gridworks.data.Model.Expression.Builder builderForValue) { - if (result.expression_.isEmpty()) { - result.expression_ = new java.util.ArrayList(); - } - result.expression_.add(builderForValue.build()); - return this; - } - public Builder addAllExpression( - java.lang.Iterable values) { - if (result.expression_.isEmpty()) { - result.expression_ = new java.util.ArrayList(); - } - super.addAll(values, result.expression_); - return this; - } - public Builder clearExpression() { - result.expression_ = java.util.Collections.emptyList(); - return this; - } - - // @@protoc_insertion_point(builder_scope:gridworks.Project) - } - - static { - defaultInstance = new Project(true); - com.metaweb.gridworks.data.Model.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:gridworks.Project) - } - - public static final class ProjectManager extends - com.google.protobuf.GeneratedMessage { - // Use ProjectManager.newBuilder() to construct. - private ProjectManager() { - initFields(); - } - private ProjectManager(boolean noInit) {} - - private static final ProjectManager defaultInstance; - public static ProjectManager getDefaultInstance() { - return defaultInstance; - } - - public ProjectManager getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.metaweb.gridworks.data.Model.internal_static_gridworks_ProjectManager_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.metaweb.gridworks.data.Model.internal_static_gridworks_ProjectManager_fieldAccessorTable; - } - - // repeated .gridworks.Project projects = 1; - public static final int PROJECTS_FIELD_NUMBER = 1; - private java.util.List projects_ = - java.util.Collections.emptyList(); - public java.util.List getProjectsList() { - return projects_; - } - public int getProjectsCount() { return projects_.size(); } - public com.metaweb.gridworks.data.Model.Project getProjects(int index) { - return projects_.get(index); - } - - private void initFields() { - } - public final boolean isInitialized() { - for (com.metaweb.gridworks.data.Model.Project element : getProjectsList()) { - if (!element.isInitialized()) return false; - } - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - for (com.metaweb.gridworks.data.Model.Project element : getProjectsList()) { - output.writeMessage(1, element); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - for (com.metaweb.gridworks.data.Model.Project element : getProjectsList()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, element); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static com.metaweb.gridworks.data.Model.ProjectManager parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.metaweb.gridworks.data.Model.ProjectManager parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.metaweb.gridworks.data.Model.ProjectManager parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.metaweb.gridworks.data.Model.ProjectManager parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.metaweb.gridworks.data.Model.ProjectManager parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.metaweb.gridworks.data.Model.ProjectManager parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static com.metaweb.gridworks.data.Model.ProjectManager parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.metaweb.gridworks.data.Model.ProjectManager parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.metaweb.gridworks.data.Model.ProjectManager parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.metaweb.gridworks.data.Model.ProjectManager parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(com.metaweb.gridworks.data.Model.ProjectManager prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private com.metaweb.gridworks.data.Model.ProjectManager result; - - // Construct using com.metaweb.gridworks.data.Model.ProjectManager.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new com.metaweb.gridworks.data.Model.ProjectManager(); - return builder; - } - - protected com.metaweb.gridworks.data.Model.ProjectManager internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new com.metaweb.gridworks.data.Model.ProjectManager(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return com.metaweb.gridworks.data.Model.ProjectManager.getDescriptor(); - } - - public com.metaweb.gridworks.data.Model.ProjectManager getDefaultInstanceForType() { - return com.metaweb.gridworks.data.Model.ProjectManager.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public com.metaweb.gridworks.data.Model.ProjectManager build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private com.metaweb.gridworks.data.Model.ProjectManager buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public com.metaweb.gridworks.data.Model.ProjectManager buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.projects_ != java.util.Collections.EMPTY_LIST) { - result.projects_ = - java.util.Collections.unmodifiableList(result.projects_); - } - com.metaweb.gridworks.data.Model.ProjectManager returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.metaweb.gridworks.data.Model.ProjectManager) { - return mergeFrom((com.metaweb.gridworks.data.Model.ProjectManager)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(com.metaweb.gridworks.data.Model.ProjectManager other) { - if (other == com.metaweb.gridworks.data.Model.ProjectManager.getDefaultInstance()) return this; - if (!other.projects_.isEmpty()) { - if (result.projects_.isEmpty()) { - result.projects_ = new java.util.ArrayList(); - } - result.projects_.addAll(other.projects_); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - com.metaweb.gridworks.data.Model.Project.Builder subBuilder = com.metaweb.gridworks.data.Model.Project.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addProjects(subBuilder.buildPartial()); - break; - } - } - } - } - - - // repeated .gridworks.Project projects = 1; - public java.util.List getProjectsList() { - return java.util.Collections.unmodifiableList(result.projects_); - } - public int getProjectsCount() { - return result.getProjectsCount(); - } - public com.metaweb.gridworks.data.Model.Project getProjects(int index) { - return result.getProjects(index); - } - public Builder setProjects(int index, com.metaweb.gridworks.data.Model.Project value) { - if (value == null) { - throw new NullPointerException(); - } - result.projects_.set(index, value); - return this; - } - public Builder setProjects(int index, com.metaweb.gridworks.data.Model.Project.Builder builderForValue) { - result.projects_.set(index, builderForValue.build()); - return this; - } - public Builder addProjects(com.metaweb.gridworks.data.Model.Project value) { - if (value == null) { - throw new NullPointerException(); - } - if (result.projects_.isEmpty()) { - result.projects_ = new java.util.ArrayList(); - } - result.projects_.add(value); - return this; - } - public Builder addProjects(com.metaweb.gridworks.data.Model.Project.Builder builderForValue) { - if (result.projects_.isEmpty()) { - result.projects_ = new java.util.ArrayList(); - } - result.projects_.add(builderForValue.build()); - return this; - } - public Builder addAllProjects( - java.lang.Iterable values) { - if (result.projects_.isEmpty()) { - result.projects_ = new java.util.ArrayList(); - } - super.addAll(values, result.projects_); - return this; - } - public Builder clearProjects() { - result.projects_ = java.util.Collections.emptyList(); - return this; - } - - // @@protoc_insertion_point(builder_scope:gridworks.ProjectManager) - } - - static { - defaultInstance = new ProjectManager(true); - com.metaweb.gridworks.data.Model.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:gridworks.ProjectManager) - } - - private static com.google.protobuf.Descriptors.Descriptor - internal_static_gridworks_Expression_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_gridworks_Expression_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_gridworks_Project_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_gridworks_Project_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_gridworks_ProjectManager_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_gridworks_ProjectManager_fieldAccessorTable; - - public static com.google.protobuf.Descriptors.FileDescriptor - getDescriptor() { - return descriptor; - } - private static com.google.protobuf.Descriptors.FileDescriptor - descriptor; - static { - java.lang.String[] descriptorData = { - "\n\017gridworks.proto\022\tgridworks\"\033\n\nExpressi" + - "on\022\r\n\005value\030\001 \002(\t\"\267\001\n\007Project\022\014\n\004name\030\001 " + - "\002(\t\022\017\n\007created\030\002 \002(\003\022\020\n\010modified\030\003 \002(\003\022\020" + - "\n\010encoding\030\004 \002(\t\022\033\n\023encoding_confidence\030" + - "\005 \001(\005\022\017\n\007creator\030\006 \001(\t\022\020\n\010password\030\007 \001(\t" + - "\022)\n\nexpression\030\010 \003(\0132\025.gridworks.Express" + - "ion\"6\n\016ProjectManager\022$\n\010projects\030\001 \003(\0132" + - "\022.gridworks.ProjectB#\n\032com.metaweb.gridw" + - "orks.dataB\005Model" - }; - com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = - new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { - public com.google.protobuf.ExtensionRegistry assignDescriptors( - com.google.protobuf.Descriptors.FileDescriptor root) { - descriptor = root; - internal_static_gridworks_Expression_descriptor = - getDescriptor().getMessageTypes().get(0); - internal_static_gridworks_Expression_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_gridworks_Expression_descriptor, - new java.lang.String[] { "Value", }, - com.metaweb.gridworks.data.Model.Expression.class, - com.metaweb.gridworks.data.Model.Expression.Builder.class); - internal_static_gridworks_Project_descriptor = - getDescriptor().getMessageTypes().get(1); - internal_static_gridworks_Project_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_gridworks_Project_descriptor, - new java.lang.String[] { "Name", "Created", "Modified", "Encoding", "EncodingConfidence", "Creator", "Password", "Expression", }, - com.metaweb.gridworks.data.Model.Project.class, - com.metaweb.gridworks.data.Model.Project.Builder.class); - internal_static_gridworks_ProjectManager_descriptor = - getDescriptor().getMessageTypes().get(2); - internal_static_gridworks_ProjectManager_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_gridworks_ProjectManager_descriptor, - new java.lang.String[] { "Projects", }, - com.metaweb.gridworks.data.Model.ProjectManager.class, - com.metaweb.gridworks.data.Model.ProjectManager.Builder.class); - return null; - } - }; - com.google.protobuf.Descriptors.FileDescriptor - .internalBuildGeneratedFileFrom(descriptorData, - new com.google.protobuf.Descriptors.FileDescriptor[] { - }, assigner); - } - - public static void internalForceInit() {} - - // @@protoc_insertion_point(outer_class_scope) -} diff --git a/src/main/java/com/metaweb/gridworks/history/History.java b/src/main/java/com/metaweb/gridworks/history/History.java index 7e1cc1cdc..6378d63e8 100644 --- a/src/main/java/com/metaweb/gridworks/history/History.java +++ b/src/main/java/com/metaweb/gridworks/history/History.java @@ -1,7 +1,8 @@ package com.metaweb.gridworks.history; +import java.io.IOException; import java.io.LineNumberReader; -import java.io.Serializable; +import java.io.Writer; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.LinkedList; @@ -11,14 +12,15 @@ import java.util.Properties; import org.json.JSONException; import org.json.JSONWriter; +import com.metaweb.gridworks.Gridworks; import com.metaweb.gridworks.Jsonizable; import com.metaweb.gridworks.ProjectManager; import com.metaweb.gridworks.model.Project; -public class History implements Serializable, Jsonizable { - private static final long serialVersionUID = -1529783362243627391L; - +public class History implements Jsonizable { static public Change readOneChange(LineNumberReader reader) throws Exception { + /* String version = */ reader.readLine(); + String className = reader.readLine(); Class klass = getChangeClass(className); @@ -27,12 +29,22 @@ public class History implements Serializable, Jsonizable { return (Change) load.invoke(null, reader); } + static public void writeOneChange(Writer writer, Change change) throws Exception { + writer.write(Gridworks.s_version); writer.write('\n'); + writer.write(change.getClass().getName()); writer.write('\n'); + + Properties options = new Properties(); + options.setProperty("mode", "save"); + + change.save(writer, options); + } + @SuppressWarnings("unchecked") static public Class getChangeClass(String className) throws ClassNotFoundException { return (Class) Class.forName(className); } - protected long _projectID; + protected long _projectID; protected List _pastEntries; protected List _futureEntries; @@ -152,4 +164,41 @@ public class History implements Serializable, Jsonizable { writer.endObject(); } + + public void save(Writer writer, Properties options) throws IOException { + writer.write("pastEntryCount="); writer.write(Integer.toString(_pastEntries.size())); writer.write('\n'); + for (HistoryEntry entry : _pastEntries) { + entry.save(writer, options); writer.write('\n'); + } + + writer.write("futureEntryCount="); writer.write(Integer.toString(_futureEntries.size())); writer.write('\n'); + for (HistoryEntry entry : _futureEntries) { + entry.save(writer, options); writer.write('\n'); + } + + writer.write("/e/\n"); + } + + public void load(Project project, LineNumberReader reader) throws Exception { + String line; + while ((line = reader.readLine()) != null && !"/e/".equals(line)) { + int equal = line.indexOf('='); + CharSequence field = line.subSequence(0, equal); + String value = line.substring(equal + 1); + + if ("pastEntryCount".equals(field)) { + int count = Integer.parseInt(value); + + for (int i = 0; i < count; i++) { + _pastEntries.add(HistoryEntry.load(project, reader.readLine())); + } + } else if ("futureEntryCount".equals(field)) { + int count = Integer.parseInt(value); + + for (int i = 0; i < count; i++) { + _futureEntries.add(HistoryEntry.load(project, reader.readLine())); + } + } + } + } } diff --git a/src/main/java/com/metaweb/gridworks/history/HistoryEntry.java b/src/main/java/com/metaweb/gridworks/history/HistoryEntry.java index b371fd4f7..1add70827 100644 --- a/src/main/java/com/metaweb/gridworks/history/HistoryEntry.java +++ b/src/main/java/com/metaweb/gridworks/history/HistoryEntry.java @@ -3,13 +3,11 @@ package com.metaweb.gridworks.history; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; -import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.io.OutputStreamWriter; import java.io.Serializable; import java.io.Writer; -import java.text.SimpleDateFormat; import java.util.Date; import java.util.Properties; import java.util.zip.ZipEntry; @@ -17,20 +15,23 @@ import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; import org.json.JSONException; +import org.json.JSONObject; import org.json.JSONWriter; import com.metaweb.gridworks.Jsonizable; import com.metaweb.gridworks.ProjectManager; import com.metaweb.gridworks.model.AbstractOperation; import com.metaweb.gridworks.model.Project; +import com.metaweb.gridworks.operations.OperationRegistry; +import com.metaweb.gridworks.util.ParsingUtilities; public class HistoryEntry implements Serializable, Jsonizable { private static final long serialVersionUID = 532766467813930262L; - final public long id; - final public long projectID; - final public String description; - final public AbstractOperation operation; + final public long id; + final public long projectID; + final public String description; + final public AbstractOperation operation; final public Date time; transient protected Change _change; @@ -45,15 +46,24 @@ public class HistoryEntry implements Serializable, Jsonizable { _change = change; } + protected HistoryEntry(long id, long projectID, String description, AbstractOperation operation, Date time) { + this.id = id; + this.projectID = projectID; + this.description = description; + this.operation = operation; + this.time = time; + } + public void write(JSONWriter writer, Properties options) throws JSONException { - SimpleDateFormat sdf = (SimpleDateFormat) SimpleDateFormat.getDateTimeInstance(); - writer.object(); writer.key("id"); writer.value(id); writer.key("description"); writer.value(description); - writer.key("time"); writer.value(sdf.format(time)); + writer.key("time"); writer.value(ParsingUtilities.dateToString(time)); + if ("save".equals(options.getProperty("mode")) && operation != null) { + writer.key("operation"); operation.write(writer, options); + } writer.endObject(); } @@ -70,7 +80,7 @@ public class HistoryEntry implements Serializable, Jsonizable { try { saveChange(); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); _change.revert(project); @@ -94,6 +104,33 @@ public class HistoryEntry implements Serializable, Jsonizable { } } + public void save(Writer writer, Properties options) { + JSONWriter jsonWriter = new JSONWriter(writer); + try { + write(jsonWriter, options); + } catch (JSONException e) { + e.printStackTrace(); + } + } + + static public HistoryEntry load(Project project, String s) throws Exception { + JSONObject obj = ParsingUtilities.evaluateJsonStringToObject(s); + + AbstractOperation operation = null; + if (obj.has("operation") && !obj.isNull("operation")) { + operation = OperationRegistry.reconstruct(project, obj.getJSONObject("operation")); + } + + return new HistoryEntry( + obj.getLong("id"), + project.id, + obj.getString("description"), + operation, + ParsingUtilities.stringToDate(obj.getString("time")) + ); + } + + protected void loadChange() { File changeFile = getChangeFile(); @@ -122,26 +159,21 @@ public class HistoryEntry implements Serializable, Jsonizable { } } - protected void saveChange() throws IOException { + protected void saveChange() throws Exception { File changeFile = getChangeFile(); if (!(changeFile.exists())) { saveChange(changeFile); } } - protected void saveChange(File file) throws IOException { + protected void saveChange(File file) throws Exception { ZipOutputStream out = new ZipOutputStream(new FileOutputStream(file)); try { out.putNextEntry(new ZipEntry("change.txt")); try { Writer writer = new OutputStreamWriter(out); try { - Properties options = new Properties(); - options.setProperty("mode", "save"); - - writer.write(_change.getClass().getName()); writer.write('\n'); - - _change.save(writer, options); + History.writeOneChange(writer, _change); } finally { writer.flush(); } diff --git a/src/main/java/com/metaweb/gridworks/model/AbstractOperation.java b/src/main/java/com/metaweb/gridworks/model/AbstractOperation.java index d3fed04fb..d420c3265 100644 --- a/src/main/java/com/metaweb/gridworks/model/AbstractOperation.java +++ b/src/main/java/com/metaweb/gridworks/model/AbstractOperation.java @@ -1,6 +1,5 @@ package com.metaweb.gridworks.model; -import java.io.Serializable; import java.util.Properties; import org.apache.commons.lang.NotImplementedException; @@ -14,9 +13,7 @@ import com.metaweb.gridworks.process.QuickHistoryEntryProcess; * An abstract operation can be applied to different but similar * projects. */ -abstract public class AbstractOperation implements Serializable, Jsonizable { - private static final long serialVersionUID = 3916055862440019600L; - +abstract public class AbstractOperation implements Jsonizable { public Process createProcess(Project project, Properties options) throws Exception { return new QuickHistoryEntryProcess(project, getBriefDescription(null)) { @Override diff --git a/src/main/java/com/metaweb/gridworks/model/Cell.java b/src/main/java/com/metaweb/gridworks/model/Cell.java index c41f6fd85..3e1f3c5f1 100644 --- a/src/main/java/com/metaweb/gridworks/model/Cell.java +++ b/src/main/java/com/metaweb/gridworks/model/Cell.java @@ -16,9 +16,7 @@ import com.metaweb.gridworks.expr.ExpressionUtils; import com.metaweb.gridworks.expr.HasFields; import com.metaweb.gridworks.util.ParsingUtilities; -public class Cell implements Serializable, HasFields, Jsonizable { - private static final long serialVersionUID = -5891067829205458102L; - +public class Cell implements HasFields, Jsonizable { final public Serializable value; final public Recon recon; diff --git a/src/main/java/com/metaweb/gridworks/model/Column.java b/src/main/java/com/metaweb/gridworks/model/Column.java index 67350cf00..61a4b9139 100644 --- a/src/main/java/com/metaweb/gridworks/model/Column.java +++ b/src/main/java/com/metaweb/gridworks/model/Column.java @@ -1,6 +1,5 @@ package com.metaweb.gridworks.model; -import java.io.Serializable; import java.io.Writer; import java.util.HashMap; import java.util.Map; @@ -14,9 +13,7 @@ import com.metaweb.gridworks.Jsonizable; import com.metaweb.gridworks.model.recon.ReconConfig; import com.metaweb.gridworks.util.ParsingUtilities; -public class Column implements Serializable, Jsonizable { - private static final long serialVersionUID = -1063342490951563563L; - +public class Column implements Jsonizable { final private int _cellIndex; final private String _originalName; private String _name; diff --git a/src/main/java/com/metaweb/gridworks/model/ColumnGroup.java b/src/main/java/com/metaweb/gridworks/model/ColumnGroup.java index 272e599a9..f8ca5f02c 100644 --- a/src/main/java/com/metaweb/gridworks/model/ColumnGroup.java +++ b/src/main/java/com/metaweb/gridworks/model/ColumnGroup.java @@ -2,25 +2,25 @@ package com.metaweb.gridworks.model; import java.io.IOException; import java.io.ObjectInputStream; -import java.io.Serializable; +import java.io.Writer; import java.util.LinkedList; import java.util.List; import java.util.Properties; import org.json.JSONException; +import org.json.JSONObject; import org.json.JSONWriter; import com.metaweb.gridworks.Jsonizable; +import com.metaweb.gridworks.util.ParsingUtilities; -public class ColumnGroup implements Serializable, Jsonizable { - private static final long serialVersionUID = 2161780779920066118L; - - final public int startColumnIndex; +public class ColumnGroup implements Jsonizable { + final public int startColumnIndex; final public int columnSpan; final public int keyColumnIndex; // could be -1 if there is no key cell transient public ColumnGroup parentGroup; - transient public List subgroups; + transient public List subgroups; public ColumnGroup(int startColumnIndex, int columnSpan, int keyColumnIndex) { this.startColumnIndex = startColumnIndex; @@ -38,14 +38,15 @@ public class ColumnGroup implements Serializable, Jsonizable { writer.key("columnSpan"); writer.value(columnSpan); writer.key("keyColumnIndex"); writer.value(keyColumnIndex); - if (subgroups != null && subgroups.size() > 0) { - writer.key("subgroups"); writer.array(); - for (ColumnGroup g : subgroups) { - g.write(writer, options); + if (!"save".equals(options.get("mode"))) { + if (subgroups != null && subgroups.size() > 0) { + writer.key("subgroups"); writer.array(); + for (ColumnGroup g : subgroups) { + g.write(writer, options); + } + writer.endArray(); } - writer.endArray(); } - writer.endObject(); } @@ -54,6 +55,25 @@ public class ColumnGroup implements Serializable, Jsonizable { g.startColumnIndex < startColumnIndex + columnSpan); } + public void save(Writer writer) { + JSONWriter jsonWriter = new JSONWriter(writer); + try { + write(jsonWriter, new Properties()); + } catch (JSONException e) { + e.printStackTrace(); + } + } + + static public ColumnGroup load(String s) throws Exception { + JSONObject obj = ParsingUtilities.evaluateJsonStringToObject(s); + + return new ColumnGroup( + obj.getInt("startColumnIndex"), + obj.getInt("columnSpan"), + obj.getInt("keyColumnIndex") + ); + } + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); internalInitialize(); diff --git a/src/main/java/com/metaweb/gridworks/model/ColumnModel.java b/src/main/java/com/metaweb/gridworks/model/ColumnModel.java index 24be9295a..fe15126ad 100644 --- a/src/main/java/com/metaweb/gridworks/model/ColumnModel.java +++ b/src/main/java/com/metaweb/gridworks/model/ColumnModel.java @@ -1,8 +1,8 @@ package com.metaweb.gridworks.model; import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.Serializable; +import java.io.LineNumberReader; +import java.io.Writer; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; @@ -16,18 +16,16 @@ import org.json.JSONWriter; import com.metaweb.gridworks.Jsonizable; -public class ColumnModel implements Serializable, Jsonizable { - private static final long serialVersionUID = 7679639795211544511L; +public class ColumnModel implements Jsonizable { + final public List columns = new LinkedList(); + final public List columnGroups = new LinkedList(); - final public List columns = new LinkedList(); - final public List columnGroups = new LinkedList(); + private int _maxCellIndex; + private int _keyColumnIndex; - private int _maxCellIndex; - private int _keyColumnIndex; - - transient protected Map _nameToColumn; - transient protected Map _cellIndexToColumn; - transient protected List _rootColumnGroups; + transient protected Map _nameToColumn; + transient protected Map _cellIndexToColumn; + transient protected List _rootColumnGroups; public ColumnModel() { internalInitialize(); @@ -90,11 +88,52 @@ public class ColumnModel implements Serializable, Jsonizable { writer.endObject(); } - private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { - in.defaultReadObject(); - internalInitialize(); + public void save(Writer writer, Properties options) throws IOException { + writer.write("maxCellIndex="); writer.write(Integer.toString(_maxCellIndex)); writer.write('\n'); + writer.write("keyColumnIndex="); writer.write(Integer.toString(_keyColumnIndex)); writer.write('\n'); + + writer.write("columnCount="); writer.write(Integer.toString(columns.size())); writer.write('\n'); + for (Column column : columns) { + column.save(writer); writer.write('\n'); + } + + writer.write("columnGroupCount="); writer.write(Integer.toString(columnGroups.size())); writer.write('\n'); + for (ColumnGroup group : columnGroups) { + group.save(writer); writer.write('\n'); + } + + writer.write("/e/\n"); } + public void load(LineNumberReader reader) throws Exception { + String line; + while ((line = reader.readLine()) != null && !"/e/".equals(line)) { + int equal = line.indexOf('='); + CharSequence field = line.subSequence(0, equal); + String value = line.substring(equal + 1); + + if ("maxCellIndex".equals(field)) { + _maxCellIndex = Integer.parseInt(value); + } else if ("keyColumnIndex".equals(field)) { + _keyColumnIndex = Integer.parseInt(value); + } else if ("columnCount".equals(field)) { + int count = Integer.parseInt(value); + + for (int i = 0; i < count; i++) { + columns.add(Column.load(reader.readLine())); + } + } else if ("columnGroupCount".equals(field)) { + int count = Integer.parseInt(value); + + for (int i = 0; i < count; i++) { + columnGroups.add(ColumnGroup.load(reader.readLine())); + } + } + } + + internalInitialize(); + } + protected void internalInitialize() { generateMaps(); diff --git a/src/main/java/com/metaweb/gridworks/model/Project.java b/src/main/java/com/metaweb/gridworks/model/Project.java index 7e861e005..5d2ffcd8a 100644 --- a/src/main/java/com/metaweb/gridworks/model/Project.java +++ b/src/main/java/com/metaweb/gridworks/model/Project.java @@ -1,13 +1,23 @@ package com.metaweb.gridworks.model; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.Serializable; +import java.io.InputStreamReader; +import java.io.LineNumberReader; +import java.io.OutputStreamWriter; +import java.io.Writer; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.Properties; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; +import java.util.zip.ZipOutputStream; +import com.metaweb.gridworks.Gridworks; import com.metaweb.gridworks.ProjectManager; import com.metaweb.gridworks.ProjectMetadata; import com.metaweb.gridworks.expr.ExpressionUtils; @@ -15,42 +25,183 @@ import com.metaweb.gridworks.history.History; import com.metaweb.gridworks.process.ProcessManager; import com.metaweb.gridworks.protograph.Protograph; -public class Project implements Serializable { - private static final long serialVersionUID = -5089046824819472570L; - - final public long id; +public class Project { + final public long id; final public ColumnModel columnModel = new ColumnModel(); - final public List rows = new ArrayList(); + final public List rows = new ArrayList(); final public History history; + public Protograph protograph; transient public ProcessManager processManager; public Project() { - id = Math.round(Math.random() * 1000000) + System.currentTimeMillis(); + id = System.currentTimeMillis() + Math.round(Math.random() * 1000000000000L); history = new History(this); - - internalInitialize(); + processManager = new ProcessManager(); + } + + protected Project(long id) { + this.id = id; + this.history = new History(this); + this.processManager = new ProcessManager(); } public ProjectMetadata getMetadata() { return ProjectManager.singleton.getProjectMetadata(id); } - private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { - in.defaultReadObject(); - internalInitialize(); + public void save() { + Gridworks.log("Saving project " + id + " ..."); + + File dir = ProjectManager.singleton.getProjectDir(id); + + File tempFile = new File(dir, "data.temp.zip"); + try { + saveToFile(tempFile); + } catch (Exception e) { + e.printStackTrace(); + + Gridworks.log("Failed to save project data"); + return; + } + + File file = new File(dir, "data.zip"); + File oldFile = new File(dir, "data.old.zip"); + + if (file.exists()) { + file.renameTo(oldFile); + } + + tempFile.renameTo(file); + if (oldFile.exists()) { + oldFile.delete(); + } + + Gridworks.log("Project saved."); } - protected void internalInitialize() { - processManager = new ProcessManager(); - - recomputeRowContextDependencies(); + protected void saveToFile(File file) throws Exception { + ZipOutputStream out = new ZipOutputStream(new FileOutputStream(file)); + try { + out.putNextEntry(new ZipEntry("data.txt")); + try { + Writer writer = new OutputStreamWriter(out); + try { + Properties options = new Properties(); + options.setProperty("mode", "save"); + + saveToWriter(writer, options); + } finally { + writer.flush(); + } + } finally { + out.closeEntry(); + } + } finally { + out.close(); + } } + protected void saveToWriter(Writer writer, Properties options) throws IOException { + writer.write(Gridworks.s_version); writer.write('\n'); + + writer.write("columnModel=\n"); columnModel.save(writer, options); + writer.write("history=\n"); history.save(writer, options); + if (protograph != null) { + writer.write("protograph="); protograph.save(writer, options); writer.write('\n'); + } + + writer.write("rowCount="); writer.write(Integer.toString(rows.size())); writer.write('\n'); + for (Row row : rows) { + row.save(writer); writer.write('\n'); + } + } + + static public Project load(File dir, long id) { + try { + File file = new File(dir, "data.zip"); + if (file.exists()) { + return loadFromFile(file, id); + } + } catch (Exception e) { + e.printStackTrace(); + } + + try { + File file = new File(dir, "data.temp.zip"); + if (file.exists()) { + return loadFromFile(file, id); + } + } catch (Exception e) { + e.printStackTrace(); + } + + try { + File file = new File(dir, "data.old.zip"); + if (file.exists()) { + return loadFromFile(file, id); + } + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + static protected Project loadFromFile(File file, long id) throws Exception { + ZipInputStream in = new ZipInputStream(new FileInputStream(file)); + try { + ZipEntry entry = in.getNextEntry(); + + assert "data.txt".equals(entry.getName()); + + LineNumberReader reader = new LineNumberReader(new InputStreamReader(in)); + try { + return loadFromReader(reader, id); + } finally { + reader.close(); + } + } finally { + in.close(); + } + } + + static protected Project loadFromReader(LineNumberReader reader, long id) throws Exception { + /* String version = */ reader.readLine(); + + Project project = new Project(id); + + String line; + while ((line = reader.readLine()) != null) { + int equal = line.indexOf('='); + CharSequence field = line.subSequence(0, equal); + String value = line.substring(equal + 1); + + if ("columnModel".equals(field)) { + project.columnModel.load(reader); + } else if ("history".equals(field)) { + project.history.load(project, reader); + } else if ("protograph".equals(field)) { + project.protograph = Protograph.load(project, value); + } else if ("rowCount".equals(field)) { + int count = Integer.parseInt(value); + + for (int i = 0; i < count; i++) { + project.rows.add(Row.load(reader.readLine())); + } + } + } + + project.recomputeRowContextDependencies(); + + return project; + } + + static protected class Group { - int[] cellIndices; + int[] cellIndices; int keyCellIndex; } diff --git a/src/main/java/com/metaweb/gridworks/model/Recon.java b/src/main/java/com/metaweb/gridworks/model/Recon.java index 9d15d21cb..c12872dd7 100644 --- a/src/main/java/com/metaweb/gridworks/model/Recon.java +++ b/src/main/java/com/metaweb/gridworks/model/Recon.java @@ -1,6 +1,5 @@ package com.metaweb.gridworks.model; -import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -15,9 +14,7 @@ import org.json.JSONWriter; import com.metaweb.gridworks.Jsonizable; import com.metaweb.gridworks.expr.HasFields; -public class Recon implements Serializable, HasFields, Jsonizable { - private static final long serialVersionUID = 8906257833709315762L; - +public class Recon implements HasFields, Jsonizable { static public enum Judgment { None, Matched, diff --git a/src/main/java/com/metaweb/gridworks/model/ReconCandidate.java b/src/main/java/com/metaweb/gridworks/model/ReconCandidate.java index 79871ab35..10f6f02db 100644 --- a/src/main/java/com/metaweb/gridworks/model/ReconCandidate.java +++ b/src/main/java/com/metaweb/gridworks/model/ReconCandidate.java @@ -1,6 +1,5 @@ package com.metaweb.gridworks.model; -import java.io.Serializable; import java.util.Properties; import org.json.JSONException; @@ -11,9 +10,7 @@ import com.metaweb.gridworks.Jsonizable; import com.metaweb.gridworks.expr.HasFields; import com.metaweb.gridworks.util.JSONUtilities; -public class ReconCandidate implements Serializable, HasFields, Jsonizable { - private static final long serialVersionUID = -8013997214978715606L; - +public class ReconCandidate implements HasFields, Jsonizable { final public String topicID; final public String topicGUID; final public String topicName; diff --git a/src/main/java/com/metaweb/gridworks/model/ReconStats.java b/src/main/java/com/metaweb/gridworks/model/ReconStats.java index 62238d064..20f2f690b 100644 --- a/src/main/java/com/metaweb/gridworks/model/ReconStats.java +++ b/src/main/java/com/metaweb/gridworks/model/ReconStats.java @@ -1,6 +1,5 @@ package com.metaweb.gridworks.model; -import java.io.Serializable; import java.io.Writer; import java.util.Properties; @@ -12,9 +11,7 @@ import com.metaweb.gridworks.Jsonizable; import com.metaweb.gridworks.expr.ExpressionUtils; import com.metaweb.gridworks.model.Recon.Judgment; -public class ReconStats implements Serializable, Jsonizable { - private static final long serialVersionUID = -4831409797104437854L; - +public class ReconStats implements Jsonizable { static public ReconStats load(JSONObject obj) throws Exception { return new ReconStats( obj.getInt("nonBlanks"), diff --git a/src/main/java/com/metaweb/gridworks/model/Row.java b/src/main/java/com/metaweb/gridworks/model/Row.java index 70f1c45db..379c8fbe5 100644 --- a/src/main/java/com/metaweb/gridworks/model/Row.java +++ b/src/main/java/com/metaweb/gridworks/model/Row.java @@ -1,6 +1,5 @@ package com.metaweb.gridworks.model; -import java.io.Serializable; import java.io.Writer; import java.util.ArrayList; import java.util.List; @@ -15,9 +14,7 @@ import com.metaweb.gridworks.Jsonizable; import com.metaweb.gridworks.expr.HasFields; import com.metaweb.gridworks.util.ParsingUtilities; -public class Row implements Serializable, HasFields, Jsonizable { - private static final long serialVersionUID = -689264211730915507L; - +public class Row implements HasFields, Jsonizable { public boolean flagged; public boolean starred; final public List cells; diff --git a/src/main/java/com/metaweb/gridworks/model/changes/CellAtRow.java b/src/main/java/com/metaweb/gridworks/model/changes/CellAtRow.java index 9a1305632..fd935845a 100644 --- a/src/main/java/com/metaweb/gridworks/model/changes/CellAtRow.java +++ b/src/main/java/com/metaweb/gridworks/model/changes/CellAtRow.java @@ -7,7 +7,7 @@ import java.util.Properties; import com.metaweb.gridworks.model.Cell; -public class CellAtRow implements Serializable { +public class CellAtRow { private static final long serialVersionUID = 7280920621006690944L; final public int row; diff --git a/src/main/java/com/metaweb/gridworks/model/recon/GuidBasedReconConfig.java b/src/main/java/com/metaweb/gridworks/model/recon/GuidBasedReconConfig.java index f0453ee71..ef8ba74c4 100644 --- a/src/main/java/com/metaweb/gridworks/model/recon/GuidBasedReconConfig.java +++ b/src/main/java/com/metaweb/gridworks/model/recon/GuidBasedReconConfig.java @@ -24,8 +24,6 @@ import com.metaweb.gridworks.model.Recon.Judgment; import com.metaweb.gridworks.util.ParsingUtilities; public class GuidBasedReconConfig extends StrictReconConfig { - private static final long serialVersionUID = 1857895989346775294L; - static public ReconConfig reconstruct(JSONObject obj) throws Exception { return new GuidBasedReconConfig(); } diff --git a/src/main/java/com/metaweb/gridworks/model/recon/HeuristicReconConfig.java b/src/main/java/com/metaweb/gridworks/model/recon/HeuristicReconConfig.java index 6b03388ae..b3d55394a 100644 --- a/src/main/java/com/metaweb/gridworks/model/recon/HeuristicReconConfig.java +++ b/src/main/java/com/metaweb/gridworks/model/recon/HeuristicReconConfig.java @@ -1,7 +1,6 @@ package com.metaweb.gridworks.model.recon; import java.io.InputStream; -import java.io.Serializable; import java.io.StringWriter; import java.net.URL; import java.net.URLConnection; @@ -28,11 +27,7 @@ import com.metaweb.gridworks.protograph.FreebaseProperty; import com.metaweb.gridworks.util.ParsingUtilities; public class HeuristicReconConfig extends ReconConfig { - private static final long serialVersionUID = 423145327938373362L; - - static public class ColumnDetail implements Serializable { - private static final long serialVersionUID = -8996704822460155543L; - + static public class ColumnDetail { final public String columnName; final public FreebaseProperty property; @@ -85,10 +80,10 @@ public class HeuristicReconConfig extends ReconConfig { } } - final public String service; // either "recon" or "relevance" + final public String service; // either "recon" or "relevance" final public String typeID; final public String typeName; - final public boolean autoMatch; + final public boolean autoMatch; final public List columnDetails; public HeuristicReconConfig( diff --git a/src/main/java/com/metaweb/gridworks/model/recon/IdBasedReconConfig.java b/src/main/java/com/metaweb/gridworks/model/recon/IdBasedReconConfig.java index dcc44e3b1..041c6d9cd 100644 --- a/src/main/java/com/metaweb/gridworks/model/recon/IdBasedReconConfig.java +++ b/src/main/java/com/metaweb/gridworks/model/recon/IdBasedReconConfig.java @@ -24,8 +24,6 @@ import com.metaweb.gridworks.model.Recon.Judgment; import com.metaweb.gridworks.util.ParsingUtilities; public class IdBasedReconConfig extends StrictReconConfig { - private static final long serialVersionUID = 1857895989346775294L; - static public ReconConfig reconstruct(JSONObject obj) throws Exception { return new IdBasedReconConfig(); } diff --git a/src/main/java/com/metaweb/gridworks/model/recon/KeyBasedReconConfig.java b/src/main/java/com/metaweb/gridworks/model/recon/KeyBasedReconConfig.java index 6f83cb6e0..aba055be4 100644 --- a/src/main/java/com/metaweb/gridworks/model/recon/KeyBasedReconConfig.java +++ b/src/main/java/com/metaweb/gridworks/model/recon/KeyBasedReconConfig.java @@ -25,8 +25,6 @@ import com.metaweb.gridworks.protograph.FreebaseTopic; import com.metaweb.gridworks.util.ParsingUtilities; public class KeyBasedReconConfig extends StrictReconConfig { - private static final long serialVersionUID = 2363754609522023900L; - final public FreebaseTopic namespace; static public ReconConfig reconstruct(JSONObject obj) throws Exception { diff --git a/src/main/java/com/metaweb/gridworks/model/recon/ReconConfig.java b/src/main/java/com/metaweb/gridworks/model/recon/ReconConfig.java index 5120a3f4c..6b3b26e20 100644 --- a/src/main/java/com/metaweb/gridworks/model/recon/ReconConfig.java +++ b/src/main/java/com/metaweb/gridworks/model/recon/ReconConfig.java @@ -1,6 +1,5 @@ package com.metaweb.gridworks.model.recon; -import java.io.Serializable; import java.io.Writer; import java.util.List; import java.util.Properties; @@ -15,9 +14,7 @@ import com.metaweb.gridworks.model.Project; import com.metaweb.gridworks.model.Recon; import com.metaweb.gridworks.model.Row; -abstract public class ReconConfig implements Serializable, Jsonizable { - private static final long serialVersionUID = -4831409797104437854L; - +abstract public class ReconConfig implements Jsonizable { static public ReconConfig reconstruct(JSONObject obj) throws Exception { String mode = obj.getString("mode"); if ("heuristic".equals(mode)) { diff --git a/src/main/java/com/metaweb/gridworks/model/recon/StrictReconConfig.java b/src/main/java/com/metaweb/gridworks/model/recon/StrictReconConfig.java index beeb631e8..abf688c44 100644 --- a/src/main/java/com/metaweb/gridworks/model/recon/StrictReconConfig.java +++ b/src/main/java/com/metaweb/gridworks/model/recon/StrictReconConfig.java @@ -3,8 +3,6 @@ package com.metaweb.gridworks.model.recon; import org.json.JSONObject; abstract public class StrictReconConfig extends ReconConfig { - private static final long serialVersionUID = 4454059850557793074L; - final static protected String s_mqlreadService = "http://api.freebase.com/api/service/mqlread"; static public ReconConfig reconstruct(JSONObject obj) throws Exception { diff --git a/src/main/java/com/metaweb/gridworks/operations/ColumnAdditionOperation.java b/src/main/java/com/metaweb/gridworks/operations/ColumnAdditionOperation.java index 2cfa6dd7d..cec825294 100644 --- a/src/main/java/com/metaweb/gridworks/operations/ColumnAdditionOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/ColumnAdditionOperation.java @@ -26,8 +26,6 @@ import com.metaweb.gridworks.model.changes.CellAtRow; import com.metaweb.gridworks.model.changes.ColumnAdditionChange; public class ColumnAdditionOperation extends EngineDependentOperation { - private static final long serialVersionUID = -5672677479629932356L; - final protected String _baseColumnName; final protected String _expression; final protected OnError _onError; diff --git a/src/main/java/com/metaweb/gridworks/operations/ColumnRemovalOperation.java b/src/main/java/com/metaweb/gridworks/operations/ColumnRemovalOperation.java index 8c613ef48..012fa473a 100644 --- a/src/main/java/com/metaweb/gridworks/operations/ColumnRemovalOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/ColumnRemovalOperation.java @@ -14,8 +14,6 @@ import com.metaweb.gridworks.model.Project; import com.metaweb.gridworks.model.changes.ColumnRemovalChange; public class ColumnRemovalOperation extends AbstractOperation { - private static final long serialVersionUID = 8422079695048733734L; - final protected String _columnName; static public AbstractOperation reconstruct(Project project, JSONObject obj) throws Exception { diff --git a/src/main/java/com/metaweb/gridworks/operations/EngineDependentMassCellOperation.java b/src/main/java/com/metaweb/gridworks/operations/EngineDependentMassCellOperation.java index 465f2d34d..d0ea68cee 100644 --- a/src/main/java/com/metaweb/gridworks/operations/EngineDependentMassCellOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/EngineDependentMassCellOperation.java @@ -16,8 +16,6 @@ import com.metaweb.gridworks.model.changes.CellChange; import com.metaweb.gridworks.model.changes.MassCellChange; abstract public class EngineDependentMassCellOperation extends EngineDependentOperation { - private static final long serialVersionUID = -8962461328087299452L; - final protected String _columnName; final protected boolean _updateRowContextDependencies; diff --git a/src/main/java/com/metaweb/gridworks/operations/EngineDependentOperation.java b/src/main/java/com/metaweb/gridworks/operations/EngineDependentOperation.java index a86573a58..78d0b9778 100644 --- a/src/main/java/com/metaweb/gridworks/operations/EngineDependentOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/EngineDependentOperation.java @@ -9,8 +9,6 @@ import com.metaweb.gridworks.model.Project; import com.metaweb.gridworks.util.ParsingUtilities; abstract public class EngineDependentOperation extends AbstractOperation { - private static final long serialVersionUID = -2800091595856881731L; - final private String _engineConfigString; transient protected JSONObject _engineConfig; diff --git a/src/main/java/com/metaweb/gridworks/operations/MassEditOperation.java b/src/main/java/com/metaweb/gridworks/operations/MassEditOperation.java index 71d4c9445..ed3e8c3ef 100644 --- a/src/main/java/com/metaweb/gridworks/operations/MassEditOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/MassEditOperation.java @@ -26,14 +26,10 @@ import com.metaweb.gridworks.model.changes.CellChange; import com.metaweb.gridworks.util.ParsingUtilities; public class MassEditOperation extends EngineDependentMassCellOperation { - private static final long serialVersionUID = -7698202759999537298L; - final protected String _expression; final protected List _edits; - static public class Edit implements Serializable, Jsonizable { - private static final long serialVersionUID = -4799990738910328002L; - + static public class Edit implements Jsonizable { final public List from; final public Serializable to; diff --git a/src/main/java/com/metaweb/gridworks/operations/MultiValuedCellJoinOperation.java b/src/main/java/com/metaweb/gridworks/operations/MultiValuedCellJoinOperation.java index e315ccf11..bf982c646 100644 --- a/src/main/java/com/metaweb/gridworks/operations/MultiValuedCellJoinOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/MultiValuedCellJoinOperation.java @@ -18,11 +18,9 @@ import com.metaweb.gridworks.model.Row; import com.metaweb.gridworks.model.changes.MassRowChange; public class MultiValuedCellJoinOperation extends AbstractOperation { - private static final long serialVersionUID = 3134524625206033285L; - final protected String _columnName; final protected String _keyColumnName; - final protected String _separator; + final protected String _separator; static public AbstractOperation reconstruct(Project project, JSONObject obj) throws Exception { return new MultiValuedCellJoinOperation( diff --git a/src/main/java/com/metaweb/gridworks/operations/MultiValuedCellSplitOperation.java b/src/main/java/com/metaweb/gridworks/operations/MultiValuedCellSplitOperation.java index ef22a7c60..912cf15a1 100644 --- a/src/main/java/com/metaweb/gridworks/operations/MultiValuedCellSplitOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/MultiValuedCellSplitOperation.java @@ -18,10 +18,8 @@ import com.metaweb.gridworks.model.Row; import com.metaweb.gridworks.model.changes.MassRowChange; public class MultiValuedCellSplitOperation extends AbstractOperation { - private static final long serialVersionUID = 8217930220439070322L; - - final protected String _columnName; - final protected String _keyColumnName; + final protected String _columnName; + final protected String _keyColumnName; final protected String _separator; final protected String _mode; diff --git a/src/main/java/com/metaweb/gridworks/operations/OperationRegistry.java b/src/main/java/com/metaweb/gridworks/operations/OperationRegistry.java index 26f3c5ec6..cf043218f 100644 --- a/src/main/java/com/metaweb/gridworks/operations/OperationRegistry.java +++ b/src/main/java/com/metaweb/gridworks/operations/OperationRegistry.java @@ -1,9 +1,13 @@ package com.metaweb.gridworks.operations; +import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; +import org.json.JSONObject; + import com.metaweb.gridworks.model.AbstractOperation; +import com.metaweb.gridworks.model.Project; public abstract class OperationRegistry { static public Map> s_opNameToClass; @@ -37,4 +41,21 @@ public abstract class OperationRegistry { register("text-transform", TextTransformOperation.class); register("mass-edit", MassEditOperation.class); } + + static public AbstractOperation reconstruct(Project project, JSONObject obj) { + try { + String op = obj.getString("op"); + + Class klass = OperationRegistry.s_opNameToClass.get(op); + if (klass != null) { + Method reconstruct = klass.getMethod("reconstruct", Project.class, JSONObject.class); + if (reconstruct != null) { + return (AbstractOperation) reconstruct.invoke(null, project, obj); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } } diff --git a/src/main/java/com/metaweb/gridworks/operations/ReconDiscardJudgmentsOperation.java b/src/main/java/com/metaweb/gridworks/operations/ReconDiscardJudgmentsOperation.java index a127c9698..0eacc7b9d 100644 --- a/src/main/java/com/metaweb/gridworks/operations/ReconDiscardJudgmentsOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/ReconDiscardJudgmentsOperation.java @@ -20,8 +20,6 @@ import com.metaweb.gridworks.model.changes.CellChange; import com.metaweb.gridworks.model.changes.ReconChange; public class ReconDiscardJudgmentsOperation extends EngineDependentMassCellOperation { - private static final long serialVersionUID = 6799029731665369179L; - static public AbstractOperation reconstruct(Project project, JSONObject obj) throws Exception { JSONObject engineConfig = obj.getJSONObject("engineConfig"); String columnName = obj.getString("columnName"); diff --git a/src/main/java/com/metaweb/gridworks/operations/ReconJudgeSimilarCellsOperation.java b/src/main/java/com/metaweb/gridworks/operations/ReconJudgeSimilarCellsOperation.java index e01400dd3..d45493163 100644 --- a/src/main/java/com/metaweb/gridworks/operations/ReconJudgeSimilarCellsOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/ReconJudgeSimilarCellsOperation.java @@ -25,12 +25,10 @@ import com.metaweb.gridworks.model.changes.CellChange; import com.metaweb.gridworks.model.changes.ReconChange; public class ReconJudgeSimilarCellsOperation extends EngineDependentMassCellOperation { - private static final long serialVersionUID = -5205694623711144436L; - - final protected String _similarValue; + final protected String _similarValue; final protected Judgment _judgment; - final protected ReconCandidate _match; - final protected boolean _shareNewTopics; + final protected ReconCandidate _match; + final protected boolean _shareNewTopics; static public AbstractOperation reconstruct(Project project, JSONObject obj) throws Exception { JSONObject engineConfig = obj.getJSONObject("engineConfig"); diff --git a/src/main/java/com/metaweb/gridworks/operations/ReconMarkNewTopicsOperation.java b/src/main/java/com/metaweb/gridworks/operations/ReconMarkNewTopicsOperation.java index 3b3d3e9e0..4248df511 100644 --- a/src/main/java/com/metaweb/gridworks/operations/ReconMarkNewTopicsOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/ReconMarkNewTopicsOperation.java @@ -22,8 +22,6 @@ import com.metaweb.gridworks.model.changes.CellChange; import com.metaweb.gridworks.model.changes.ReconChange; public class ReconMarkNewTopicsOperation extends EngineDependentMassCellOperation { - private static final long serialVersionUID = -5205694623711144436L; - final protected boolean _shareNewTopics; static public AbstractOperation reconstruct(Project project, JSONObject obj) throws Exception { diff --git a/src/main/java/com/metaweb/gridworks/operations/ReconMatchBestCandidatesOperation.java b/src/main/java/com/metaweb/gridworks/operations/ReconMatchBestCandidatesOperation.java index 5a146a197..dd475a4ab 100644 --- a/src/main/java/com/metaweb/gridworks/operations/ReconMatchBestCandidatesOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/ReconMatchBestCandidatesOperation.java @@ -20,8 +20,6 @@ import com.metaweb.gridworks.model.changes.CellChange; import com.metaweb.gridworks.model.changes.ReconChange; public class ReconMatchBestCandidatesOperation extends EngineDependentMassCellOperation { - private static final long serialVersionUID = 5393888241057341155L; - static public AbstractOperation reconstruct(Project project, JSONObject obj) throws Exception { JSONObject engineConfig = obj.getJSONObject("engineConfig"); String columnName = obj.getString("columnName"); diff --git a/src/main/java/com/metaweb/gridworks/operations/ReconMatchSpecificTopicOperation.java b/src/main/java/com/metaweb/gridworks/operations/ReconMatchSpecificTopicOperation.java index add6b694d..3d3307192 100644 --- a/src/main/java/com/metaweb/gridworks/operations/ReconMatchSpecificTopicOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/ReconMatchSpecificTopicOperation.java @@ -22,8 +22,6 @@ import com.metaweb.gridworks.model.changes.CellChange; import com.metaweb.gridworks.model.changes.ReconChange; public class ReconMatchSpecificTopicOperation extends EngineDependentMassCellOperation { - private static final long serialVersionUID = -5205694623711144436L; - final protected ReconCandidate match; static public AbstractOperation reconstruct(Project project, JSONObject obj) throws Exception { diff --git a/src/main/java/com/metaweb/gridworks/operations/ReconOperation.java b/src/main/java/com/metaweb/gridworks/operations/ReconOperation.java index a49a57224..ba5e86f93 100644 --- a/src/main/java/com/metaweb/gridworks/operations/ReconOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/ReconOperation.java @@ -30,8 +30,6 @@ import com.metaweb.gridworks.process.LongRunningProcess; import com.metaweb.gridworks.process.Process; public class ReconOperation extends EngineDependentOperation { - private static final long serialVersionUID = 838795186905314865L; - final protected String _columnName; final protected ReconConfig _reconConfig; diff --git a/src/main/java/com/metaweb/gridworks/operations/RowStarOperation.java b/src/main/java/com/metaweb/gridworks/operations/RowStarOperation.java index a418ccf26..0e650e3ff 100644 --- a/src/main/java/com/metaweb/gridworks/operations/RowStarOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/RowStarOperation.java @@ -20,8 +20,6 @@ import com.metaweb.gridworks.model.changes.MassChange; import com.metaweb.gridworks.model.changes.RowStarChange; public class RowStarOperation extends EngineDependentOperation { - private static final long serialVersionUID = 7047630960948704761L; - final protected boolean _starred; static public AbstractOperation reconstruct(Project project, JSONObject obj) throws Exception { diff --git a/src/main/java/com/metaweb/gridworks/operations/SaveProtographOperation.java b/src/main/java/com/metaweb/gridworks/operations/SaveProtographOperation.java index 68e1ab803..2d05def8a 100644 --- a/src/main/java/com/metaweb/gridworks/operations/SaveProtographOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/SaveProtographOperation.java @@ -17,8 +17,6 @@ import com.metaweb.gridworks.protograph.Protograph; import com.metaweb.gridworks.util.ParsingUtilities; public class SaveProtographOperation extends AbstractOperation { - private static final long serialVersionUID = 3134524625206033285L; - final protected Protograph _protograph; static public AbstractOperation reconstruct(Project project, JSONObject obj) throws Exception { diff --git a/src/main/java/com/metaweb/gridworks/operations/TextTransformOperation.java b/src/main/java/com/metaweb/gridworks/operations/TextTransformOperation.java index a6f01aca5..71a92a107 100644 --- a/src/main/java/com/metaweb/gridworks/operations/TextTransformOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/TextTransformOperation.java @@ -20,8 +20,6 @@ import com.metaweb.gridworks.model.Row; import com.metaweb.gridworks.model.changes.CellChange; public class TextTransformOperation extends EngineDependentMassCellOperation { - private static final long serialVersionUID = -7698202759999537298L; - final protected String _expression; final protected OnError _onError; final protected boolean _repeat; diff --git a/src/main/java/com/metaweb/gridworks/protograph/AnonymousNode.java b/src/main/java/com/metaweb/gridworks/protograph/AnonymousNode.java index 3977d96c0..4ff4e8d93 100644 --- a/src/main/java/com/metaweb/gridworks/protograph/AnonymousNode.java +++ b/src/main/java/com/metaweb/gridworks/protograph/AnonymousNode.java @@ -8,8 +8,6 @@ import org.json.JSONException; import org.json.JSONWriter; public class AnonymousNode implements Node, NodeWithLinks { - private static final long serialVersionUID = -6956243664838720646L; - final public FreebaseType type; final public List links = new LinkedList(); diff --git a/src/main/java/com/metaweb/gridworks/protograph/CellKeyNode.java b/src/main/java/com/metaweb/gridworks/protograph/CellKeyNode.java index 1ac1973e0..7db9191fc 100644 --- a/src/main/java/com/metaweb/gridworks/protograph/CellKeyNode.java +++ b/src/main/java/com/metaweb/gridworks/protograph/CellKeyNode.java @@ -6,8 +6,6 @@ import org.json.JSONException; import org.json.JSONWriter; public class CellKeyNode extends CellNode { - private static final long serialVersionUID = 1684854896739592911L; - final public FreebaseTopic namespace; public CellKeyNode( diff --git a/src/main/java/com/metaweb/gridworks/protograph/CellNode.java b/src/main/java/com/metaweb/gridworks/protograph/CellNode.java index ebe5517e7..c662d1c77 100644 --- a/src/main/java/com/metaweb/gridworks/protograph/CellNode.java +++ b/src/main/java/com/metaweb/gridworks/protograph/CellNode.java @@ -1,8 +1,6 @@ package com.metaweb.gridworks.protograph; abstract public class CellNode implements Node { - private static final long serialVersionUID = 5820786756175547307L; - final public String columnName; public CellNode( diff --git a/src/main/java/com/metaweb/gridworks/protograph/CellTopicNode.java b/src/main/java/com/metaweb/gridworks/protograph/CellTopicNode.java index b3803561c..e68b58309 100644 --- a/src/main/java/com/metaweb/gridworks/protograph/CellTopicNode.java +++ b/src/main/java/com/metaweb/gridworks/protograph/CellTopicNode.java @@ -8,10 +8,8 @@ import org.json.JSONException; import org.json.JSONWriter; public class CellTopicNode extends CellNode implements NodeWithLinks { - private static final long serialVersionUID = 1684854896739592911L; - final public boolean createForNoReconMatch; - final public FreebaseType type; + final public FreebaseType type; final public List links = new LinkedList(); public CellTopicNode( diff --git a/src/main/java/com/metaweb/gridworks/protograph/CellValueNode.java b/src/main/java/com/metaweb/gridworks/protograph/CellValueNode.java index de937478d..879dbcbb6 100644 --- a/src/main/java/com/metaweb/gridworks/protograph/CellValueNode.java +++ b/src/main/java/com/metaweb/gridworks/protograph/CellValueNode.java @@ -6,8 +6,6 @@ import org.json.JSONException; import org.json.JSONWriter; public class CellValueNode extends CellNode { - private static final long serialVersionUID = 7311884925532708576L; - final public String valueType; final public String lang; diff --git a/src/main/java/com/metaweb/gridworks/protograph/FreebaseProperty.java b/src/main/java/com/metaweb/gridworks/protograph/FreebaseProperty.java index 23ddc6c53..acc547d3f 100644 --- a/src/main/java/com/metaweb/gridworks/protograph/FreebaseProperty.java +++ b/src/main/java/com/metaweb/gridworks/protograph/FreebaseProperty.java @@ -1,8 +1,6 @@ package com.metaweb.gridworks.protograph; public class FreebaseProperty extends FreebaseTopic { - private static final long serialVersionUID = 7909539492956342421L; - //final protected FreebaseType _expectedType; public FreebaseProperty(String id, String name) { diff --git a/src/main/java/com/metaweb/gridworks/protograph/FreebaseTopic.java b/src/main/java/com/metaweb/gridworks/protograph/FreebaseTopic.java index e78d7d397..0083394a1 100644 --- a/src/main/java/com/metaweb/gridworks/protograph/FreebaseTopic.java +++ b/src/main/java/com/metaweb/gridworks/protograph/FreebaseTopic.java @@ -1,6 +1,5 @@ package com.metaweb.gridworks.protograph; -import java.io.Serializable; import java.util.Properties; import org.json.JSONException; @@ -8,9 +7,7 @@ import org.json.JSONWriter; import com.metaweb.gridworks.Jsonizable; -public class FreebaseTopic implements Serializable, Jsonizable { - private static final long serialVersionUID = -3427885694129112432L; - +public class FreebaseTopic implements Jsonizable { final public String id; final public String name; diff --git a/src/main/java/com/metaweb/gridworks/protograph/FreebaseTopicNode.java b/src/main/java/com/metaweb/gridworks/protograph/FreebaseTopicNode.java index a771e071b..1c9159585 100644 --- a/src/main/java/com/metaweb/gridworks/protograph/FreebaseTopicNode.java +++ b/src/main/java/com/metaweb/gridworks/protograph/FreebaseTopicNode.java @@ -8,8 +8,6 @@ import org.json.JSONException; import org.json.JSONWriter; public class FreebaseTopicNode implements Node, NodeWithLinks { - private static final long serialVersionUID = 8418548867745587387L; - final public FreebaseTopic topic; final public List links = new LinkedList(); diff --git a/src/main/java/com/metaweb/gridworks/protograph/FreebaseType.java b/src/main/java/com/metaweb/gridworks/protograph/FreebaseType.java index d3bf4b1fc..434789fac 100644 --- a/src/main/java/com/metaweb/gridworks/protograph/FreebaseType.java +++ b/src/main/java/com/metaweb/gridworks/protograph/FreebaseType.java @@ -1,8 +1,6 @@ package com.metaweb.gridworks.protograph; public class FreebaseType extends FreebaseTopic { - private static final long serialVersionUID = -3070300264980791404L; - public FreebaseType(String id, String name) { super(id, name); } diff --git a/src/main/java/com/metaweb/gridworks/protograph/Link.java b/src/main/java/com/metaweb/gridworks/protograph/Link.java index e3ec88168..abd0c4e75 100644 --- a/src/main/java/com/metaweb/gridworks/protograph/Link.java +++ b/src/main/java/com/metaweb/gridworks/protograph/Link.java @@ -1,6 +1,5 @@ package com.metaweb.gridworks.protograph; -import java.io.Serializable; import java.util.Properties; import org.json.JSONException; @@ -8,9 +7,7 @@ import org.json.JSONWriter; import com.metaweb.gridworks.Jsonizable; -public class Link implements Serializable, Jsonizable { - private static final long serialVersionUID = 2908086768260322876L; - +public class Link implements Jsonizable { final public FreebaseProperty property; final public Node target; diff --git a/src/main/java/com/metaweb/gridworks/protograph/Node.java b/src/main/java/com/metaweb/gridworks/protograph/Node.java index 8bef1a5c1..6290b0406 100644 --- a/src/main/java/com/metaweb/gridworks/protograph/Node.java +++ b/src/main/java/com/metaweb/gridworks/protograph/Node.java @@ -1,8 +1,6 @@ package com.metaweb.gridworks.protograph; -import java.io.Serializable; - import com.metaweb.gridworks.Jsonizable; -public interface Node extends Serializable, Jsonizable { +public interface Node extends Jsonizable { } diff --git a/src/main/java/com/metaweb/gridworks/protograph/Protograph.java b/src/main/java/com/metaweb/gridworks/protograph/Protograph.java index 4ec6439df..7c8aeba7a 100644 --- a/src/main/java/com/metaweb/gridworks/protograph/Protograph.java +++ b/src/main/java/com/metaweb/gridworks/protograph/Protograph.java @@ -1,6 +1,6 @@ package com.metaweb.gridworks.protograph; -import java.io.Serializable; +import java.io.Writer; import java.util.LinkedList; import java.util.List; import java.util.Properties; @@ -11,10 +11,10 @@ import org.json.JSONObject; import org.json.JSONWriter; import com.metaweb.gridworks.Jsonizable; +import com.metaweb.gridworks.model.Project; +import com.metaweb.gridworks.util.ParsingUtilities; -public class Protograph implements Serializable, Jsonizable { - private static final long serialVersionUID = 706700643851582450L; - +public class Protograph implements Jsonizable { final protected List _rootNodes = new LinkedList(); public int getRootNodeCount() { @@ -137,4 +137,18 @@ public class Protograph implements Serializable, Jsonizable { writer.endObject(); } + public void save(Writer writer, Properties options) { + JSONWriter jsonWriter = new JSONWriter(writer); + try { + write(jsonWriter, options); + } catch (JSONException e) { + e.printStackTrace(); + } + } + + static public Protograph load(Project project, String s) throws Exception { + JSONObject obj = ParsingUtilities.evaluateJsonStringToObject(s); + + return reconstruct(obj); + } } diff --git a/src/main/java/com/metaweb/gridworks/protograph/ValueNode.java b/src/main/java/com/metaweb/gridworks/protograph/ValueNode.java index 2fe3b7c52..a4850f430 100644 --- a/src/main/java/com/metaweb/gridworks/protograph/ValueNode.java +++ b/src/main/java/com/metaweb/gridworks/protograph/ValueNode.java @@ -6,8 +6,6 @@ import org.json.JSONException; import org.json.JSONWriter; public class ValueNode implements Node { - private static final long serialVersionUID = -5626883493437735688L; - final public Object value; final public String valueType; final public String lang; diff --git a/src/main/proto/gridworks.proto b/src/main/proto/gridworks.proto deleted file mode 100644 index 7554b78e5..000000000 --- a/src/main/proto/gridworks.proto +++ /dev/null @@ -1,23 +0,0 @@ -package gridworks; - -option java_package = "com.metaweb.gridworks.data"; -option java_outer_classname = "Model"; - -message Expression { - required string value = 1; -} - -message Project { - required string name = 1; - required int64 created = 2; - required int64 modified = 3; - required string encoding = 4; - optional int32 encoding_confidence = 5; - optional string creator = 6; - optional string password = 7; - repeated Expression expression = 8; -} - -message ProjectManager { - repeated Project projects = 1; -} \ No newline at end of file