r448 - in trunk: simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/metadata simexplorer-is-web simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages
Author: glandais Date: 2008-01-23 19:20:30 +0000 (Wed, 23 Jan 2008) New Revision: 448 Modified: trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/metadata/Version.java trunk/simexplorer-is-web/pom.xml trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementHistory.java Log: History page Modified: trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/metadata/Version.java =================================================================== --- trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/metadata/Version.java 2008-01-23 18:23:10 UTC (rev 447) +++ trunk/simexplorer-is-entities/src/java/fr/cemagref/simexplorer/is/entities/metadata/Version.java 2008-01-23 19:20:30 UTC (rev 448) @@ -111,6 +111,15 @@ return result; } + /** + * Length of version + * + * @return Number of subversions + */ + public int getLength() { + return pointedVersion.size(); + } + @Override public String toString() { StringBuffer result = new StringBuffer(); Modified: trunk/simexplorer-is-web/pom.xml =================================================================== --- trunk/simexplorer-is-web/pom.xml 2008-01-23 18:23:10 UTC (rev 447) +++ trunk/simexplorer-is-web/pom.xml 2008-01-23 19:20:30 UTC (rev 448) @@ -64,7 +64,7 @@ <dependency> <groupId>tapestry5-treegrid</groupId> <artifactId>tapestry5-treegrid</artifactId> - <version>0.0.1</version> + <version>0.0.3</version> </dependency> <dependency> <groupId>org.apache.tapestry</groupId> Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java 2008-01-23 18:23:10 UTC (rev 447) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java 2008-01-23 19:20:30 UTC (rev 448) @@ -28,6 +28,7 @@ import org.apache.tapestry.ComponentResources; import org.apache.tapestry.Link; import org.apache.tapestry.StreamResponse; +import org.apache.tapestry.annotations.InjectPage; import org.apache.tapestry.annotations.Persist; import org.apache.tapestry.ioc.annotations.Inject; import org.codelutin.tapestry.beans.TreeNode; @@ -60,6 +61,9 @@ @Persist private LoggableElement element; + @InjectPage + private ElementHistory elementHistory; + /** * Prepare page * @@ -123,7 +127,8 @@ StringTokenizer st = new StringTokenizer(context, ","); String uuid = st.nextToken(); String version = st.nextToken(); - return null; + elementHistory.setup(uuid); + return elementHistory; } public Object onRights(String context) throws Exception { @@ -139,7 +144,8 @@ MetaDataEntity mde = RemoteStorageService.getStorageService() .getMetadata(getToken(), uuid, version); - RemoteInputStream ris = RemoteStorageService.getStorageService().retrieveData(getToken(), uuid, version, "_xml"); + RemoteInputStream ris = RemoteStorageService.getStorageService() + .retrieveData(getToken(), uuid, version, "_xml"); InputStream stream = RemoteInputStreamClient.wrap(ris); response = new AttachmentStreamResponse(stream, "_xml"); @@ -235,31 +241,31 @@ .getMetaData().getName(), element.getMetaData().getVersion() .toString(), element, "export", "history")); - TreeNode[] children = new TreeNode[2]; - children[0] = new TreeNode(); - children[0].setType(TreeNode.TYPE_FOLDER); - children[0].setColumns(generateStringArray("Components", "", "")); - children[0] - .setChildren(generateComponents((ExplorationApplication) element)); + List<TreeNode> children = new ArrayList<TreeNode>(); + TreeNode node1 = new TreeNode(); + node1.setType(TreeNode.TYPE_FOLDER); + node1.setColumns(generateStringArray("Components", "", "")); + node1.setChildren(generateComponents((ExplorationApplication) element)); + children.add(node1); - children[1] = new TreeNode(); - children[1].setType(TreeNode.TYPE_FOLDER); - children[1].setColumns(generateStringArray("Explorations", "", "")); - children[1] + TreeNode node2 = new TreeNode(); + node2.setType(TreeNode.TYPE_FOLDER); + node2.setColumns(generateStringArray("Explorations", "", "")); + node2 .setChildren(generateExplorations((ExplorationApplication) element)); + children.add(node2); node.setChildren(children); return node; } - private TreeNode[] generateExplorations( + private List<TreeNode> generateExplorations( ExplorationApplication explorationApplication) { - TreeNode[] res = new TreeNode[explorationApplication.getExplorations() - .size()]; + List<TreeNode> res = new ArrayList<TreeNode>(); int i = 0; for (ExplorationData explorationData : explorationApplication .getExplorations()) { - res[i] = generateExplorationData(explorationData); + res.add(generateExplorationData(explorationData)); i++; } return res; @@ -274,31 +280,31 @@ .getMetaData().getVersion().toString(), explorationData, "history")); - TreeNode[] children = new TreeNode[2]; + List<TreeNode> children = new ArrayList<TreeNode>(); - children[0] = generateResult(explorationData); + children.add(generateResult(explorationData)); - children[1] = new TreeNode(); - children[1].setType(TreeNode.TYPE_FOLDER); - children[1].setColumns(generateStringArray("Values", - generateHeader("Type"), generateHeader("Value"))); - children[1].setChildren(generateValues(explorationData)); + TreeNode node1 = new TreeNode(); + node1.setType(TreeNode.TYPE_FOLDER); + node1.setColumns(generateStringArray("Values", generateHeader("Type"), + generateHeader("Value"))); + node1.setChildren(generateValues(explorationData)); + children.add(node1); explorationDataNode.setChildren(children); return explorationDataNode; } - private TreeNode[] generateValues(ExplorationData explorationData) { + private List<TreeNode> generateValues(ExplorationData explorationData) { Set<ConstantValue> values = explorationData.getValuesMap(); - TreeNode[] res = new TreeNode[values.size()]; - int i = 0; + List<TreeNode> res = new ArrayList<TreeNode>(); for (ConstantValue value : values) { - res[i] = new TreeNode(); - res[i].setType(TreeNode.TYPE_DOCUMENT); - res[i].setColumns(generateStringArray( - value.getConstant().getName(), value.getConstant() - .getType().getSimpleName(), value.getValue())); - i++; + TreeNode node = new TreeNode(); + node.setType(TreeNode.TYPE_DOCUMENT); + node.setColumns(generateStringArray(value.getConstant().getName(), + value.getConstant().getType().getSimpleName(), value + .getValue())); + res.add(node); } return res; @@ -313,20 +319,24 @@ return res; } - private TreeNode[] generateComponents( + private List<TreeNode> generateComponents( ExplorationApplication explorationApplication) { Set<Component> components = explorationApplication.getComponents(); - TreeNode[] res = new TreeNode[components.size()]; + List<TreeNode> res = new ArrayList<TreeNode>(); - int i = 0; for (Component component : components) { - res[i] = generateComponent(component); - i++; + res.add(generateComponent(component)); } return res; } + private TreeNode initNode() { + TreeNode node = new TreeNode(); + node.setType(TreeNode.TYPE_FOLDER); + return node; + } + private TreeNode generateComponent(Component component) { TreeNode componentNode = new TreeNode(); componentNode.setType(TreeNode.TYPE_FOLDER); @@ -335,79 +345,90 @@ .getMetaData().getName(), component.getMetaData().getVersion() .toString(), component, "history")); - TreeNode[] children = new TreeNode[4]; - for (int j = 0; j < children.length; j++) { - children[j] = new TreeNode(); - children[j].setType(TreeNode.TYPE_FOLDER); - } + List<TreeNode> children = new ArrayList<TreeNode>(); - children[0].setColumns(generateStringArray("Constants", + TreeNode node = null; + + node = initNode(); + node.setColumns(generateStringArray("Constants", generateHeader("Name"), generateHeader("Type"))); - children[0].setChildren(generateConstants(component.getConstants())); + node.setChildren(generateConstants(component.getConstants())); - children[1].setColumns(generateStringArray("Structures", "", "")); - children[1].setChildren(generateStructures(component.getStructures())); + children.add(node); + node = initNode(); - children[2].setColumns(generateStringArray("Codes", + node.setColumns(generateStringArray("Structures", "", "")); + node.setChildren(generateStructures(component.getStructures())); + + children.add(node); + node = initNode(); + + node.setColumns(generateStringArray("Codes", generateHeader("Language"), generateHeader("Code"))); - children[2].setChildren(generateCodes(component.getCodes())); + node.setChildren(generateCodes(component.getCodes())); - children[3].setColumns(generateStringArray("Libraries", "", "")); - children[3].setChildren(generateLibraries(component.getLibraries())); + children.add(node); + node = initNode(); + node.setColumns(generateStringArray("Libraries", "", "")); + node.setChildren(generateLibraries(component.getLibraries())); + + children.add(node); + componentNode.setChildren(children); return componentNode; } - private TreeNode[] generateLibraries(Set<Library> libraries) { - TreeNode[] res = new TreeNode[libraries.size()]; + private List<TreeNode> generateLibraries(Set<Library> libraries) { + List<TreeNode> res = new ArrayList<TreeNode>(); int i = 0; for (Library library : libraries) { - res[i] = new TreeNode(); - res[i].setType(TreeNode.TYPE_DOCUMENT); + TreeNode node = new TreeNode(); + node.setType(TreeNode.TYPE_DOCUMENT); - res[i].setColumns(generateStringArray("Library", library + node.setColumns(generateStringArray("Library", library .getMetaData().getName(), library.getMetaData() .getVersion().toString(), library, "download")); - i++; + + res.add(node); } return res; } - private TreeNode[] generateCodes(Set<Code> codes) { - TreeNode[] res = new TreeNode[codes.size()]; + private List<TreeNode> generateCodes(Set<Code> codes) { + List<TreeNode> res = new ArrayList<TreeNode>(); int i = 0; for (Code code : codes) { - res[i] = new TreeNode(); - res[i].setType(TreeNode.TYPE_DOCUMENT); - res[i].setColumns(generateStringArray("Code", code.getLanguage(), + TreeNode node = new TreeNode(); + node.setType(TreeNode.TYPE_DOCUMENT); + node.setColumns(generateStringArray("Code", code.getLanguage(), code.getCode())); - i++; + res.add(node); } return res; } - private TreeNode[] generateStructures(Set<Structure> structures) { - TreeNode[] res = new TreeNode[structures.size()]; + private List<TreeNode> generateStructures(Set<Structure> structures) { + List<TreeNode> res = new ArrayList<TreeNode>(); int i = 0; for (Structure structure : structures) { - res[i] = new TreeNode(); - res[i].setType(TreeNode.TYPE_DOCUMENT); - res[i].setColumns(generateStringArray("Structure", "", "")); - i++; + TreeNode node = new TreeNode(); + node.setType(TreeNode.TYPE_DOCUMENT); + node.setColumns(generateStringArray("Structure", "", "")); + res.add(node); } return res; } - private TreeNode[] generateConstants(Set<Constant> constants) { - TreeNode[] res = new TreeNode[constants.size()]; + private List<TreeNode> generateConstants(Set<Constant> constants) { + List<TreeNode> res = new ArrayList<TreeNode>(); int i = 0; for (Constant constant : constants) { - res[i] = new TreeNode(); - res[i].setType(TreeNode.TYPE_DOCUMENT); - res[i].setColumns(generateStringArray("Constant", constant - .getName(), constant.getType().getSimpleName())); - i++; + TreeNode node = new TreeNode(); + node.setType(TreeNode.TYPE_DOCUMENT); + node.setColumns(generateStringArray("Constant", constant.getName(), + constant.getType().getSimpleName())); + res.add(node); } return res; } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementHistory.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementHistory.java 2008-01-23 18:23:10 UTC (rev 447) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementHistory.java 2008-01-23 19:20:30 UTC (rev 448) @@ -25,8 +25,8 @@ import org.apache.tapestry.annotations.Persist; import org.codelutin.tapestry.beans.TreeNode; -import fr.cemagref.simexplorer.is.entities.data.LoggableElement; import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity; +import fr.cemagref.simexplorer.is.entities.metadata.Version; import fr.cemagref.simexplorer.is.ui.web.pages.security.UserPage; import fr.cemagref.simexplorer.is.ui.web.services.RemoteStorageService; @@ -71,27 +71,67 @@ private TreeNode generateNodes() { Arrays.sort(versions, new MetadataVersionComparator()); - int pos = 0; - int added = 0; TreeNode rootNode = new TreeNode(); rootNode.setType(TreeNode.TYPE_FOLDER); - rootNode.setColumns(generateStringArray("Root", "")); - rootNode.setChildren(new TreeNode[0]); + rootNode.setColumns(generateStringArray("History", "")); + rootNode.setObject(new Version("")); + rootNode.setChildren(new ArrayList<TreeNode>()); for (MetaDataEntity mde : versions) { - insertNode(mde, rootNode); + insertNode(mde, 0, rootNode); } - return null; + return rootNode; } - private void insertNode(MetaDataEntity mde, TreeNode node) { - TreeNode[] nodes = node.getChildren(); - for (TreeNode treeNode : nodes) { - if (mde.getVersion().toString().startsWith(treeNode.getColumns()[2])) { - insertNode(mde, treeNode); + private void insertNode(MetaDataEntity mde, int pos, TreeNode parent) { + List<TreeNode> nodes = parent.getChildren(); + if (pos == mde.getVersion().getLength()) { + nodes.add(generateLeaf(mde)); + } else { + TreeNode parentNode = null; + for (TreeNode treeNode : nodes) { + if (getVersion(treeNode).getVersion(pos) == mde.getVersion() + .getVersion(pos)) { + parentNode = treeNode; + } } + if (parentNode == null) { + parentNode = generateFolder(mde, pos, parent); + nodes.add(parentNode); + } + insertNode(mde, pos + 1, parentNode); } } + private TreeNode generateFolder(MetaDataEntity mde, int pos, TreeNode parent) { + TreeNode node = new TreeNode(); + node.setChildren(new ArrayList<TreeNode>()); + Version v = generateVersion(mde.getVersion(), pos); + node.setColumns(generateStringArray(v.toString())); + node.setObject(v); + node.setType(TreeNode.TYPE_FOLDER); + return node; + } + + private Version generateVersion(Version version, int pos) { + Version v = new Version(""); + for (int i = 0; i <= pos; i++) { + v.setVersion(i, version.getVersion(i)); + } + return v; + } + + private TreeNode generateLeaf(MetaDataEntity mde) { + TreeNode node = new TreeNode(); + node.setColumns(generateStringArray(mde.getVersion().toString())); + node.setObject(mde.getVersion()); + node.setType(TreeNode.TYPE_DOCUMENT); + return node; + } + + private Version getVersion(TreeNode treeNode) { + return (Version) treeNode.getObject(); + } + private String[] generateStringArray(String... s) { return s; }
participants (1)
-
glandais@users.labs.libre-entreprise.org