// Path: src/org/pql/core/PQLTask.java
// public class PQLTask {
// 	private int			id			= 0;
// 	private String 		label 		= null;
// 	private double 		similarity	= 1.0;
// 	private Set<String> labels 		= null;
// 	private boolean 	isAsterisk		= false; //A.P.
// 	
// 	public PQLTask(String label, double similarity) {
// 		this.label 		= label == null ? "" : label;
// 		this.similarity = similarity>=0 && similarity<=1.0 ? similarity : 1.0;
// 	}
// 	
// 	/**
// 	 * Get original task label.
// 	 * 
// 	 * @return Original task label.
// 	 */
// 	public String getLabel() {
// 		return this.label;
// 	}
// 	
// 	/**
// 	 * Get similarity degree threshold.
// 	 * 
// 	 * @return Similarity degree threshold.
// 	 */
// 	public double getSimilarity() {
// 		return this.similarity;
// 	}
// 	
// 	/**
// 	 * Get similar labels.
// 	 * 
// 	 * @return Similar labels.
// 	 */
// 	public Set<String> getSimilarLabels() {
// 		return this.labels;
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		return String.format("\"%s\"[%f]=%s", this.getLabel(), this.getSimilarity(), this.getSimilarLabels());
// 	}
// 	
// 	public int getID() {
// 		return this.id;
// 	}
// 	
// 	public void setLabel(String label) {
// 		this.label = label;
// 	}
// 	
// 	public void setSimilarity(double similarity) {
// 		if (similarity<0.0 || similarity>1.0)
// 			this.similarity = 1.0;
// 		else
// 			this.similarity = similarity;
// 	}
// 	
// 	public void setID(int taskID) {
// 		this.id = taskID;
// 	}
// 	
// 	public void setLabels(Set<String> labels) {
// 		this.labels = labels;
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		int result = this.label.hashCode();
// 		
// 		result+=this.id*11;
// 		result*=this.getSimilarity();
// 		
// 		if (this.labels!=null)
// 			for (String l : this.labels)
// 				result+=17*l.hashCode();
// 				
// 		return result;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (!(obj instanceof PQLTask)) return false;
// 		
// 		PQLTask task = (PQLTask) obj;
// 		
// 		if (task.id>0 && task.id==this.id)
// 			return true;
// 		
// 		if (task.similarity == this.similarity && task.getLabel().equals(this.getLabel()))
// 			return true;
// 		
// 		return false;
// 	}
// 	
// 	
// 	//A.P.
// 	public boolean isAsterisk() {
// 		return this.isAsterisk;
// 	}
// 	
// 	//A.P.
// 	public void setAsterisk(boolean isAsterisk) {
// 		this.isAsterisk = isAsterisk;
// 	}
// 
// 
// }


import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.Set;
import java.util.Vector;
import org.json.JSONArray;
import org.json.JSONException;
import org.pql.core.PQLTask;

		for(PQLTask task :tasks)
		{
			Integer id = task.getID();
			
			if(id == null)
				task.setID(0);
		}
		
	}


	@Override
	public Set<String> getLabels(int taskID) throws SQLException {
		Set<String> result = new HashSet<String>();
		
		if(this.PQL_TASKS_GET_SIM_CS == null)
		PQL_TASKS_GET_SIM_CS = connection.prepareCall(PQL_TASKS_GET_SIM);
		
		PQL_TASKS_GET_SIM_CS.setInt(1,taskID);
		
		ResultSet res = PQL_TASKS_GET_SIM_CS.executeQuery();
		
		while (res.next()) {
			result.add(res.getString(1));
		}
		
		return result;
	}

	@Override

// Path: src/org/pql/core/PQLTask.java
// public class PQLTask {
// 	private int			id			= 0;
// 	private String 		label 		= null;
// 	private double 		similarity	= 1.0;
// 	private Set<String> labels 		= null;
// 	private boolean 	isAsterisk		= false; //A.P.
// 	
// 	public PQLTask(String label, double similarity) {
// 		this.label 		= label == null ? "" : label;
// 		this.similarity = similarity>=0 && similarity<=1.0 ? similarity : 1.0;
// 	}
// 	
// 	/**
// 	 * Get original task label.
// 	 * 
// 	 * @return Original task label.
// 	 */
// 	public String getLabel() {
// 		return this.label;
// 	}
// 	
// 	/**
// 	 * Get similarity degree threshold.
// 	 * 
// 	 * @return Similarity degree threshold.
// 	 */
// 	public double getSimilarity() {
// 		return this.similarity;
// 	}
// 	
// 	/**
// 	 * Get similar labels.
// 	 * 
// 	 * @return Similar labels.
// 	 */
// 	public Set<String> getSimilarLabels() {
// 		return this.labels;
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		return String.format("\"%s\"[%f]=%s", this.getLabel(), this.getSimilarity(), this.getSimilarLabels());
// 	}
// 	
// 	public int getID() {
// 		return this.id;
// 	}
// 	
// 	public void setLabel(String label) {
// 		this.label = label;
// 	}
// 	
// 	public void setSimilarity(double similarity) {
// 		if (similarity<0.0 || similarity>1.0)
// 			this.similarity = 1.0;
// 		else
// 			this.similarity = similarity;
// 	}
// 	
// 	public void setID(int taskID) {
// 		this.id = taskID;
// 	}
// 	
// 	public void setLabels(Set<String> labels) {
// 		this.labels = labels;
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		int result = this.label.hashCode();
// 		
// 		result+=this.id*11;
// 		result*=this.getSimilarity();
// 		
// 		if (this.labels!=null)
// 			for (String l : this.labels)
// 				result+=17*l.hashCode();
// 				
// 		return result;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (!(obj instanceof PQLTask)) return false;
// 		
// 		PQLTask task = (PQLTask) obj;
// 		
// 		if (task.id>0 && task.id==this.id)
// 			return true;
// 		
// 		if (task.similarity == this.similarity && task.getLabel().equals(this.getLabel()))
// 			return true;
// 		
// 		return false;
// 	}
// 	
// 	
// 	//A.P.
// 	public boolean isAsterisk() {
// 		return this.isAsterisk;
// 	}
// 	
// 	//A.P.
// 	public void setAsterisk(boolean isAsterisk) {
// 		this.isAsterisk = isAsterisk;
// 	}
// 
// 
// }


// Path: src/org/pql/label/AbstractLabelManagerMySQL.java
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.Set;
import java.util.Vector;
import org.json.JSONArray;
import org.json.JSONException;
import org.pql.core.PQLTask;

		for(PQLTask task :tasks)
		{
			Integer id = task.getID();
			
			if(id == null)
				task.setID(0);
		}
		
	}


	@Override
	public Set<String> getLabels(int taskID) throws SQLException {
		Set<String> result = new HashSet<String>();
		
		if(this.PQL_TASKS_GET_SIM_CS == null)
		PQL_TASKS_GET_SIM_CS = connection.prepareCall(PQL_TASKS_GET_SIM);
		
		PQL_TASKS_GET_SIM_CS.setInt(1,taskID);
		
		ResultSet res = PQL_TASKS_GET_SIM_CS.executeQuery();
		
		while (res.next()) {
			result.add(res.getString(1));
		}
		
		return result;
	}

	@Override

	public boolean loadTask(PQLTask task, Set<Double> similarities) throws SQLException {
