Removed equals methods and added compareTo

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/vre-management/smart-executor-api@119374 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Luca Frosini 2015-10-05 10:54:40 +00:00
parent d6d8ddf6eb
commit e952fdb616
3 changed files with 101 additions and 27 deletions

View File

@ -12,13 +12,14 @@ import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.gcube.vremanagement.executor.api.types.adapter.MapAdapter;
import org.gcube.vremanagement.executor.utils.MapCompare;
/**
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
*/
@XmlRootElement()
@XmlAccessorType(XmlAccessType.FIELD)
public class LaunchParameter {
public class LaunchParameter implements Comparable<LaunchParameter>{
@XmlElement
protected String pluginName;
@ -143,21 +144,29 @@ public class LaunchParameter {
this.persist = persist;
}
public boolean equals(LaunchParameter launchParameter){
if(this.persist!=launchParameter.persist){
return false;
/** {@inheritDoc} */
@Override
public int compareTo(LaunchParameter launchParameter) {
int compareResult = 0;
compareResult = (new Boolean(persist)).compareTo(new Boolean(launchParameter.persist));
if(compareResult!=0){
return compareResult;
}
if(!pluginName.equals(launchParameter.pluginName)){
return false;
}
if(!scheduling.equals(launchParameter.scheduling)){
return false;
compareResult = pluginName.compareTo(launchParameter.pluginName);
if(compareResult!=0){
return compareResult;
}
return this.inputs.equals(launchParameter.inputs);
compareResult = scheduling.compareTo(launchParameter.scheduling);
if(compareResult!=0){
return compareResult;
}
MapCompare<Map<String, Object>, String, Object> mapCompare = new MapCompare<>();
return mapCompare.compareMaps(inputs, launchParameter.inputs);
}

View File

@ -12,7 +12,7 @@ import org.quartz.CronExpression;
/**
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
*/
public class Scheduling {
public class Scheduling implements Comparable<Scheduling> {
@XmlElement
/**
@ -72,7 +72,6 @@ public class Scheduling {
this.previuosExecutionsMustBeCompleted = previuosExecutionsMustBeCompleted;
}
protected Scheduling(){}
public Scheduling(CronExpression cronExpression) {
@ -185,28 +184,40 @@ public class Scheduling {
cronExpression, delay, schedulingTimes, firstStartTime, endTime, previuosExecutionsMustBeCompleted);
}
public boolean equals(Scheduling scheduling) {
if(cronExpression.equals(scheduling.cronExpression)){
return false;
/** {@inheritDoc}} */
@Override
public int compareTo(Scheduling scheduling) {
int compareResult = 0;
compareResult = cronExpression.compareTo(scheduling.cronExpression);
if(compareResult!=0){
return compareResult;
}
if(delay.equals(scheduling.delay)){
return false;
compareResult = delay.compareTo(scheduling.delay);
if(compareResult!=0){
return compareResult;
}
if(schedulingTimes != scheduling.schedulingTimes){
return false;
}
if(firstStartTime.equals(scheduling.firstStartTime)){
return false;
compareResult = (new Integer(schedulingTimes)).
compareTo((new Integer(scheduling.schedulingTimes)));
if(compareResult!=0){
return compareResult;
}
if(endTime.equals(scheduling.endTime)){
return false;
compareResult = firstStartTime.compareTo(scheduling.firstStartTime);
if(compareResult!=0){
return compareResult;
}
return previuosExecutionsMustBeCompleted==scheduling.previuosExecutionsMustBeCompleted;
compareResult = endTime.compareTo(scheduling.endTime);
if(compareResult!=0){
return compareResult;
}
return (new Boolean(previuosExecutionsMustBeCompleted))
.compareTo(
new Boolean(scheduling.previuosExecutionsMustBeCompleted));
}
}

View File

@ -0,0 +1,54 @@
/**
*
*/
package org.gcube.vremanagement.executor.utils;
import java.util.Map;
import java.util.Set;
/**
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
*
*/
public class MapCompare<M extends Map<K, V>, K, V> {
@SuppressWarnings({ "unchecked", "rawtypes" })
public int compareMaps(Map<K, V> map1, Map<K, V> map2){
int compareResult = 0;
Set<K> map1Set = map1.keySet();
Set<K> map2Set = map2.keySet();
compareResult = new Integer(map1Set.size()).compareTo(new Integer(map2Set.size()));
if(compareResult != 0){
return compareResult;
}
if(!map1Set.containsAll(map2Set) || !map2Set.containsAll(map1Set)){
return -1;
}
for(K key : map1Set){
V v1 = map1.get(key);
V v2 = map2.get(key);
if(!(v1 instanceof Comparable<?>)){
return -1;
}
if(!(v2 instanceof Comparable<?>)){
return -1;
}
compareResult = ((Comparable) v1).compareTo((Comparable<?>) v2);
if(compareResult != 0){
return compareResult;
}
}
return 0;
}
}