package uni.projecte.dataTypes; import java.util.Date; import java.util.Hashtable; import java.util.Iterator; import java.util.Set; import uni.projecte.controler.CitationSecondLevelControler; import android.content.Context; import android.text.format.DateFormat; import android.widget.TextView; public class SecondLevelFieldHandler { private Hashtable<Integer, SecondLevelField> secLevFields; private Context baseContext; public SecondLevelFieldHandler(Context c){ this.baseContext=c; secLevFields = new Hashtable<Integer, SecondLevelField>(); } public String addSecondLevelField(int id,String fieldName){ String secondLevelId=createSecondLevelIdentifier(fieldName); SecondLevelField sLF= new SecondLevelField(secondLevelId); secLevFields.put(id,sLF); return secondLevelId; } public String addSecondLevelField(int id,String fieldName, TextView numElements){ String secondLevelId=createSecondLevelIdentifier(fieldName); SecondLevelField sLF= new SecondLevelField(secondLevelId,numElements); secLevFields.put(id,sLF); return secondLevelId; } public String replaceSecondLevelField(int id, String fieldName) { String secondLevelId=createSecondLevelIdentifier(fieldName); SecondLevelField scF=secLevFields.get(id); TextView counter=scF.getCounter(); counter.setText(""); secLevFields.remove(id); SecondLevelField sLF= new SecondLevelField(secondLevelId,counter); secLevFields.put(id,sLF); return secondLevelId; } public String getSecLevelIdByFieldId(int fieldId){ return secLevFields.get(fieldId).getId(); } public TextView getSecLevelCounterByFieldId(int fieldId){ return secLevFields.get(fieldId).getCounter(); } public int getSecLevelChildrenByFieldId(int fieldId){ return secLevFields.get(fieldId).getChildren(); } public void updateNumCitations(int fieldId, int numCitations){ secLevFields.get(fieldId).incChildren(numCitations); } public void setNumCitations(int fieldId, int numCitations){ secLevFields.get(fieldId).setChildren(numCitations); } private String createSecondLevelIdentifier(String fieldName){ Date date = new Date(); date.getDate(); return fieldName.toLowerCase()+"_"+(String) DateFormat.format("yyyy-MM-dd_kk:mm:ss",date); } /* * * If we finish the citation Activity and it has secondLevelFields, the filed secondLevelFields have to be removed. * */ public void removeSecondLevelFields() { CitationSecondLevelControler slCont=new CitationSecondLevelControler(baseContext); if(secLevFields.size()>0){ Set<Integer> set=secLevFields.keySet(); Iterator<Integer> iter = set.iterator(); while ( iter.hasNext ()){ SecondLevelField secLevelField=secLevFields.get(iter.next()); slCont.removeCitationsBySLId(secLevelField.getId()); } } } } class SecondLevelField{ private String secondLevelId; private int children; private TextView counter; public SecondLevelField(String secondLevelId, TextView numElements){ this.secondLevelId=secondLevelId; this.children=0; this.counter=numElements; } public SecondLevelField(String secondLevelId){ this.secondLevelId=secondLevelId; this.children=0; } public String getId() { return secondLevelId; } public void setSecondLevelId(String secondLevelId) { this.secondLevelId = secondLevelId; } public int getChildren() { return children; } public void setChildren(int chuildren) { this.children = chuildren; } public void incChildren(int child) { this.children = this.children+child; } public TextView getCounter() { return counter; } public void setCounter(TextView counter) { this.counter = counter; } }