blob: 6d0cf15b753e1c5033739f3e29c0a04b78e1a5d3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.framework.ui.skynet.widgets.workflow;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.osee.framework.db.connection.exception.OseeCoreException;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
/**
* @author Donald G. Dunne
*/
public class WorkPageDefinition extends WorkItemWithChildrenDefinition {
public static String ARTIFACT_NAME = "Work Page Definition";
private String pageName;
public WorkPageDefinition(String pageName, String pageId, String parentId) {
this(pageId, pageName, pageId, parentId);
}
public WorkPageDefinition(String itemName, String pageName, String pageId, String parentId) {
super(itemName, pageId, parentId);
this.pageName = pageName;
}
public WorkPageDefinition(Artifact artifact) throws OseeCoreException {
super(artifact, artifact.getDescriptiveName(), artifact.getSoleAttributeValue(
WorkItemAttributes.WORK_PAGE_NAME.getAttributeTypeName(), (String) null), artifact.getSoleAttributeValue(
WorkItemAttributes.WORK_ID.getAttributeTypeName(), (String) null), artifact.getSoleAttributeValue(
WorkItemAttributes.WORK_PARENT_ID.getAttributeTypeName(), (String) null));
setType(artifact.getSoleAttributeValue(WorkItemAttributes.WORK_TYPE.getAttributeTypeName(), (String) null));
loadWorkDataKeyValueMap(artifact);
setPageName(artifact.getSoleAttributeValue(WorkItemAttributes.WORK_PAGE_NAME.getAttributeTypeName(),
(String) null));
}
public boolean hasWorkRule(String ruleId) throws OseeCoreException {
return getWorkItemDefinition(ruleId) != null;
}
/**
* Returns work flow definition with the assumption that WorkFlowDefinition workId = pageWorkId minus pageName
*
* @return WorkFlowDefinition
* @throws OseeCoreException
*/
public WorkFlowDefinition getWorkFlowDefinitionById() throws OseeCoreException {
String id = getId().replace("." + pageName, "");
WorkItemDefinition workItemDefinition = WorkItemDefinitionFactory.getWorkItemDefinition(id);
if (workItemDefinition instanceof WorkFlowDefinition) {
return (WorkFlowDefinition) WorkItemDefinitionFactory.getWorkItemDefinition(id);
}
return null;
}
@Override
public Artifact toArtifact(WriteType writeType) throws OseeCoreException {
Artifact art = super.toArtifact(writeType);
// Only store start page if it's part of this definition
if (pageName != null) {
art.setSoleAttributeFromString(WorkItemAttributes.WORK_PAGE_NAME.getAttributeTypeName(), pageName);
}
return art;
}
/**
* @return the workItems
* @throws OseeCoreException
*/
public List<WorkItemDefinition> getWorkItemDefinitionsByType(String workType) throws OseeCoreException {
List<WorkItemDefinition> wids = new ArrayList<WorkItemDefinition>();
for (WorkItemDefinition workItemDefinition : getWorkItems(true)) {
if (workItemDefinition.getType() != null && workItemDefinition.getType().equals(workType)) {
wids.add(workItemDefinition);
}
}
return wids;
}
public boolean isCompletePage() {
return getPageName().equals("Completed");
}
public boolean isCancelledPage() {
return getPageName().equals("Cancelled");
}
public boolean isInstanceof(String workPageDefinitionId) throws OseeCoreException {
return isInstanceofRecurse(this, workPageDefinitionId);
}
private boolean isInstanceofRecurse(WorkPageDefinition workPageDefinition, String workPageDefinitionId) throws OseeCoreException {
if (workPageDefinition.getId().equals(workPageDefinitionId)) return true;
if (workPageDefinition.getParent() != null) {
return isInstanceofRecurse((WorkPageDefinition) workPageDefinition.getParent(), workPageDefinitionId);
}
return false;
}
/* (non-Javadoc)
* @see org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinition#getArtifactTypeName()
*/
@Override
public String getArtifactTypeName() {
return ARTIFACT_NAME;
}
public String getPageName() {
return pageName;
}
public void setPageName(String pageName) {
this.pageName = pageName;
}
}