1 /*
2  * Copyright (C) 2009 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package signature.io.html;
18 
19 import org.antlr.stringtemplate.StringTemplate;
20 
21 import java.util.ArrayList;
22 import java.util.Collections;
23 import java.util.List;
24 import java.util.Map;
25 
26 import signature.compare.model.IClassDefinitionDelta;
27 import signature.compare.model.IPackageDelta;
28 import signature.compare.model.impl.SigDelta;
29 
30 public class PackageOverviewPage implements IEmitter {
31 
32     private static final String PACGE = "PackageOverviewPage";
33 
34     private final IPackageDelta delta;
35 
36     private List<IClassDefinitionDelta> removedClasses;
37     private List<IClassDefinitionDelta> addedClasses;
38     private List<IClassDefinitionDelta> changedClasses;
39     private final Map<String, String> commonInfos;
40 
41 
PackageOverviewPage(IPackageDelta delta, Map<String, String> commonInfos)42     public PackageOverviewPage(IPackageDelta delta,
43             Map<String, String> commonInfos) {
44         this.delta = delta;
45         this.commonInfos = commonInfos;
46         prepareData();
47     }
48 
prepareData()49     private void prepareData() {
50         removedClasses = new ArrayList<IClassDefinitionDelta>(SigDelta
51                 .getRemoved(delta.getClassDeltas()));
52         Collections.sort(removedClasses, new ClassByNameComparator());
53 
54         addedClasses = new ArrayList<IClassDefinitionDelta>(SigDelta
55                 .getAdded(delta.getClassDeltas()));
56         Collections.sort(addedClasses, new ClassByNameComparator());
57 
58         changedClasses = new ArrayList<IClassDefinitionDelta>(SigDelta
59                 .getChanged(delta.getClassDeltas()));
60         Collections.sort(changedClasses, new ClassByNameComparator());
61     }
62 
writeTo(StringBuilder b)63     public void writeTo(StringBuilder b) {
64         StringTemplate template = TemplateStore.getStringTemplate(PACGE);
65         template.setArgumentContext(commonInfos);
66         template.setAttribute("package_delta", delta);
67         template.setAttribute("removed_classes", removedClasses);
68         template.setAttribute("added_classes", addedClasses);
69         template.setAttribute("changed_classes", changedClasses);
70         b.append(template.toString());
71     }
72 
73 
74 
75 }
76