/*
- * Copyright (C) 2007-2012 Mathieu Baudier
+ * Copyright (C) 2007-2012 Argeo GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*/
package org.argeo.slc.client.ui.model;
+import java.util.List;
+
import javax.jcr.Node;
-import javax.jcr.NodeIterator;
import javax.jcr.RepositoryException;
-import org.argeo.ArgeoException;
+import org.argeo.slc.SlcException;
import org.argeo.slc.jcr.SlcNames;
import org.argeo.slc.jcr.SlcTypes;
/**
- * UI Tree component. Virtual folder to list either other folders and/or a list
- * of results. Keeps a reference to its parent that might be null if the .
+ * UI Tree component. Virtual folder to list a list of results. Keeps a
+ * reference to its parent that might be null. It also keeps a reference to all
+ * nodes that must be displayed as children of the current virtual folder.
*/
public class VirtualFolder extends ResultParent {
+ List<Node> displayedNodes;
- private Node node = null;
- private boolean isPassed = true;
-
- public VirtualFolder(VirtualFolder parent, Node node, String name) {
+ public VirtualFolder(VirtualFolder parent, List<Node> displayedNodes,
+ String name) {
super(name);
setParent(parent);
- this.node = node;
- }
-
- @Override
- public synchronized void dispose() {
- super.dispose();
+ this.displayedNodes = displayedNodes;
}
- /** Override normal behavior to initialize display */
@Override
- public synchronized Object[] getChildren() {
- if (isLoaded()) {
- return super.getChildren();
- } else {
- // initialize current object
- try {
- if (node != null) {
- NodeIterator ni = node.getNodes();
- while (ni.hasNext()) {
- Node currNode = ni.nextNode();
- if (currNode.isNodeType(SlcTypes.SLC_TEST_RESULT))
- addChild(new SingleResultNode(this, node, node
- .getProperty(SlcNames.SLC_TEST_CASE)
- .getString()));
- else if (currNode
- .isNodeType(SlcTypes.SLC_RESULT_FOLDER))
- addChild(new VirtualFolder(this, node,
- node.getName()));
- }
+ protected void initialize() {
+ try {
+ for (Node currNode : displayedNodes) {
+ if (currNode.isNodeType(SlcTypes.SLC_TEST_RESULT)) {
+ SingleResultNode srn = new SingleResultNode(this, currNode,
+ currNode.getProperty(SlcNames.SLC_TEST_CASE)
+ .getString());
+ addChild(srn);
}
- return super.getChildren();
- } catch (RepositoryException e) {
- throw new ArgeoException(
- "Cannot initialize WorkspaceNode UI object."
- + getName(), e);
}
+ } catch (RepositoryException re) {
+ throw new SlcException(
+ "Unexpected error while initializing ParentNodeFolder : "
+ + getName(), re);
}
}
-
- // @Override
- // public boolean refreshPassedStatus() {
- // Object[] children = getChildren();
- // isPassed = true;
- // checkChildrenStatus: for (int i = 0; i <= children.length; i++) {
- // if (children[i] instanceof VirtualFolder) {
- //
- // }
- // if (!((ResultParent) children[i]).isPassed()) {
- // isPassed = false;
- // break checkChildrenStatus;
- // }
- // }
- // return isPassed;
- // }
-
- @Override
- protected void initialize() {
- // TODO Auto-generated method stub
- }
-
}
\ No newline at end of file