From 19e35f17dcaa5e423c1bc579c4f09b181db1760c Mon Sep 17 00:00:00 2001 From: tama3 Date: Wed, 10 Oct 2007 01:14:56 +0000 Subject: [PATCH] update birthmark schema, extraction result will have extraction unit and birthmark types git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/stigmata/trunk@245 acee48c3-7b26-0410-bdac-b3d0e5314bbc --- .../jp/naist/se/stigmata/BirthmarkContext.java | 4 +- .../jp/naist/se/stigmata/ExtractionResultSet.java | 2 + .../printer/xml/ExtractionResultSetXmlPrinter.java | 7 +++ .../result/AbstractExtractionResultSet.java | 5 ++ .../result/XmlFileExtractionResultSet.java | 55 ++++++++++++++++++---- src/main/resources/META-INF/birthmark-1.0.dtd | 5 +- src/main/resources/META-INF/birthmark-1.0.rng | 18 +++++++ 7 files changed, 85 insertions(+), 11 deletions(-) diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkContext.java b/src/main/java/jp/naist/se/stigmata/BirthmarkContext.java index b4c6aa8..d8382c8 100755 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkContext.java +++ b/src/main/java/jp/naist/se/stigmata/BirthmarkContext.java @@ -90,7 +90,9 @@ public class BirthmarkContext{ } public void addBirthmarkType(String type){ - birthmarkTypes.add(type); + if(!birthmarkTypes.contains(type)){ + birthmarkTypes.add(type); + } } public void removeBirthmarkType(String type){ diff --git a/src/main/java/jp/naist/se/stigmata/ExtractionResultSet.java b/src/main/java/jp/naist/se/stigmata/ExtractionResultSet.java index 7709456..2db036f 100755 --- a/src/main/java/jp/naist/se/stigmata/ExtractionResultSet.java +++ b/src/main/java/jp/naist/se/stigmata/ExtractionResultSet.java @@ -41,6 +41,8 @@ public interface ExtractionResultSet extends Iterable{ */ public String[] getBirthmarkTypes(); + public ExtractionUnit getExtractionUnit(); + /** * returns the number of target birthmark-set size (# of classes, packages, or jar files). */ diff --git a/src/main/java/jp/naist/se/stigmata/printer/xml/ExtractionResultSetXmlPrinter.java b/src/main/java/jp/naist/se/stigmata/printer/xml/ExtractionResultSetXmlPrinter.java index 3590201..e3c837f 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/xml/ExtractionResultSetXmlPrinter.java +++ b/src/main/java/jp/naist/se/stigmata/printer/xml/ExtractionResultSetXmlPrinter.java @@ -24,6 +24,13 @@ import jp.naist.se.stigmata.printer.AbstractExtractionResultSetPrinter; public class ExtractionResultSetXmlPrinter extends AbstractExtractionResultSetPrinter{ public void printResult(PrintWriter out, ExtractionResultSet ers){ printHeader(out); + + out.printf(" %s%n", ers.getExtractionUnit()); + out.printf(" %n"); + for(String type: ers.getBirthmarkTypes()){ + out.printf(" %s%n", type); + } + out.printf(" %n"); for(Iterator i = ers.birthmarkSets(ExtractionTarget.TARGET_BOTH); i.hasNext(); ){ printBirthmarkSet(out, i.next()); } diff --git a/src/main/java/jp/naist/se/stigmata/result/AbstractExtractionResultSet.java b/src/main/java/jp/naist/se/stigmata/result/AbstractExtractionResultSet.java index 3632b0c..91cf545 100755 --- a/src/main/java/jp/naist/se/stigmata/result/AbstractExtractionResultSet.java +++ b/src/main/java/jp/naist/se/stigmata/result/AbstractExtractionResultSet.java @@ -14,6 +14,7 @@ import jp.naist.se.stigmata.BirthmarkSet; import jp.naist.se.stigmata.BirthmarkStoreException; import jp.naist.se.stigmata.ExtractionResultSet; import jp.naist.se.stigmata.ExtractionTarget; +import jp.naist.se.stigmata.ExtractionUnit; /** * Abstract class for ExtractionResultSet. @@ -89,6 +90,10 @@ public abstract class AbstractExtractionResultSet implements ExtractionResultSet return context.getBirthmarkTypes(); } + public ExtractionUnit getExtractionUnit(){ + return context.getExtractionUnit(); + } + public BirthmarkSet getBirthmarkSet(ExtractionTarget target, int index){ int currentIndex = 0; for(Iterator i = birthmarkSets(target); i.hasNext(); ){ diff --git a/src/main/java/jp/naist/se/stigmata/result/XmlFileExtractionResultSet.java b/src/main/java/jp/naist/se/stigmata/result/XmlFileExtractionResultSet.java index 9d3e6ee..e75bc72 100755 --- a/src/main/java/jp/naist/se/stigmata/result/XmlFileExtractionResultSet.java +++ b/src/main/java/jp/naist/se/stigmata/result/XmlFileExtractionResultSet.java @@ -32,7 +32,10 @@ import jp.naist.se.stigmata.BirthmarkEnvironment; import jp.naist.se.stigmata.BirthmarkSet; import jp.naist.se.stigmata.BirthmarkStoreException; import jp.naist.se.stigmata.BirthmarkStoreTarget; +import jp.naist.se.stigmata.ComparisonMethod; import jp.naist.se.stigmata.ExtractionTarget; +import jp.naist.se.stigmata.ExtractionUnit; +import jp.naist.se.stigmata.Stigmata; import jp.naist.se.stigmata.printer.xml.ExtractionResultSetXmlPrinter; import jp.naist.se.stigmata.spi.BirthmarkSpi; @@ -63,6 +66,17 @@ public class XmlFileExtractionResultSet extends AbstractExtractionResultSet{ createTargetFile(); } + public XmlFileExtractionResultSet(File file){ + super(Stigmata.getInstance().createContext()); + addmode = false; + addList = null; + size = -1; + targetFile = file; + + getContext().setStoreTarget(BirthmarkStoreTarget.XMLFILE); + getContext().setComparisonMethod(ComparisonMethod.ROUND_ROBIN_SAME_PAIR); + } + public BirthmarkStoreTarget getStoreTarget(){ return BirthmarkStoreTarget.XMLFILE; } @@ -94,7 +108,7 @@ public class XmlFileExtractionResultSet extends AbstractExtractionResultSet{ public Iterator birthmarkSets(ExtractionTarget target){ checkMode(); - return new BirthmarkSetStAXIterator(targetFile, addList, getEnvironment()); + return new BirthmarkSetStAXIterator(targetFile, addList, getContext()); } @Override @@ -139,8 +153,9 @@ public class XmlFileExtractionResultSet extends AbstractExtractionResultSet{ private BirthmarkSet nextObject; private List validItems; private BirthmarkEnvironment env; + private BirthmarkContext context; - public BirthmarkSetStAXIterator(File file, List validItems, BirthmarkEnvironment env){ + public BirthmarkSetStAXIterator(File file, List validItems, BirthmarkContext context){ try{ XMLInputFactory factory = XMLInputFactory.newInstance(); BufferedReader in = new BufferedReader(new FileReader(file)); @@ -149,7 +164,8 @@ public class XmlFileExtractionResultSet extends AbstractExtractionResultSet{ } catch(XMLStreamException e){ } this.validItems = validItems; - this.env = env; + this.context = context; + this.env = context.getEnvironment(); try{ nextObject = findNext(); } catch(XMLStreamException e){ @@ -192,7 +208,21 @@ public class XmlFileExtractionResultSet extends AbstractExtractionResultSet{ XMLEvent event = reader.peek(); if(event.isStartElement()){ StartElement se = event.asStartElement(); - if(se.getName().getLocalPart().equals("name")) className = reader.getElementText(); + if(se.getName().getLocalPart().equals("unit")){ + ExtractionUnit unit = ExtractionUnit.valueOf(reader.getElementText()); + if(unit != null){ + context.setExtractionUnit(unit); + } + } + if(se.getName().getLocalPart().equals("birthmark-type")){ + String type = reader.getElementText(); + if(env.getService(type) != null){ + context.addBirthmarkType(type); + } + } + else if(se.getName().getLocalPart().equals("name")){ + className = reader.getElementText(); + } else if(se.getName().getLocalPart().equals("location")){ String location = reader.getElementText(); if(className == null || location == null){ @@ -200,7 +230,7 @@ public class XmlFileExtractionResultSet extends AbstractExtractionResultSet{ } try{ URL url = new URL(location); - if(!validItems.contains(url)){ + if(validItems == null || !validItems.contains(url)){ while(reader.hasNext()){ XMLEvent xmlevent = reader.nextTag(); if(xmlevent.isEndElement() && @@ -216,14 +246,21 @@ public class XmlFileExtractionResultSet extends AbstractExtractionResultSet{ } } else if(se.getName().getLocalPart().equals("element")){ - BirthmarkElement be = service.buildBirthmarkElement(reader.getElementText()); - birthmark.addElement(be); + if(service != null){ + BirthmarkElement be = service.buildBirthmarkElement(reader.getElementText()); + birthmark.addElement(be); + } } else if(se.getName().getLocalPart().equals("birthmark")){ String type = se.getAttributeByName(new QName("type")).getValue(); service = env.getService(type); - birthmark = service.buildBirthmark(); - bs.addBirthmark(birthmark); + if(service != null){ + birthmark = service.buildBirthmark(); + bs.addBirthmark(birthmark); + } + else{ + birthmark = null; + } } } else if(event.isEndElement()){ diff --git a/src/main/resources/META-INF/birthmark-1.0.dtd b/src/main/resources/META-INF/birthmark-1.0.dtd index 3bfaa61..ed97733 100755 --- a/src/main/resources/META-INF/birthmark-1.0.dtd +++ b/src/main/resources/META-INF/birthmark-1.0.dtd @@ -13,6 +13,8 @@ > + + @@ -26,7 +28,8 @@ - + + diff --git a/src/main/resources/META-INF/birthmark-1.0.rng b/src/main/resources/META-INF/birthmark-1.0.rng index eb045e0..383f695 100755 --- a/src/main/resources/META-INF/birthmark-1.0.rng +++ b/src/main/resources/META-INF/birthmark-1.0.rng @@ -63,6 +63,24 @@ + + + + CLASS + PACKAGE + ARCHIVE + + + + + + + + + + + + -- 2.11.0