ProjectScript.java
/*
* This software was designed and created by Jason Carroll.
* Copyright (c) 2002, 2003, 2004 Jason Carroll.
* The author can be reached at jcarroll@cowsultants.com
* ITracker website: http://www.cowsultants.com
* ITracker forums: http://www.cowsultants.com/phpBB/index.php
*
* This program is free software; you can redistribute it and/or modify
* it only under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
package org.itracker.model;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import java.io.Serializable;
import java.util.Comparator;
/**
* A Beanshell script configured to be executed for a specific Project field.
*
* @author ready
*/
public class ProjectScript extends AbstractEntity {
public static final FieldPriorityComparator FIELD_PRIORITY_COMPARATOR = new FieldPriorityComparator();
public static final FieldPriorityComparator PRIORITY_COMPARATOR = new FieldPriorityComparator();
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* The Project for which the script must be executed.
*/
private Project project;
/**
* The ID of the built-in or custom field for which the script must be
* executed.
* <p/>
* <p>
* If the ID represents a CustomField, then the CustomField should be
* configured for the Project or the script will never be executed.
* </p>
*/
private Integer fieldId;
private Configuration.Type fieldType;
/**
* The Beanshell script to execute.
*/
private WorkflowScript script;
private int priority;
/**
* Default constructor (required by Hibernate).
* <p/>
* <p>
* PENDING: should be <code>private</code> so that it can only be used by
* Hibernate, to ensure that the fields which form an instance's identity
* are always initialized/never <tt>null</tt>.
* </p>
*/
public ProjectScript() {
}
public Project getProject() {
return project;
}
public void setProject(Project project) {
this.project = project;
}
public WorkflowScript getScript() {
return script;
}
public void setScript(WorkflowScript script) {
this.script = script;
}
public Integer getFieldId() {
return fieldId;
}
public void setFieldId(Integer fieldId) {
this.fieldId = fieldId;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
public Configuration.Type getFieldType() {
return fieldType;
}
public void setFieldType(Configuration.Type fieldType) {
this.fieldType = fieldType;
}
public static class FieldPriorityComparator implements
Comparator<ProjectScript>, Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public int compare(ProjectScript a, ProjectScript b) {
return new CompareToBuilder().append(a.getFieldId(), b.getFieldId()).append(a.getPriority(), b.getPriority()).toComparison();
}
}
public static class ScriptPriorityComparator implements
Comparator<ProjectScript>, Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public int compare(ProjectScript a, ProjectScript b) {
return new CompareToBuilder().append(a.getPriority(), b.getPriority()).toComparison();
}
}
@Override
public String toString() {
return new ToStringBuilder(this).append("id", getId()).append("script", getScript()).append(
"fieldId", getFieldId()).append("priority", getPriority()).append(
"project", getProject()).toString();
}
}