summaryrefslogtreecommitdiff
path: root/webapps/swat/source/class/swat/module/ldbbrowse/Fsm.js
diff options
context:
space:
mode:
Diffstat (limited to 'webapps/swat/source/class/swat/module/ldbbrowse/Fsm.js')
-rw-r--r--webapps/swat/source/class/swat/module/ldbbrowse/Fsm.js516
1 files changed, 0 insertions, 516 deletions
diff --git a/webapps/swat/source/class/swat/module/ldbbrowse/Fsm.js b/webapps/swat/source/class/swat/module/ldbbrowse/Fsm.js
deleted file mode 100644
index 02aada9ebf..0000000000
--- a/webapps/swat/source/class/swat/module/ldbbrowse/Fsm.js
+++ /dev/null
@@ -1,516 +0,0 @@
-/*
- * Copyright:
- * (C) 2006 by Derrell Lipman
- * All rights reserved
- *
- * License:
- * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/
- */
-
-/**
- * Swat LDB Browser class finite state machine
- */
-qx.OO.defineClass("swat.module.ldbbrowse.Fsm", swat.main.AbstractModuleFsm,
-function()
-{
- swat.main.AbstractModuleFsm.call(this);
-});
-
-
-qx.Proto.buildFsm = function(module)
-{
- var fsm = module.fsm;
- var _this = this;
-
- /*
- * State: Idle
- *
- * Actions upon entry
- * - if returning from RPC, display the result
- *
- * Transition on:
- * "execute" on search button
- * "treeopenwhileempty" on tree
- * "changeselection" on tree
- */
- var state = new qx.util.fsm.State(
- "State_Idle",
- {
- "onentry" :
- function(fsm, event)
- {
- // Did we just return from an RPC request?
- if (fsm.getPreviousState() == "State_AwaitRpcResult")
- {
- // Yup. Display the result. We need to get the request object
- var rpcRequest = _this.popRpcRequest();
-
- // Display the result
- var gui = swat.module.ldbbrowse.Gui.getInstance();
-
- // Did we get a Resource Not Found error? We'll get this after a
- // session timeout, because the request is retried but can't
- // succeed because the database has been closed by the session
- // timing out.
- var result = rpcRequest.getUserData("result");
- var origins = swat.main.AbstractModuleFsm.JsonRpc_Origin;
- var serverErrors = swat.main.AbstractModuleFsm.JsonRpc_ServerError;
- if (result.type == "failed" &&
- result.data.origin == origins.Server &&
- result.data.code == serverErrors.ResourceError)
- {
- // Yup. Re-open the database
- var dbName = fsm.getObject("dbName");
- dbName.dispatchEvent(new qx.event.type.Event("changeSelected"),
- true);
- }
- else
- {
- // Otherwise, display the result
- gui.displayData(module, rpcRequest);
- }
-
- // Dispose of the request
- rpcRequest.request.dispose();
- rpcRequest.request = null;
- }
- },
-
- "events" :
- {
- // If the search button is activated, issue a search request
- "execute" :
- {
- "search" :
- "Transition_Idle_to_AwaitRpcResult_via_search",
-
- "commit" :
- "Transition_Idle_to_AwaitRpcResult_via_commit",
-
- "delete" :
- "Transition_Idle_to_AwaitRpcResult_via_delete"
- },
-
- // If a previously unexpanded tree node is expanded, issue a request
- // to retrieve its contents.
- "treeOpenWhileEmpty":
- {
- "tree" :
- "Transition_Idle_to_AwaitRpcResult_via_tree_open"
- },
-
- // If the selection changes, issue a request to retrieve contents to
- // populate the attribute/value table.
- "changeSelection":
- {
- "tree" :
- "Transition_Idle_to_AwaitRpcResult_via_tree_selection_changed"
-
- },
-
- // If another database is selected, try to open it and refresh
- // the tree
- "changeSelected":
- {
- "dbName":
- "Transition_Idle_to_AwaitRpcResult_via_db_changed"
- }
- }
- });
-
- // Replace the initial Idle state with this one
- fsm.replaceState(state, true);
-
- /*
- * Transition: Idle to AwaitRpcResult
- *
- * Cause: "execute" on search button
- *
- * Action:
- * Issue a search request
- */
- var trans = new qx.util.fsm.Transition(
- "Transition_Idle_to_AwaitRpcResult_via_search",
- {
- "nextState" :
- "State_AwaitRpcResult",
-
- "ontransition" :
- function(fsm, event)
- {
- // Get our module descriptor
- var module = fsm.getObject("swat.main.module");
-
- // Retrieve the database handle
- var dbHandle = module.dbHandle;
-
- // Retrieve the search expression
- var searchExpr = fsm.getObject("searchExpr").getValue();
-
- // Retrieve the base DN
- var baseDN = fsm.getObject("baseDN").getValue();
-
- // Retrieve the selected scope
- var scope = fsm.getObject("scope").getValue();
-
- // We want all attributes
- var attributes = [ "*" ];
-
- // Issue a Search call
- var request = _this.callRpc(fsm,
- "samba.ldb",
- "search",
- [
- dbHandle,
- searchExpr,
- baseDN,
- scope,
- attributes
- ]);
-
- // When we get the result, we'll need to know what type of request
- // we made.
- request.setUserData("requestType", "search");
- }
- });
- state.addTransition(trans);
-
- /*
- * Transition: Idle to AwaitRpcResult
- *
- * Cause: "execute" on OK button
- *
- * Action:
- * Commit modification or add new record to ldb
- */
- var trans = new qx.util.fsm.Transition(
- "Transition_Idle_to_AwaitRpcResult_via_commit",
- {
- "nextState" :
- "State_AwaitRpcResult",
-
- "ontransition" :
- function(fsm, event)
- {
- // Get our module descriptor
- var module = fsm.getObject("swat.main.module");
-
- // Retrieve the database handle
- var dbHandle = module.dbHandle;
-
- // Retrieve the ldbmod object
- var ldbmod = fsm.getObject("ldbmod");
-
- var ldif = ldbmod.getLdif();
-
- // Issue a Search call
- var request = _this.callRpc(fsm,
- "samba.ldb",
- ldbmod.getOpType(),
- [ dbHandle, ldif ]);
-
- // When we get the result, we'll need to know what type of request
- // we made.
- request.setUserData("requestType", ldbmod.getOpType());
- }
- });
- state.addTransition(trans);
-
- /*
- * Transition: Idle to AwaitRpcResult
- *
- * Cause: "execute" on OK button
- *
- * Action:
- * Delete a record from ldb
- */
- var trans = new qx.util.fsm.Transition(
- "Transition_Idle_to_AwaitRpcResult_via_delete",
- {
- "nextState" :
- "State_AwaitRpcResult",
-
- "ontransition" :
- function(fsm, event)
- {
- // Get our module descriptor
- var module = fsm.getObject("swat.main.module");
-
- // Retrieve the database handle
- var dbHandle = module.dbHandle;
-
- // Retrieve the ldbmod object
- var ldbmod = fsm.getObject("ldbmod");
-
- // Issue a Search call
- var request = _this.callRpc(fsm,
- "samba.ldb",
- "del",
- [ dbHandle, ldbmod.getBase() ]);
-
- // When we get the result, we'll need to know what type of request
- // we made.
- request.setUserData("requestType", "delete");
- }
- });
- state.addTransition(trans);
-
- /*
- * Transition: Idle to AwaitRpcResult
- *
- * Cause: "treeOpenWhileEmpty" on tree
- *
- * Action:
- * Issue a search request
- */
- var trans = new qx.util.fsm.Transition(
- "Transition_Idle_to_AwaitRpcResult_via_tree_open",
- {
- "nextState" :
- "State_AwaitRpcResult",
-
- "ontransition" :
- function(fsm, event)
- {
- // Get the tree object
- var tree = fsm.getObject("tree");
-
- // Get the node on which the event occurred
- var node = event.getData();
-
- // Obtain the full hierarchy for this node
- var hierarchy = tree.getHierarchy(node.nodeId);
-
- tree.debug("Requesting children for node id " + node.nodeId + ": " +
- hierarchy.join("/") + "...");
-
- // Strip off the root node
- hierarchy.shift();
-
- // Determine the children. Differs depending on root or otherwise
- var attributes;
- var scope;
- var baseDN;
-
- // If parent is the root...
- if (node.parentNodeId == 0)
- {
- // ... then we want the defaultNamingContext, ...
- attributes = [ "defaultNamingContext", "namingContexts" ];
-
- // ... and we want only base scope
- scope = "base";
-
- // ... and an empty base DN
- baseDN = "";
- }
- else
- {
- // otherwise, retrieve the DN,
- attributes = [ "dn" ];
-
- // ... and we want one level of scope
- scope = "one";
-
- // ... and base DN is the parent
- baseDN = hierarchy.reverse().join(",");
- }
-
- // Build the search expression
- var searchExpr = "";
-
- // Get our module descriptor
- var module = fsm.getObject("swat.main.module");
-
- // Retrieve the database handle
- var dbHandle = module.dbHandle;
-
- // Issue a Get Statistics call
- var request = _this.callRpc(fsm,
- "samba.ldb",
- "search",
- [
- dbHandle,
- searchExpr,
- baseDN,
- scope,
- attributes
- ]);
-
- // When we get the result, we'll need to know what type of request
- // we made.
- request.setUserData("requestType", "tree_open");
-
- // We'll also need some of our parameters
- request.setUserData("parentNode", node);
- request.setUserData("attributes", attributes);
- }
- });
- state.addTransition(trans);
-
- /*
- * Transition: Idle to AwaitRpcResult
- *
- * Cause: "changeSelection" on tree
- *
- * Action:
- * Issue a search request
- */
- var trans = new qx.util.fsm.Transition(
- "Transition_Idle_to_AwaitRpcResult_via_tree_selection_changed",
- {
- "nextState" :
- "State_AwaitRpcResult",
-
- "predicate" :
- function(fsm, event)
- {
- // Get the tree object
- var tree = fsm.getObject("tree");
-
- // Get the list of selected nodes. We're in single-selection mode,
- // so there will be only one of them.
- var nodes = event.getData();
- var node = nodes[0];
-
- var hierarchy = tree.getHierarchy(node.nodeId);
-
- // Strip off the root node
- hierarchy.shift();
-
- // If element is the root...
- if (node.parentNodeId == 0)
- {
- // ... then just clear out the attribute/value table.
- var tableModel = fsm.getObject("tableModel:browse");
- tableModel.setData([]);
- return null; // don't search additional transitions
- }
-
- return true;
- },
-
- "ontransition" :
- function(fsm, event)
- {
- // Get the tree object
- var tree = fsm.getObject("tree");
-
- // Get the list of selected nodes. We're in single-selection mode,
- // so there will be only one of them.
- var nodes = event.getData();
- var node = nodes[0];
-
- var hierarchy = tree.getHierarchy(node.nodeId);
-
- // Strip off the root node
- hierarchy.shift();
-
- // Determine the children. Differs depending on root or otherwise
- var attributes;
- var scope;
- var baseDN;
-
- // We want all attributes
- attributes = [ "*" ];
-
- // We want the attributes only for the current element
- scope = "base";
-
- // Base DN is the current element
- baseDN = hierarchy.reverse().join(",");
-
- // Build the search expression
- var searchExpr = "";
-
- // Get our module descriptor
- var module = fsm.getObject("swat.main.module");
-
- // Retrieve the database handle
- var dbHandle = module.dbHandle;
-
- // Issue a Get Statistics call
- var request = _this.callRpc(fsm,
- "samba.ldb",
- "search",
- [
- dbHandle,
- searchExpr,
- baseDN,
- scope,
- attributes
- ]);
-
- // When we get the result, we'll need to know what type of request
- // we made.
- request.setUserData("requestType", "tree_selection_changed");
- }
- });
- state.addTransition(trans);
-
- /*
- * Transition: Idle to AwaitRpcResult
- *
- * Cause: "changeSelection" on dbName
- *
- * Action:
- * Issue a connect request
- */
- var trans = new qx.util.fsm.Transition(
- "Transition_Idle_to_AwaitRpcResult_via_db_changed",
- {
- "nextState" :
- "State_AwaitRpcResult",
-
- "ontransition" :
- function(fsm, event)
- {
- // Obtain the name of the database to be connected to
- var dbName = fsm.getObject("dbName").getValue();
-
- // Issue a Get Statistics call
- var request = _this.callRpc(fsm,
- "samba.ldb",
- "connect",
- [ dbName ]);
-
- // When we get the result, we'll need to know what type of request
- // we made.
- request.setUserData("requestType", "database_name_changed");
- }
- });
- state.addTransition(trans);
-
- // Create the list of events that should be blocked while we're awaiting the
- // results of another RPC request
- blockedEvents =
- {
- // If a previously unexpanded tree node is expanded, issue a request
- // to retrieve its contents.
- "treeOpenWhileEmpty":
- {
- "tree" :
- qx.util.fsm.FiniteStateMachine.EventHandling.BLOCKED
- },
-
- // If the selection changes, issue a request to retrieve contents to
- // populate the attribute/value table.
- "changeSelection":
- {
- "tree" :
- qx.util.fsm.FiniteStateMachine.EventHandling.BLOCKED,
-
- "dbName":
- qx.util.fsm.FiniteStateMachine.EventHandling.BLOCKED
- }
- }
-
- // Add the AwaitRpcResult state and all of its transitions
- this.addAwaitRpcResultState(module, blockedEvents);
-};
-
-
-/**
- * Singleton Instance Getter
- */
-qx.Class.getInstance = qx.lang.Function.returnInstance;