HashMap deweyCount; HashMap prevDeweyCount; float currentSum,prevSum; MapLayout currentLayout = new PivotBySplitSize(); void buildHashMap(int m,int d,int y,int changeId){ posChangePercent = new RankedFloatArray(); negChangePercent = new RankedFloatArray(); posCateChangePercent = new RankedFloatArray(); negCateChangePercent = new RankedFloatArray(); reader = createReader(y+"-"+m+"-"+d+"hash.txt"); deweyCount = new HashMap(); try{ String line; currentSum = 0; while((line = reader.readLine())!=null){ String[] sline = line.split("\t"); int dewey = Integer.parseInt(sline[0]); int amount = Integer.parseInt(sline[1]); deweyCount.put(dewey,amount); currentSum += amount; } }catch(IOException e){ e.printStackTrace(); } calendar.set(newy,newm-1,newd); switch(changeId){ case 0:calendar.add(Calendar.DATE,-1);break; case 1:calendar.add(Calendar.DATE,-7);break; case 2:calendar.add(Calendar.MONTH,-1);break; case 3:calendar.add(Calendar.MONTH,-6);break; case 4:calendar.add(Calendar.YEAR,-1);break; } int oy = calendar.get(Calendar.YEAR); int om = calendar.get(Calendar.MONTH)+1; int od = calendar.get(Calendar.DATE); if(oy < 2008){ oy = 2008; om = 1; od = 1; } reader = createReader(oy+"-"+om+"-"+od+"hash.txt"); prevDeweyCount = new HashMap(); try{ String line; prevSum = 0; while((line = reader.readLine())!=null){ String[] sline = line.split("\t"); int dewey = Integer.parseInt(sline[0]); int amount = Integer.parseInt(sline[1]); prevDeweyCount.put(dewey,amount); prevSum += amount; } }catch(IOException e){ e.printStackTrace(); } } void buildTree(int m,int d,int y,int changeId){ buildHashMap(m,d,y,changeId); buildTree(); } void buildTree(MapLayout algorithm){ currentLayout = algorithm; buildTree(); } void buildTree(){ float[] prevCateSum = new float[10]; top10Index = new int[10]; RootTreeMap = new deweyModel(currentLayout); deweyModel[] cateModel = new deweyModel[10]; for(int i = 0;i < 10;i++){ cateModel[i] = new deweyModel(deweyCateName[i]); } ArrayList values = new ArrayList(); values.addAll(deweyCount.values()); // and sorting it (in reverse order) Collections.sort(values, Collections.reverseOrder()); for(Integer dewey : deweyCount.keySet()){ int index = dewey / 100; int amount = deweyCount.get(dewey); int rank = values.indexOf(amount); if(rank < 10){ top10Index[rank] = dewey; } prevCateSum[index] += amount; float curPercent = amount / currentSum; float prevPercent; if(prevDeweyCount.containsKey(dewey)){ prevPercent = prevDeweyCount.get(dewey) / prevSum; }else{ prevPercent = 0; } cateModel[index].addDeweyItem(dewey,amount,rank,curPercent,prevPercent); } for(int i = 0;i < 10;i++){ cateModel[i].finishAddItem(prevCateSum[i]/prevSum); RootTreeMap.addDeweyCate(RootTreeMap,cateModel[i]); } RootTreeMap.finishAddCate(); RootTreeMap.setBounds(startX, startY, endX, endY); RootTreeMap.showContents(); if(!sector) RootTreeMap.showChildrenContents(); RootTreeMap.zoomIn(); RootTreeMap.updateColors(); }