blob: 01894fbe34d84d87b789d37cbbe137d8218bc48f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.uima.dde.internal.provider;
import java.util.ArrayList;
import java.util.List;
import org.apache.uima.UIMAFramework;
import org.apache.uima.aae.deployment.AEDeploymentConstants;
import org.apache.uima.aae.deployment.AEDeploymentDescription;
import org.apache.uima.aae.deployment.AEDeploymentMetaData;
import org.apache.uima.aae.deployment.AsyncAEErrorConfiguration;
import org.apache.uima.aae.deployment.AsyncAggregateErrorConfiguration;
import org.apache.uima.aae.deployment.AsyncPrimitiveErrorConfiguration;
import org.apache.uima.aae.deployment.CollectionProcessCompleteErrors;
import org.apache.uima.aae.deployment.GetMetadataErrors;
import org.apache.uima.aae.deployment.ProcessCasErrors;
import org.apache.uima.aae.deployment.RemoteAEDeploymentMetaData;
import org.apache.uima.aae.deployment.impl.AEDelegates_Impl;
import org.apache.uima.aae.deployment.impl.AsyncAggregateErrorConfiguration_Impl;
import org.apache.uima.aae.deployment.impl.GetMetadataErrors_Impl;
import org.apache.uima.analysis_engine.AnalysisEngineDescription;
import org.apache.uima.resource.ResourceSpecifier;
import org.apache.uima.tools.debug.util.Trace;
import org.apache.uima.util.InvalidXMLException;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
public class DDTreeContentProvider implements IStructuredContentProvider, ITreeContentProvider {
private static final Object[] EMPTY_ARRAY = new Object[0];
public Object[] getChildren(Object parent) {
Object[] objs = null;
int count = 0;
if (parent instanceof AEDeploymentMetaData) {
AEDeploymentMetaData metaData = (AEDeploymentMetaData) parent;
// if (metaData.getAsyncAEErrorConfiguration() == null) {
// // Create a new Error Config
// if (metaData.getResourceSpecifier() != null) {
// ResourceSpecifier rs = metaData.getResourceSpecifier();
// if (rs instanceof AnalysisEngineDescription) {
// Class cls;
// if (((AnalysisEngineDescription) rs).isPrimitive()) {
// // Prmitive
// cls = AsyncPrimitiveErrorConfiguration.class;
// } else {
// // Aggregate
// cls = AsyncAggregateErrorConfiguration.class;
// }
//
// Object obj = UIMAFramework.getResourceSpecifierFactory().createObject(cls);
// if (obj != null) {
// Trace.err("OK to create " + cls.getName() + " for " + metaData.getKey());
// metaData.setAsyncAEErrorConfiguration((AsyncAEErrorConfiguration) obj);
// } else {
// Trace.err("CANNOT create " + cls.getName() + " for " + metaData.getKey());
// }
// } else {
// Trace.bug("Should be AnalysisEngineDescription: " + rs.getClass().getName());
// }
// } else {
// Trace.bug("ResourceSpecifier == null for " + metaData.getKey());
// }
// }
if (metaData.isAsync()) {
if (metaData.getDelegates() != null) {
List list = metaData.getDelegates().getDelegates();
return list.toArray();
}
}
} else if (parent instanceof RemoteAEDeploymentMetaData) {
RemoteAEDeploymentMetaData metaData = (RemoteAEDeploymentMetaData) parent;
} else if (parent instanceof AEDelegates_Impl) {
return ((AEDelegates_Impl) parent).getDelegates().toArray();
} else if (parent instanceof AsyncAggregateErrorConfiguration) {
AsyncAggregateErrorConfiguration errorConfig = (AsyncAggregateErrorConfiguration) parent;
} else if (parent instanceof GetMetadataErrors) {
GetMetadataErrors getMetadataErrors = (GetMetadataErrors) parent;
objs = new Object[3];
objs[0] = "MaxRetries: " + getMetadataErrors.getMaxRetries();
objs[1] = "Timeout: " + getMetadataErrors.getTimeout();
objs[2] = "Error Action: " + getMetadataErrors.getErrorAction();
return objs;
} else if (parent instanceof ProcessCasErrors) {
ProcessCasErrors processCasErrors = (ProcessCasErrors) parent;
objs = new Object[6];
objs[0] = "MaxRetries: " + processCasErrors.getMaxRetries();
objs[1] = "Timeout: " + processCasErrors.getTimeout();
objs[2] = "ContinueOnRetryFailure: " + processCasErrors.isContinueOnRetryFailure();
objs[3] = "Threshold Count: " + processCasErrors.getThresholdCount();
objs[4] = "Threshold Window: " + processCasErrors.getThresholdWindow();
objs[5] = "Threshold Action: " + processCasErrors.getThresholdAction();
return objs;
} else if (parent instanceof CollectionProcessCompleteErrors) {
CollectionProcessCompleteErrors completeErrors = (CollectionProcessCompleteErrors) parent;
objs = new Object[2];
objs[0] = "Timeout: " + completeErrors.getTimeout();
objs[1] = "Additional Error Action: " + completeErrors.getAdditionalErrorAction();
return objs;
} else if (parent instanceof AsyncPrimitiveErrorConfiguration) {
AsyncPrimitiveErrorConfiguration errorConfig = (AsyncPrimitiveErrorConfiguration) parent;
if (errorConfig.hasImport()) {
String importBy = "import ";
if (errorConfig.isImportByLocation()) {
importBy += " location=" + errorConfig.getImportedDescriptor();
} else {
importBy += " name=" + errorConfig.getImportedDescriptor();
}
objs = new Object[1];
objs[0] = importBy;
return objs;
}
if (errorConfig.getGetMetadataErrors() != null) {
++count;
}
if (errorConfig.getProcessCasErrors() != null) {
++count;
}
if (errorConfig.getCollectionProcessCompleteErrors() != null) {
++count;
}
objs = new Object[count];
int index = 0;
if (errorConfig.getGetMetadataErrors() != null) {
objs[index++] = errorConfig.getGetMetadataErrors();
}
if (errorConfig.getProcessCasErrors() != null) {
objs[index++] = errorConfig.getProcessCasErrors();
}
if (errorConfig.getCollectionProcessCompleteErrors() != null) {
objs[index++] = errorConfig.getCollectionProcessCompleteErrors();
}
return objs;
}
return EMPTY_ARRAY;
}
public Object getParent(Object element) {
return null;
}
public boolean hasChildren(Object parent) {
return getChildren(parent).length > 0;
}
public Object[] getElements(Object inputElement) {
if (inputElement instanceof AEDeploymentDescription) {
AEDeploymentMetaData metaData = null;
try {
metaData = ((AEDeploymentDescription) inputElement).getAeService()
.getAnalysisEngineDeploymentMetaData();
// if (metaData != null && metaData.getAsyncAEErrorConfiguration() == null) {
// // Create a new Error Config
// Object obj = UIMAFramework.getResourceSpecifierFactory().createObject(
// AsyncAggregateErrorConfiguration.class);
// if (obj != null) {
// Trace.err("OK to create AsyncAEErrorConfiguration for " + metaData.getKey());
// metaData.setAsyncAEErrorConfiguration((AsyncAggregateErrorConfiguration) obj);
// } else {
// Trace.err("Cannot create AsyncAggregateErrorConfiguration");
// }
// } else {
// Trace.err("NO AEDeploymentMetaData");
// }
} catch (InvalidXMLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (metaData != null) {
Object[] objs = new Object[1];
objs[0] = metaData;
return objs;
}
}
Trace.err("inputElement: " + inputElement.getClass().getName());
return EMPTY_ARRAY; // Should NOT return "null"
}
public void dispose() {
// TODO Auto-generated method stub
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// if (newInput != null) {
// Trace.err("newInput: " + newInput.getClass().getName());
// }
}
}