workspace-tree-widget/src/main/java/org/gcube/portlets/user/workspace/server/util/DiffereceBeetweenInfoContac...

114 lines
3.0 KiB
Java

package org.gcube.portlets.user.workspace.server.util;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.workspace.client.model.InfoContactModel;
/**
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
*
*/
public class DiffereceBeetweenInfoContactModel {
private List<InfoContactModel> listOne;
private List<InfoContactModel> listTwo;
/**
* Get difference between listA and listB
* @param listA
* @param listB
*/
public DiffereceBeetweenInfoContactModel(List<InfoContactModel> listA, List<InfoContactModel> listB){
this.listOne = listA;
this.listTwo = listB;
}
/**
*
* @return what is in listA that is not in listB.
*/
public List<InfoContactModel> getDifferentsContacts(){
if(this.listOne==null)
return new ArrayList<InfoContactModel>();
if(this.listTwo==null || this.listTwo.size()==0)
return this.listOne;
List<InfoContactModel> difference = new ArrayList<InfoContactModel>();
boolean found;
for (InfoContactModel o1 : listOne) {
found = false;
for (InfoContactModel o2 : listTwo) {
if(compare(o1,o2)==0){
found = true;
break;
}
}
if(!found)
difference.add(o1);
}
return difference;
}
/**
*
* @param o1
* @param o2
* @return 0 if and only if o1.getName().compareTo(o2.getName())==0 && (o1.getLogin().compareTo(o2.getLogin())==0) is true
*/
public int compare(InfoContactModel o1, InfoContactModel o2) {
if (o1 == null) {
return -1;
} else if (o2 == null) {
return 1;
}
if (o1.getName().compareTo(o2.getName())==0 && (o1.getLogin().compareTo(o2.getLogin())==0))
return 0;
else
return -2;
}
/**
* test
* @param args
*/
public static void main(String[] args) {
List<InfoContactModel> listA = new ArrayList<InfoContactModel>();
listA.add(new InfoContactModel("federico.defaveri", "federico.defaveri", "Federico de Faveri"));
listA.add(new InfoContactModel("antonio.gioia", "antonio.gioia", "Antonio Gioia"));
listA.add(new InfoContactModel("fabio.sinibaldi", "fabio.sinibaldi", "Fabio Sinibaldi"));
listA.add(new InfoContactModel("pasquale.pagano", "pasquale.pagano", "Pasquale Pagano"));
listA.add(new InfoContactModel("francesco.mangiacrapa", "francesco.mangiacrapa", "Francesco Mangiacrapa"));
listA.add(new InfoContactModel("massimiliano.assante", "massimiliano.assante", "Massimiliano Assante"));
List<InfoContactModel> listB = new ArrayList<InfoContactModel>();
listB.add(new InfoContactModel("federico.defaveri", "federico.defaveri", "Federico de Faveri"));
listB.add(new InfoContactModel("fabio.sinibaldi", "fabio.sinibaldi", "Fabio Sinibaldi"));
listB.add(new InfoContactModel("antonio.gioia", "antonio.gioia", "Antonio Gioia"));
listB.add(new InfoContactModel("pasquale.pagano", "pasquale.pagano", "Pasquale Pagano"));
DiffereceBeetweenInfoContactModel diff = new DiffereceBeetweenInfoContactModel(listA, listB);
System.out.println("the differce is: "+diff.getDifferentsContacts());
}
}