package org.jboss.tools.seam.pages.xml.model.helpers;
import java.util.ArrayList;
import java.util.List;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.jst.web.model.ReferenceObject;
import org.jboss.tools.jst.web.model.helpers.WebProcessStructureHelper;
import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
public class SeamPagesDiagramStructureHelper extends WebProcessStructureHelper implements SeamPagesConstants {
public static SeamPagesDiagramStructureHelper instance = new SeamPagesDiagramStructureHelper();
public static SeamPagesDiagramStructureHelper getInstance() {
return instance;
}
public XModelObject getDiagram(XModelObject object) {
return getProcess(object);
}
public XModelObject getParentProcess(XModelObject element) {
XModelObject p = element;
while(p != null && p.getFileType() == XModelObject.NONE &&
!ENT_DIAGRAM.equals(p.getModelEntity().getName())) p = p.getParent();
return p;
}
public XModelObject[] getItems(XModelObject diagram) {
return diagram.getChildren(ENT_DIAGRAM_ITEM);
}
public XModelObject[] getOutputs(XModelObject item) {
return item.getChildren(ENT_DIAGRAM_ITEM_OUTPUT);
}
public String getPath(XModelObject element) {
return element.getAttributeValue(ATTR_PATH);
}
public XModelObject getItemOutputTarget(XModelObject itemOutput) {
return itemOutput.getParent().getParent().getChildByPath(itemOutput.getAttributeValue(ATTR_TARGET));
}
public String getItemOutputPresentation(XModelObject itemOutput) {
// boolean s = isShortcut(itemOutput);
return itemOutput.getPresentationString();
}
public boolean isPattern(XModelObject item) {
String path = item.getAttributeValue(ATTR_PATH);
return (path != null) && (path.length() == 0 || path.indexOf('*') >= 0);
}
public boolean isUnconfirmedPage(XModelObject item) {
String type = item.getAttributeValue(ATTR_TYPE);
if(!TYPE_PAGE.equals(type)) return false;
if(isPattern(item)) return false;
return !"true".equals(item.getAttributeValue("confirmed"));
}
public XModelObject getReference(XModelObject diagramObject) {
if(diagramObject instanceof ReferenceObject) {
return ((ReferenceObject)diagramObject).getReference();
}
return null;
}
public String[][] getParams(XModelObject item) {
XModelObject o = getReference(item);
if(o == null) return new String[0][];
XModelObject[] os = o.getChildren();
List<String[]> list = new ArrayList<String[]>();
for (int i = 0; i < os.length; i++) {
if(os[i].getModelEntity().getName().startsWith(ENT_PARAM)) {
String n = os[i].getAttributeValue(ATTR_NAME);
String v = os[i].getAttributeValue(ATTR_VALUE);
list.add(new String[]{n, v});
}
}
return list.toArray(new String[0][]);
}
}