/******************************************************************************
* Copyright (c) 2007 g-Eclipse consortium
* 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
*
* Initial development of the original code was made for
* project g-Eclipse founded by European Union
* project number: FP6-IST-034327 http://www.geclipse.eu/
*
* Contributor(s):
* PSNC - Mariusz Wojtysiak
*
*****************************************************************************/
package eu.geclipse.ui.properties;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import eu.geclipse.core.model.IGridJobDescription;
import eu.geclipse.core.reporting.ProblemException;
/**
* Properties for {@link IGridJobDescription}
*/
public class GridJobDescSource extends AbstractPropertySource<IGridJobDescription> {
static private List<IProperty<IGridJobDescription>> staticProperties;
/**
* @param source Object, for which properties will be shown
*/
public GridJobDescSource( final IGridJobDescription source ) {
super( source );
}
@Override
protected List<IProperty<IGridJobDescription>> getStaticProperties() {
if( staticProperties == null ) {
staticProperties = createProperties();
}
return staticProperties;
}
@Override
protected Class<? extends AbstractPropertySource<?>> getPropertySourceClass()
{
return GridJobDescSource.class;
}
static private List<IProperty<IGridJobDescription>> createProperties() {
List<IProperty<IGridJobDescription>> propertiesList = new ArrayList<IProperty<IGridJobDescription>>();
propertiesList.add( createDescription() );
propertiesList.add( createPropertyExecutable() );
propertiesList.add( createPropertyExecutableArg() );
propertiesList.add( createPropertyInput() );
propertiesList.add( createPropertyOutput() );
propertiesList.add( createPropertyError() );
propertiesList.add( createPropertyStdOutputUri() );
propertiesList.add( createPropertyStdInputUri() );
propertiesList.add( createPropertyStdErrorUri() );
return propertiesList;
}
static private IProperty<IGridJobDescription> createDescription() {
return new MultilineProperty<IGridJobDescription>( Messages.getString( "GridJobDescSource.propertyDescription" ), //$NON-NLS-1$
Messages.getString( "GridJobDescSource.categoryApplication" ) ) { //$NON-NLS-1$
@Override
public Object getValue( final IGridJobDescription source )
{
return source.getDescription();
}
};
}
static private IProperty<IGridJobDescription> createPropertyExecutable() {
return new AbstractProperty<IGridJobDescription>( Messages.getString( "GridJobDescSource.propertyExecutable" ), //$NON-NLS-1$
Messages.getString( "GridJobDescSource.categoryApplication" ) ) { //$NON-NLS-1$
@Override
public Object getValue( final IGridJobDescription source )
{
return source.getExecutable();
}
};
}
static private IProperty<IGridJobDescription> createPropertyExecutableArg() {
return new AbstractProperty<IGridJobDescription>( Messages.getString( "GridJobDescSource.propertyExecArgs" ), //$NON-NLS-1$
Messages.getString( "GridJobDescSource.categoryApplication" ) ) { //$NON-NLS-1$
@Override
public Object getValue( final IGridJobDescription jobDescription )
{
StringBuilder stringBuilder = new StringBuilder();
if( jobDescription.getExecutableArguments() != null ) {
List<String> argList = jobDescription.getExecutableArguments();
for( String argString : argList ) {
if( stringBuilder.length() > 0 ) {
stringBuilder.append( ", " ); //$NON-NLS-1$
}
stringBuilder.append( argString );
}
}
return stringBuilder.toString();
}
};
}
static private IProperty<IGridJobDescription> createPropertyInput() {
return new AbstractProperty<IGridJobDescription>( Messages.getString( "GridJobDescSource.propertyInput" ), //$NON-NLS-1$
Messages.getString( "GridJobDescSource.categoryApplication" ), false ) { //$NON-NLS-1$
@Override
public Object getValue( final IGridJobDescription jobDescription )
{
return jobDescription.getStdInputFileName();
}
};
}
static private IProperty<IGridJobDescription> createPropertyOutput() {
return new AbstractProperty<IGridJobDescription>( Messages.getString( "GridJobDescSource.propertyOutput" ), //$NON-NLS-1$
Messages.getString( "GridJobDescSource.categoryApplication" ), false ) { //$NON-NLS-1$
@Override
public Object getValue( final IGridJobDescription jobDescription )
{
return jobDescription.getStdOutputFileName();
}
};
}
static private IProperty<IGridJobDescription> createPropertyError() {
return new AbstractProperty<IGridJobDescription>( Messages.getString("GridJobDescSource.propertyStdErrFilename"), //$NON-NLS-1$
Messages.getString( "GridJobDescSource.categoryApplication" ), false ) { //$NON-NLS-1$
@Override
public Object getValue( final IGridJobDescription jobDescription )
{
return jobDescription.getStdErrorFileName();
}
};
}
static private IProperty<IGridJobDescription> createPropertyStdOutputUri() {
return new AbstractProperty<IGridJobDescription>( Messages.getString("GridJobDescSource.propertyStdOutputUri"), //$NON-NLS-1$
Messages.getString( "GridJobDescSource.categoryApplication" ), false ) { //$NON-NLS-1$
@Override
public Object getValue( final IGridJobDescription jobDescription )
{
String value = null;
try {
URI stdOutputUri = jobDescription.getStdOutputUri();
if( stdOutputUri != null ) {
value = stdOutputUri.toString();
}
} catch( ProblemException exception ) {
// ignore exceptions
}
return value;
}
};
}
static private IProperty<IGridJobDescription> createPropertyStdInputUri() {
return new AbstractProperty<IGridJobDescription>( Messages.getString("GridJobDescSource.propertyStdInputUri"), //$NON-NLS-1$
Messages.getString( "GridJobDescSource.categoryApplication" ), false ) { //$NON-NLS-1$
@Override
public Object getValue( final IGridJobDescription jobDescription )
{
String value = null;
try {
URI stdInputUri = jobDescription.getStdInputUri();
if( stdInputUri != null ) {
value = stdInputUri.toString();
}
} catch( ProblemException exception ) {
// ignore exceptions
}
return value;
}
};
}
static private IProperty<IGridJobDescription> createPropertyStdErrorUri() {
return new AbstractProperty<IGridJobDescription>( Messages.getString("GridJobDescSource.propertyStdErrUri"), //$NON-NLS-1$
Messages.getString( "GridJobDescSource.categoryApplication" ), false ) { //$NON-NLS-1$
@Override
public Object getValue( final IGridJobDescription jobDescription )
{
String value = null;
try {
URI stdErrorUri = jobDescription.getStdErrorUri();
if( stdErrorUri != null ) {
value = stdErrorUri.toString();
}
} catch( ProblemException exception ) {
// ignore exceptions
}
return value;
}
};
}
}