package controller.comparer.xmi;
import java.util.List;
import controller.compare.ComparerIntf;
import controller.upload.FileInfo;
import controller.upload.UploadProcessorFactory;
public class XmiClassDiagramComparer implements ComparerIntf {
private XmiClassDiagramParser ClassDiagram1;
private XmiClassDiagramParser ClassDiagram2;
/**
* Constructor
*
* @param XmiFiles1
* @param XmiFiles2
*/
public XmiClassDiagramComparer(List<FileInfo> XmiFiles1,
List<FileInfo> XmiFiles2) {
// Process the first file
FileInfo classDiagram1Notation = getFile(
UploadProcessorFactory.NOTATION_EXTENSION, XmiFiles1);
FileInfo classDiagram1Uml = getFile(
UploadProcessorFactory.UML_EXTENSION, XmiFiles1);
ClassDiagram1 = new XmiClassDiagramParser(
classDiagram1Uml.getDestFilePath()
+ classDiagram1Uml.getFileName(),
classDiagram1Notation.getDestFilePath()
+ classDiagram1Notation.getFileName());
// Process the second file
FileInfo classDiagram2Notation = getFile(
UploadProcessorFactory.NOTATION_EXTENSION, XmiFiles2);
FileInfo classDiagram2Uml = getFile(
UploadProcessorFactory.UML_EXTENSION, XmiFiles2);
ClassDiagram2 = new XmiClassDiagramParser(
classDiagram2Uml.getDestFilePath()
+ classDiagram2Uml.getFileName(),
classDiagram2Notation.getDestFilePath()
+ classDiagram2Notation.getFileName());
}
// Do not use this method yet. We need to change the interface to accept a
// list of FileInfo, since Xmi requires more than 1 file per diagram
@Override
public List<Object> compare(List<FileInfo> file1, List<FileInfo> file2,
String compareLayer) {
// TODO Auto-generated method stub
return null;
}
/**
* Refactor this method since it can be used in other sources (ex:
* UmlUploadProcessors)
*
* @param extension
* @param fileList
* @return
*/
private FileInfo getFile(String extension, List<FileInfo> fileList) {
FileInfo info = null;
for (int i = 0; i < fileList.size(); i++) {
String extn = fileList
.get(i)
.getFileName()
.substring(
fileList.get(i).getFileName().lastIndexOf(".") + 1,
fileList.get(i).getFileName().length());
if (extn.equals(extension)) {
info = fileList.get(i);
}
}
return info;
}
// *************************************************************************
// Implement and change these stubs to however you like
// *************************************************************************
// Compare names
public String compareClassNames() {
List<XmiClassElement> list1 = ClassDiagram1.getClassElements();
List<XmiClassElement> list2 = ClassDiagram2.getClassElements();
return "";
}
// Compare attributes
public String compareProperties() {
List<XmiClassElement> list1 = ClassDiagram1.getClassElements();
List<XmiClassElement> list2 = ClassDiagram2.getClassElements();
return "";
}
// Compare operations
public String compareOperations() {
List<XmiClassElement> list1 = ClassDiagram1.getClassElements();
List<XmiClassElement> list2 = ClassDiagram2.getClassElements();
return "";
}
// Compare Generalization
public String compareGeneralizations() {
List<XmiClassElement> list1 = ClassDiagram1.getClassElements();
List<XmiClassElement> list2 = ClassDiagram2.getClassElements();
return "";
}
}