From e4af19f8a66a5fe44e60d4c88e44e80aa279b429 Mon Sep 17 00:00:00 2001 From: David Huynh Date: Tue, 24 Aug 2010 04:02:36 +0000 Subject: [PATCH] Namespaced operations' names by their modules' names. git-svn-id: http://google-refine.googlecode.com/svn/trunk@1215 7d457c2a-affb-35e4-300a-418c747d4874 --- .../operations/OperationRegistry.java | 77 +++---------------- .../webapp/modules/core/MOD-INF/controller.js | 38 +++++++++ 2 files changed, 48 insertions(+), 67 deletions(-) diff --git a/main/src/com/google/gridworks/operations/OperationRegistry.java b/main/src/com/google/gridworks/operations/OperationRegistry.java index 25a07b769..7a15f45d1 100644 --- a/main/src/com/google/gridworks/operations/OperationRegistry.java +++ b/main/src/com/google/gridworks/operations/OperationRegistry.java @@ -1,6 +1,6 @@ package com.google.gridworks.operations; -import java.lang.reflect.Method; +import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; @@ -8,84 +8,27 @@ import org.json.JSONObject; import com.google.gridworks.model.AbstractOperation; import com.google.gridworks.model.Project; -import com.google.gridworks.operations.cell.BlankDownOperation; -import com.google.gridworks.operations.cell.FillDownOperation; -import com.google.gridworks.operations.cell.MassEditOperation; -import com.google.gridworks.operations.cell.MultiValuedCellJoinOperation; -import com.google.gridworks.operations.cell.MultiValuedCellSplitOperation; -import com.google.gridworks.operations.cell.TextTransformOperation; -import com.google.gridworks.operations.cell.TransposeColumnsIntoRowsOperation; -import com.google.gridworks.operations.cell.TransposeRowsIntoColumnsOperation; -import com.google.gridworks.operations.column.ColumnAdditionByFetchingURLsOperation; -import com.google.gridworks.operations.column.ColumnAdditionOperation; -import com.google.gridworks.operations.column.ColumnMoveOperation; -import com.google.gridworks.operations.column.ColumnRemovalOperation; -import com.google.gridworks.operations.column.ColumnRenameOperation; -import com.google.gridworks.operations.column.ColumnSplitOperation; -import com.google.gridworks.operations.column.ExtendDataOperation; -import com.google.gridworks.operations.recon.ImportQADataOperation; -import com.google.gridworks.operations.recon.ReconDiscardJudgmentsOperation; -import com.google.gridworks.operations.recon.ReconJudgeSimilarCellsOperation; -import com.google.gridworks.operations.recon.ReconMarkNewTopicsOperation; -import com.google.gridworks.operations.recon.ReconMatchBestCandidatesOperation; -import com.google.gridworks.operations.recon.ReconMatchSpecificTopicOperation; -import com.google.gridworks.operations.recon.ReconOperation; -import com.google.gridworks.operations.row.DenormalizeOperation; -import com.google.gridworks.operations.row.RowFlagOperation; -import com.google.gridworks.operations.row.RowRemovalOperation; -import com.google.gridworks.operations.row.RowReorderOperation; -import com.google.gridworks.operations.row.RowStarOperation; + +import edu.mit.simile.butterfly.ButterflyModule; public abstract class OperationRegistry { static final public Map> s_opNameToClass = new HashMap>(); static final public Map, String> s_opClassToName = new HashMap, String>(); - static public void register(String name, Class klass) { - s_opNameToClass.put(name, klass); - s_opClassToName.put(klass, name); - } - - static { - register("recon", ReconOperation.class); - register("recon-mark-new-topics", ReconMarkNewTopicsOperation.class); - register("recon-match-best-candidates", ReconMatchBestCandidatesOperation.class); - register("recon-discard-judgments", ReconDiscardJudgmentsOperation.class); - register("recon-match-specific-topic-to-cells", ReconMatchSpecificTopicOperation.class); - register("recon-judge-similar-cells", ReconJudgeSimilarCellsOperation.class); + static public void registerOperation(ButterflyModule module, String name, Class klass) { + String key = module.getName() + "/" + name; - register("multivalued-cell-join", MultiValuedCellJoinOperation.class); - register("multivalued-cell-split", MultiValuedCellSplitOperation.class); - register("fill-down", FillDownOperation.class); - register("blank-down", BlankDownOperation.class); - register("transpose-columns-into-rows", TransposeColumnsIntoRowsOperation.class); - register("transpose-rows-into-columns", TransposeRowsIntoColumnsOperation.class); - - register("column-addition", ColumnAdditionOperation.class); - register("column-removal", ColumnRemovalOperation.class); - register("column-rename", ColumnRenameOperation.class); - register("column-move", ColumnMoveOperation.class); - register("column-split", ColumnSplitOperation.class); - register("extend-data", ExtendDataOperation.class); - register("column-addition-by-fetching-urls", ColumnAdditionByFetchingURLsOperation.class); - - register("row-removal", RowRemovalOperation.class); - register("row-star", RowStarOperation.class); - register("row-flag", RowFlagOperation.class); - register("row-reorder", RowReorderOperation.class); - - register("save-protograph", SaveProtographOperation.class); - register("text-transform", TextTransformOperation.class); - register("mass-edit", MassEditOperation.class); - - register("import-qa-data", ImportQADataOperation.class); - - register("denormalize", DenormalizeOperation.class); + s_opNameToClass.put(key, klass); + s_opClassToName.put(klass, key); } static public AbstractOperation reconstruct(Project project, JSONObject obj) { try { String op = obj.getString("op"); + if (!op.contains("/")) { + op = "core/" + op; // backward compatible + } Class klass = OperationRegistry.s_opNameToClass.get(op); if (klass != null) { diff --git a/main/webapp/modules/core/MOD-INF/controller.js b/main/webapp/modules/core/MOD-INF/controller.js index 1e89f82d2..3a9bafdd5 100644 --- a/main/webapp/modules/core/MOD-INF/controller.js +++ b/main/webapp/modules/core/MOD-INF/controller.js @@ -100,6 +100,43 @@ function registerCommands() { GS.registerCommand(module, "set-preference", new Packages.com.google.gridworks.commands.SetPreferenceCommand()); } +function registerOperations() { + var OR = Packages.com.google.gridworks.operations.OperationRegistry; + + OR.registerOperation(module, "text-transform", Packages.com.google.gridworks.operations.cell.TextTransformOperation); + OR.registerOperation(module, "mass-edit", Packages.com.google.gridworks.operations.cell.MassEditOperation); + + OR.registerOperation(module, "multivalued-cell-join", Packages.com.google.gridworks.operations.cell.MultiValuedCellJoinOperation); + OR.registerOperation(module, "multivalued-cell-split", Packages.com.google.gridworks.operations.cell.MultiValuedCellSplitOperation); + OR.registerOperation(module, "fill-down", Packages.com.google.gridworks.operations.cell.FillDownOperation); + OR.registerOperation(module, "blank-down", Packages.com.google.gridworks.operations.cell.BlankDownOperation); + OR.registerOperation(module, "transpose-columns-into-rows", Packages.com.google.gridworks.operations.cell.TransposeColumnsIntoRowsOperation); + OR.registerOperation(module, "transpose-rows-into-columns", Packages.com.google.gridworks.operations.cell.TransposeRowsIntoColumnsOperation); + + OR.registerOperation(module, "column-addition", Packages.com.google.gridworks.operations.column.ColumnAdditionOperation); + OR.registerOperation(module, "column-removal", Packages.com.google.gridworks.operations.column.ColumnRemovalOperation); + OR.registerOperation(module, "column-rename", Packages.com.google.gridworks.operations.column.ColumnRenameOperation); + OR.registerOperation(module, "column-move", Packages.com.google.gridworks.operations.column.ColumnMoveOperation); + OR.registerOperation(module, "column-split", Packages.com.google.gridworks.operations.column.ColumnSplitOperation); + OR.registerOperation(module, "extend-data", Packages.com.google.gridworks.operations.column.ExtendDataOperation); + OR.registerOperation(module, "column-addition-by-fetching-urls", Packages.com.google.gridworks.operations.column.ColumnAdditionByFetchingURLsOperation); + + OR.registerOperation(module, "row-removal", Packages.com.google.gridworks.operations.row.RowRemovalOperation); + OR.registerOperation(module, "row-star", Packages.com.google.gridworks.operations.row.RowStarOperation); + OR.registerOperation(module, "row-flag", Packages.com.google.gridworks.operations.row.RowFlagOperation); + OR.registerOperation(module, "row-reorder", Packages.com.google.gridworks.operations.row.RowReorderOperation); + + OR.registerOperation(module, "recon", Packages.com.google.gridworks.operations.recon.ReconOperation); + OR.registerOperation(module, "recon-mark-new-topics", Packages.com.google.gridworks.operations.recon.ReconMarkNewTopicsOperation); + OR.registerOperation(module, "recon-match-best-candidates", Packages.com.google.gridworks.operations.recon.ReconMatchBestCandidatesOperation); + OR.registerOperation(module, "recon-discard-judgments", Packages.com.google.gridworks.operations.recon.ReconDiscardJudgmentsOperation); + OR.registerOperation(module, "recon-match-specific-topic-to-cells", Packages.com.google.gridworks.operations.recon.ReconMatchSpecificTopicOperation); + OR.registerOperation(module, "recon-judge-similar-cells", Packages.com.google.gridworks.operations.recon.ReconJudgeSimilarCellsOperation); + OR.registerOperation(module, "import-qa-data", Packages.com.google.gridworks.operations.recon.ImportQADataOperation); + + OR.registerOperation(module, "save-protograph", Packages.com.google.gridworks.operations.SaveProtographOperation); +} + /* * This optional function is invoked from the module's init() Java function. */ @@ -107,6 +144,7 @@ function init() { // Packages.java.lang.System.err.println("Initializing by script " + module); registerCommands(); + registerOperations(); ClientSideResourceManager.addPaths( "index/scripts",