From 9c451c57b568e2ff98698eaa3671e6bea79cf2c2 Mon Sep 17 00:00:00 2001 From: tama3 Date: Thu, 3 Jul 2008 03:04:34 +0000 Subject: [PATCH] change package name. jp.naist.se.stigmata -> jp.sourceforge.stigmata git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/stigmata/trunk@285 acee48c3-7b26-0410-bdac-b3d0e5314bbc --- README.txt | 9 +- pom.xml | 14 +- src/bin/stigmata.nsi | 32 +- src/main/assembly/macosx/Info.plist | 4 +- .../stigmata/ApplicationInitializationError.java | 62 +- .../se => sourceforge}/stigmata/Birthmark.java | 2 +- .../stigmata/BirthmarkComparator.java | 2 +- .../BirthmarkComparisonFailedException.java | 60 +- .../stigmata/BirthmarkContext.java | 338 ++--- .../stigmata/BirthmarkElement.java | 2 +- .../BirthmarkElementClassNotFoundException.java | 110 +- .../stigmata/BirthmarkEngine.java | 1008 +++++++------- .../stigmata/BirthmarkEnvironment.java | 670 ++++----- .../stigmata/BirthmarkException.java | 62 +- .../BirthmarkExtractionFailedException.java | 104 +- .../stigmata/BirthmarkExtractor.java | 154 +-- .../se => sourceforge}/stigmata/BirthmarkSet.java | 266 ++-- .../stigmata/BirthmarkSpiComparator.java | 88 +- .../stigmata/BirthmarkStoreException.java | 2 +- .../stigmata/BirthmarkStoreTarget.java | 128 +- .../stigmata/BirthmarkTypeMismatchException.java | 64 +- .../stigmata/ComparisonMethod.java | 84 +- .../stigmata/ComparisonPair.java | 188 +-- .../stigmata/ComparisonPairElement.java | 106 +- .../stigmata/ComparisonPairFilter.java | 66 +- .../stigmata/ComparisonPairFilterSet.java | 228 +-- .../stigmata/ComparisonResultSet.java | 110 +- .../stigmata/ExtractionResultSet.java | 270 ++-- .../stigmata/ExtractionTarget.java | 34 +- .../stigmata/ExtractionUnit.java | 46 +- .../stigmata/ExtractorNotFoundException.java | 58 +- .../stigmata/FilterNotFoundException.java | 58 +- .../{naist/se => sourceforge}/stigmata/Main.java | 736 +++++----- .../se => sourceforge}/stigmata/Stigmata.java | 412 +++--- .../stigmata/birthmarks/ASMBirthmarkExtractor.java | 114 +- .../stigmata/birthmarks/AbstractBirthmark.java | 6 +- .../birthmarks/AbstractBirthmarkExtractor.java | 248 ++-- .../birthmarks/AbstractBirthmarkService.java | 170 +-- .../birthmarks/BirthmarkExtractVisitor.java | 114 +- .../stigmata/birthmarks/BirthmarkService.java | 322 ++--- .../stigmata/birthmarks/FrequencyBirthmark.java | 162 +-- .../birthmarks/FrequencyBirthmarkElement.java | 174 +-- .../stigmata/birthmarks/NullBirthmarkElement.java | 78 +- .../stigmata/birthmarks/PlainBirthmark.java | 86 +- .../stigmata/birthmarks/ValueCountable.java | 34 +- .../comparators/AbstractBirthmarkComparator.java | 82 +- .../AbstractBirthmarkComparatorService.java | 130 +- .../CosineSimilarityBirthmarkComparator.java | 242 ++-- ...CosineSimilarityBirthmarkComparatorService.java | 72 +- .../comparators/DPMatchingBirthmarkComparator.java | 8 +- .../DPMatchingBirthmarkComparatorService.java | 72 +- .../EditDistanceBirthmarkComparator.java | 8 +- .../EditDistanceBirthmarkComparatorService.java | 72 +- .../ExtendedEditDistanceBirthmarkComparator.java | 8 +- ...ndedEditDistanceBirthmarkComparatorService.java | 72 +- .../comparators/LogicalAndBirthmarkComparator.java | 8 +- .../LogicalAndBirthmarkComparatorService.java | 72 +- .../comparators/PlainBirthmarkComparator.java | 10 +- .../PlainBirthmarkComparatorService.java | 72 +- ...alueOfFieldVariableBirthmarkExtractVisitor.java | 318 ++--- ...tantValueOfFieldVariableBirthmarkExtractor.java | 14 +- ...nstantValueOfFieldVariableBirthmarkService.java | 152 +- .../cvfv/TypeAndValueBirthmarkElement.java | 4 +- .../AbstractBirthmarkExtractorService.java | 130 +- .../extractors/BirthmarkExtractorFactory.java | 148 +- ...ueOfFieldVariableBirthmarkExtractorService.java | 70 +- ...equencyMethodCallBirthmarkExtractorService.java | 70 +- ...quencyUsedClassesBirthmarkExtractorService.java | 70 +- ...eritanceStructureBirthmarkExtractorService.java | 70 +- .../KGramBasedBirthmarkExtractorService.java | 70 +- ...uentialMethodCallBirthmarkExtractorService.java | 70 +- .../UsedClassesBirthmarkExtractorService.java | 70 +- .../fmc/FrequencyMethodCallBirthmarkExtractor.java | 20 +- .../fmc/FrequencyMethodCallBirthmarkService.java | 108 +- .../FrequencyUsedClassesBirthmarkExtractor.java | 18 +- .../fuc/FrequencyUsedClassesBirthmarkService.java | 106 +- ...nheritanceStructureBirthmarkExtractVisitor.java | 114 +- .../is/InheritanceStructureBirthmarkExtractor.java | 18 +- .../is/InheritanceStructureBirthmarkService.java | 94 +- .../stigmata/birthmarks/kgram/KGram.java | 290 ++-- .../kgram/KGramBasedBirthmarkElement.java | 70 +- .../kgram/KGramBasedBirthmarkExtractVisitor.java | 130 +- .../kgram/KGramBasedBirthmarkExtractor.java | 14 +- .../kgram/KGramBasedBirthmarkService.java | 124 +- .../kgram/OpcodeExtractionMethodVisitor.java | 198 +-- .../birthmarks/smc/MethodCallBirthmarkElement.java | 4 +- ...equentialMethodCallBirthmarkExtractVisitor.java | 92 +- .../SequentialMethodCallBirthmarkExtractor.java | 14 +- .../smc/SequentialMethodCallBirthmarkService.java | 114 +- .../birthmarks/uc/UsedClassesBirthmark.java | 94 +- .../uc/UsedClassesBirthmarkExtractVisitor.java | 398 +++--- .../uc/UsedClassesBirthmarkExtractor.java | 14 +- .../birthmarks/uc/UsedClassesBirthmarkService.java | 94 +- .../stigmata/event/BirthmarkEngineAdapter.java | 48 +- .../stigmata/event/BirthmarkEngineEvent.java | 78 +- .../stigmata/event/BirthmarkEngineListener.java | 44 +- .../stigmata/event/OperationStage.java | 16 +- .../stigmata/event/OperationType.java | 38 +- .../stigmata/event/WarningMessages.java | 94 +- .../filter/AbstractComparisonPairFilter.java | 96 +- .../AbstractComparisonPairFilterService.java | 68 +- .../BirthmarkElementCountComparisonPairFilter.java | 356 ++--- ...arkElementCountComparisonPairFilterService.java | 54 +- .../filter/ComparisonPairFilterManager.java | 316 ++--- .../stigmata/filter/Criterion.java | 50 +- .../stigmata/filter/FilterTarget.java | 28 +- .../filter/FilteredComparisonResultSet.java | 314 ++--- .../filter/SimilarityComparisonPairFilter.java | 200 +-- .../SimilarityComparisonPairFilterService.java | 52 +- .../filter/TargetNameComparisonPairFilter.java | 338 ++--- .../TargetNameComparisonPairFilterService.java | 54 +- .../TotalElementCountComparisonPairFilter.java | 332 ++--- ...talElementCountComparisonPairFilterService.java | 54 +- .../stigmata/hook/AbstractStigmataHookService.java | 4 +- .../stigmata/hook/MultipleStigmataHook.java | 136 +- .../se => sourceforge}/stigmata/hook/Phase.java | 40 +- .../stigmata/hook/StigmataHook.java | 30 +- .../stigmata/hook/StigmataHookManager.java | 154 +-- .../stigmata/hook/StigmataRuntimeHook.java | 22 +- .../printer/AbstractBirthmarkServicePrinter.java | 76 +- .../printer/AbstractComparisonPairPrinter.java | 74 +- .../AbstractComparisonResultSetPrinter.java | 76 +- .../AbstractExtractionResultSetPrinter.java | 76 +- .../stigmata/printer/BirthmarkServicePrinter.java | 46 +- .../stigmata/printer/ComparisonPairPrinter.java | 40 +- .../printer/ComparisonResultSetPrinter.java | 44 +- .../printer/ExtractionResultSetPrinter.java | 44 +- .../stigmata/printer/Printer.java | 18 +- .../stigmata/printer/PrinterManager.java | 114 +- .../printer/csv/BirthmarkServiceCsvPrinter.java | 68 +- .../printer/csv/ComparisonPairCsvPrinter.java | 58 +- .../printer/csv/ComparisonResultSetCsvPrinter.java | 170 +-- .../printer/csv/CsvResultPrinterService.java | 116 +- .../printer/csv/ExtractionResultSetCsvPrinter.java | 98 +- .../printer/xml/BirthmarkServiceXmlPrinter.java | 78 +- .../printer/xml/ComparisonPairXmlPrinter.java | 136 +- .../printer/xml/ComparisonResultSetXmlPrinter.java | 98 +- .../printer/xml/ExtractionResultSetXmlPrinter.java | 170 +-- .../printer/xml/XmlResultPrinterService.java | 116 +- .../stigmata/reader/ClassFileArchive.java | 60 +- .../stigmata/reader/ClassFileEntry.java | 70 +- .../stigmata/reader/ClasspathContext.java | 354 ++--- .../stigmata/reader/DefaultClassFileArchive.java | 234 ++-- .../stigmata/reader/JarClassFileArchive.java | 190 +-- .../stigmata/reader/WarClassFileArchive.java | 148 +- .../result/AbstractComparisonResultSet.java | 184 +-- .../result/AbstractExtractionResultSet.java | 402 +++--- .../result/CertainPairComparisonResultSet.java | 526 +++---- .../result/MemoryExtractedBirthmarkService.java | 80 +- .../stigmata/result/MemoryExtractionResultSet.java | 326 ++--- .../result/RDBExtractedBirthmarkService.java | 84 +- .../stigmata/result/RDBExtractionResultSet.java | 22 +- .../result/RoundRobinComparisonResultSet.java | 444 +++--- .../stigmata/result/SingleExtractionResultSet.java | 202 +-- .../result/XmlFileExtractedBirthmarkService.java | 120 +- .../result/XmlFileExtractionResultSet.java | 32 +- .../result/history/ExtractedBirthmarkHistory.java | 4 +- .../history/ExtractedBirthmarkServiceManager.java | 12 +- .../history/MemoryExtractedBirthmarkHistory.java | 98 +- .../history/RDBExtractedBirthmarkHistory.java | 10 +- .../history/XmlFileExtractedBirthmarkHistory.java | 10 +- .../stigmata/spi/AbstractServiceProvider.java | 76 +- .../stigmata/spi/BirthmarkComparatorSpi.java | 80 +- .../stigmata/spi/BirthmarkExtractorSpi.java | 80 +- .../stigmata/spi/BirthmarkSpi.java | 148 +- .../stigmata/spi/ComparisonPairFilterSpi.java | 54 +- .../stigmata/spi/ExtractedBirthmarkSpi.java | 62 +- .../stigmata/spi/ResultPrinterSpi.java | 64 +- .../stigmata/spi/ServiceProvider.java | 46 +- .../stigmata/spi/StigmataHookSpi.java | 60 +- .../stigmata/ui/swing/BirthmarkDefinitionPane.java | 850 ++++++------ .../ui/swing/BirthmarkExtractionResultPane.java | 180 +-- .../stigmata/ui/swing/BirthmarkSelectablePane.java | 306 ++--- .../stigmata/ui/swing/BirthmarkSelection.java | 86 +- .../ui/swing/BirthmarkSelectionCheckSetPane.java | 224 +-- .../ui/swing/BirthmarkSelectionListPane.java | 302 ++-- .../ui/swing/BirthmarkServiceListCellRenderer.java | 176 +-- .../ui/swing/BirthmarkServiceListener.java | 36 +- .../stigmata/ui/swing/BirthmarkTree.java | 4 +- .../stigmata/ui/swing/BirthmarkTreeNode.java | 8 +- .../stigmata/ui/swing/ClassNameObfuscator.java | 114 +- .../stigmata/ui/swing/ClasspathSettingsPane.java | 388 +++--- .../ui/swing/ClippedLRListCellRenderer.java | 210 +-- .../ui/swing/CompareTableCellRenderer.java | 198 +-- .../stigmata/ui/swing/ControlPane.java | 822 +++++------ .../stigmata/ui/swing/DataChangeListener.java | 36 +- .../stigmata/ui/swing/ExtensionFilter.java | 2 +- .../stigmata/ui/swing/ExtractedHistoryPane.java | 10 +- .../stigmata/ui/swing/FileIOManager.java | 254 ++-- .../stigmata/ui/swing/FilterManagementPane.java | 362 ++--- .../stigmata/ui/swing/FilterSelectionPane.java | 352 ++--- .../stigmata/ui/swing/GUIUtility.java | 396 +++--- .../stigmata/ui/swing/PairComparisonPane.java | 244 ++-- .../ui/swing/PairComparisonResultSetPane.java | 422 +++--- .../stigmata/ui/swing/PopupButton.java | 176 +-- .../stigmata/ui/swing/PropertyEditPane.java | 488 +++---- .../ui/swing/RoundRobinComparisonResultPane.java | 860 ++++++------ .../stigmata/ui/swing/StigmataFrame.java | 1448 ++++++++++---------- .../stigmata/ui/swing/TargetSelectionPane.java | 844 ++++++------ .../ui/swing/UnsupportedFormatException.java | 58 +- .../ui/swing/WellknownClassesSettingsPane.java | 656 ++++----- .../stigmata/ui/swing/actions/AboutAction.java | 108 +- .../ui/swing/actions/ChangeColorAction.java | 158 +-- .../stigmata/ui/swing/actions/LicenseAction.java | 56 +- .../stigmata/ui/swing/actions/LinkFollower.java | 76 +- .../stigmata/ui/swing/actions/PopupShowAction.java | 2 +- .../stigmata/ui/swing/actions/SaveAction.java | 202 +-- .../stigmata/ui/swing/actions/ShowTextAction.java | 198 +-- .../actions/UpdateBirthmarkCellColorAction.java | 266 ++-- ...stractComparisonPairFilterComponentService.java | 52 +- ...tCountComparisonPairFilterComponentService.java | 304 ++-- .../ComparisonPairFilterComponentService.java | 54 +- .../swing/filter/ComparisonPairFilterListener.java | 40 +- .../ui/swing/filter/ComparisonPairFilterPane.java | 166 +-- .../filter/ComparisonPairFilterRetainable.java | 50 +- .../ui/swing/filter/FilterEditingPane.java | 460 +++---- .../ui/swing/filter/FilterSetDefinitionPane.java | 536 ++++---- ...larityComparisonPairFilterComponentService.java | 256 ++-- ...etNameComparisonPairFilterComponentService.java | 210 +-- ...tCountComparisonPairFilterComponentService.java | 224 +-- .../graph/SimilarityDistributionGraphPane.java | 396 +++--- .../stigmata/ui/swing/mds/Coordinate.java | 216 +-- .../stigmata/ui/swing/mds/GeometoryType.java | 58 +- .../stigmata/ui/swing/mds/LabelMap.java | 232 ++-- .../stigmata/ui/swing/mds/MDSGraphPanel.java | 400 +++--- .../stigmata/ui/swing/mds/MDSGraphViewer.java | 588 ++++---- .../stigmata/ui/swing/mds/MDSImageExporter.java | 106 +- .../stigmata/ui/swing/mds/MDSMethod.java | 234 ++-- .../ui/swing/mds/MDSPointsLocationExporter.java | 74 +- .../stigmata/ui/swing/mds/MarkDrawer.java | 34 +- .../stigmata/ui/swing/mds/MarkIcon.java | 122 +- .../stigmata/ui/swing/mds/PointComponent.java | 274 ++-- .../ui/swing/mds/mark/AbstractMarkDrawer.java | 146 +- .../stigmata/ui/swing/mds/mark/CircleDrawer.java | 74 +- .../stigmata/ui/swing/mds/mark/CrossDrawer.java | 74 +- .../ui/swing/mds/mark/DownerTriangleDrawer.java | 98 +- .../stigmata/ui/swing/mds/mark/DrawerFactory.java | 106 +- .../stigmata/ui/swing/mds/mark/LineMarkDrawer.java | 68 +- .../ui/swing/mds/mark/RectangleDrawer.java | 74 +- .../stigmata/ui/swing/mds/mark/RhombusDrawer.java | 110 +- .../stigmata/ui/swing/mds/mark/StarDrawer.java | 74 +- .../ui/swing/mds/mark/UpperTriangleDrawer.java | 100 +- .../stigmata/ui/swing/mds/mark/XMarkDrawer.java | 68 +- .../stigmata/ui/swing/tab/EditableGlassPane.java | 106 +- .../stigmata/ui/swing/tab/EditableTabbedPane.java | 230 ++-- .../EditableTabbedPaneFocusTraversalPolicy.java | 104 +- .../stigmata/utils/ArrayIterator.java | 82 +- .../stigmata/utils/AsciiDataWritable.java | 38 +- .../stigmata/utils/BinaryDataWritable.java | 36 +- .../stigmata/utils/ConfigFileExporter.java | 352 ++--- .../stigmata/utils/ConfigFileImporter.java | 482 +++---- .../utils/LocalizedDescriptionManager.java | 134 +- .../stigmata/utils/MultipleIterator.java | 2 +- .../se => sourceforge}/stigmata/utils/Names.java | 2 +- .../stigmata/utils/NullIterator.java | 52 +- .../se => sourceforge}/stigmata/utils/Utility.java | 2 +- .../stigmata/utils/WarClassLoader.java | 142 +- .../stigmata/utils/WellknownClassJudgeRule.java | 2 +- .../stigmata/utils/WellknownClassManager.java | 6 +- ...jp.naist.se.stigmata.spi.BirthmarkComparatorSpi | 6 - .../jp.naist.se.stigmata.spi.BirthmarkExtractorSpi | 7 - .../services/jp.naist.se.stigmata.spi.BirthmarkSpi | 7 - ...p.naist.se.stigmata.spi.ComparisonPairFilterSpi | 4 - .../jp.naist.se.stigmata.spi.ExtractedBirthmarkSpi | 3 - .../jp.naist.se.stigmata.spi.ResultPrinterSpi | 2 - ...ing.filter.ComparisonPairFilterComponentService | 4 - ...sourceforge.stigmata.spi.BirthmarkComparatorSpi | 6 + ....sourceforge.stigmata.spi.BirthmarkExtractorSpi | 7 + .../jp.sourceforge.stigmata.spi.BirthmarkSpi | 7 + ...ourceforge.stigmata.spi.ComparisonPairFilterSpi | 4 + ....sourceforge.stigmata.spi.ExtractedBirthmarkSpi | 3 + .../jp.sourceforge.stigmata.spi.ResultPrinterSpi | 2 + ...=> jp.sourceforge.stigmata.spi.StigmataHookSpi} | 0 ...ing.filter.ComparisonPairFilterComponentService | 4 + src/main/resources/resources/options.properties | 2 +- src/main/resources/resources/options_ja.source | 2 +- src/main/resources/resources/stigmata.xml | 36 +- src/site/apt/download.apt | 4 +- src/site/apt/index.apt | 2 +- src/site/site.xml | 8 +- .../stigmata/ServiceListTest.java | 86 +- .../se => sourceforge}/stigmata/StigmataTest.java | 234 ++-- .../stigmata/birthmarks/BirthmarkCompareTest.java | 106 +- .../cvfv/CVFVBirthmarkExtractorTest.java | 206 +-- .../birthmarks/is/ISBirthmarkExtractorTest.java | 152 +- .../stigmata/birthmarks/kgram/KGramTest.java | 2 +- .../birthmarks/smc/SmcBirthmarkExtractorTest.java | 392 +++--- .../birthmarks/uc/UCBirthmarkExtractorTest.java | 196 +-- 288 files changed, 20669 insertions(+), 20664 deletions(-) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ApplicationInitializationError.java (91%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/Birthmark.java (97%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkComparator.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkComparisonFailedException.java (91%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkContext.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkElement.java (97%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkElementClassNotFoundException.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkEngine.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkEnvironment.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkException.java (90%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkExtractionFailedException.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkExtractor.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkSet.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkSpiComparator.java (87%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkStoreException.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkStoreTarget.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/BirthmarkTypeMismatchException.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ComparisonMethod.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ComparisonPair.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ComparisonPairElement.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ComparisonPairFilter.java (79%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ComparisonPairFilterSet.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ComparisonResultSet.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ExtractionResultSet.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ExtractionTarget.java (82%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ExtractionUnit.java (70%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ExtractorNotFoundException.java (90%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/FilterNotFoundException.java (90%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/Main.java (91%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/Stigmata.java (91%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/ASMBirthmarkExtractor.java (83%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/AbstractBirthmark.java (89%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/AbstractBirthmarkExtractor.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/AbstractBirthmarkService.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/BirthmarkExtractVisitor.java (84%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/BirthmarkService.java (91%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/FrequencyBirthmark.java (90%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/FrequencyBirthmarkElement.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/NullBirthmarkElement.java (84%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/PlainBirthmark.java (84%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/ValueCountable.java (82%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/AbstractBirthmarkComparator.java (75%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java (82%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparator.java (90%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java (71%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparator.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java (71%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparator.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java (72%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparator.java (83%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java (72%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparator.java (89%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java (71%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/PlainBirthmarkComparator.java (85%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java (72%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractVisitor.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractor.java (69%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkService.java (81%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/cvfv/TypeAndValueBirthmarkElement.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java (82%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java (87%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java (63%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java (63%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java (63%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java (63%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java (64%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java (63%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java (64%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractor.java (66%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkService.java (66%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractor.java (64%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkService.java (65%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractVisitor.java (78%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractor.java (77%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/is/InheritanceStructureBirthmarkService.java (69%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/kgram/KGram.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java (84%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java (73%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java (73%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/smc/MethodCallBirthmarkElement.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractVisitor.java (85%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractor.java (68%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkService.java (73%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/uc/UsedClassesBirthmark.java (84%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractVisitor.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractor.java (71%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java (68%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/event/BirthmarkEngineAdapter.java (87%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/event/BirthmarkEngineEvent.java (91%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/event/BirthmarkEngineListener.java (87%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/event/OperationStage.java (73%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/event/OperationType.java (82%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/event/WarningMessages.java (91%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/AbstractComparisonPairFilter.java (85%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/AbstractComparisonPairFilterService.java (76%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/BirthmarkElementCountComparisonPairFilter.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/BirthmarkElementCountComparisonPairFilterService.java (81%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/ComparisonPairFilterManager.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/Criterion.java (83%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/FilterTarget.java (79%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/FilteredComparisonResultSet.java (89%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/SimilarityComparisonPairFilter.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/SimilarityComparisonPairFilterService.java (80%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/TargetNameComparisonPairFilter.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/TargetNameComparisonPairFilterService.java (80%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/TotalElementCountComparisonPairFilter.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/filter/TotalElementCountComparisonPairFilterService.java (81%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/hook/AbstractStigmataHookService.java (89%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/hook/MultipleStigmataHook.java (88%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/hook/Phase.java (82%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/hook/StigmataHook.java (63%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/hook/StigmataHookManager.java (89%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/hook/StigmataRuntimeHook.java (64%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/AbstractBirthmarkServicePrinter.java (85%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/AbstractComparisonPairPrinter.java (85%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/AbstractComparisonResultSetPrinter.java (85%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/AbstractExtractionResultSetPrinter.java (84%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/BirthmarkServicePrinter.java (75%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/ComparisonPairPrinter.java (72%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/ComparisonResultSetPrinter.java (73%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/ExtractionResultSetPrinter.java (73%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/Printer.java (75%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/PrinterManager.java (84%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/csv/BirthmarkServiceCsvPrinter.java (77%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/csv/ComparisonPairCsvPrinter.java (75%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/csv/ComparisonResultSetCsvPrinter.java (87%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/csv/CsvResultPrinterService.java (72%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/csv/ExtractionResultSetCsvPrinter.java (74%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/xml/BirthmarkServiceXmlPrinter.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/xml/ComparisonPairXmlPrinter.java (88%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/xml/ComparisonResultSetXmlPrinter.java (80%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/xml/ExtractionResultSetXmlPrinter.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/printer/xml/XmlResultPrinterService.java (72%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/reader/ClassFileArchive.java (90%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/reader/ClassFileEntry.java (88%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/reader/ClasspathContext.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/reader/DefaultClassFileArchive.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/reader/JarClassFileArchive.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/reader/WarClassFileArchive.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/AbstractComparisonResultSet.java (85%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/AbstractExtractionResultSet.java (90%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/CertainPairComparisonResultSet.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/MemoryExtractedBirthmarkService.java (64%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/MemoryExtractionResultSet.java (90%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/RDBExtractedBirthmarkService.java (64%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/RDBExtractionResultSet.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/RoundRobinComparisonResultSet.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/SingleExtractionResultSet.java (85%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/XmlFileExtractedBirthmarkService.java (73%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/XmlFileExtractionResultSet.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/history/ExtractedBirthmarkHistory.java (89%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/history/ExtractedBirthmarkServiceManager.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/history/MemoryExtractedBirthmarkHistory.java (84%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/history/RDBExtractedBirthmarkHistory.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/result/history/XmlFileExtractedBirthmarkHistory.java (88%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/spi/AbstractServiceProvider.java (91%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/spi/BirthmarkComparatorSpi.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/spi/BirthmarkExtractorSpi.java (87%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/spi/BirthmarkSpi.java (83%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/spi/ComparisonPairFilterSpi.java (80%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/spi/ExtractedBirthmarkSpi.java (67%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/spi/ResultPrinterSpi.java (65%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/spi/ServiceProvider.java (85%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/spi/StigmataHookSpi.java (75%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/BirthmarkDefinitionPane.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/BirthmarkExtractionResultPane.java (83%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/BirthmarkSelectablePane.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/BirthmarkSelection.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/BirthmarkSelectionCheckSetPane.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/BirthmarkSelectionListPane.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/BirthmarkServiceListCellRenderer.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/BirthmarkServiceListener.java (69%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/BirthmarkTree.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/BirthmarkTreeNode.java (90%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/ClassNameObfuscator.java (88%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/ClasspathSettingsPane.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/ClippedLRListCellRenderer.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/CompareTableCellRenderer.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/ControlPane.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/DataChangeListener.java (80%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/ExtensionFilter.java (97%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/ExtractedHistoryPane.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/FileIOManager.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/FilterManagementPane.java (90%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/FilterSelectionPane.java (91%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/GUIUtility.java (96%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/PairComparisonPane.java (89%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/PairComparisonResultSetPane.java (90%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/PopupButton.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/PropertyEditPane.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/RoundRobinComparisonResultPane.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/StigmataFrame.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/TargetSelectionPane.java (96%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/UnsupportedFormatException.java (88%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/WellknownClassesSettingsPane.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/actions/AboutAction.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/actions/ChangeColorAction.java (91%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/actions/LicenseAction.java (74%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/actions/LinkFollower.java (91%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/actions/PopupShowAction.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/actions/SaveAction.java (89%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/actions/ShowTextAction.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/actions/UpdateBirthmarkCellColorAction.java (91%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/filter/AbstractComparisonPairFilterComponentService.java (80%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/filter/BirthmarkElementCountComparisonPairFilterComponentService.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/filter/ComparisonPairFilterComponentService.java (72%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/filter/ComparisonPairFilterListener.java (75%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/filter/ComparisonPairFilterPane.java (84%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/filter/ComparisonPairFilterRetainable.java (72%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/filter/FilterEditingPane.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/filter/FilterSetDefinitionPane.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/filter/SimilarityComparisonPairFilterComponentService.java (89%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/filter/TargetNameComparisonPairFilterComponentService.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/filter/TotalElementCountComparisonPairFilterComponentService.java (87%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/graph/SimilarityDistributionGraphPane.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/Coordinate.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/GeometoryType.java (85%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/LabelMap.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/MDSGraphPanel.java (88%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/MDSGraphViewer.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/MDSImageExporter.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/MDSMethod.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/MDSPointsLocationExporter.java (81%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/MarkDrawer.java (80%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/MarkIcon.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/PointComponent.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/mark/AbstractMarkDrawer.java (88%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/mark/CircleDrawer.java (88%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/mark/CrossDrawer.java (88%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/mark/DownerTriangleDrawer.java (90%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/mark/DrawerFactory.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/mark/LineMarkDrawer.java (85%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/mark/RectangleDrawer.java (88%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/mark/RhombusDrawer.java (91%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/mark/StarDrawer.java (89%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/mark/UpperTriangleDrawer.java (90%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/mds/mark/XMarkDrawer.java (87%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/tab/EditableGlassPane.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/tab/EditableTabbedPane.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/ui/swing/tab/EditableTabbedPaneFocusTraversalPolicy.java (92%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/utils/ArrayIterator.java (89%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/utils/AsciiDataWritable.java (70%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/utils/BinaryDataWritable.java (71%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/utils/ConfigFileExporter.java (93%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/utils/ConfigFileImporter.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/utils/LocalizedDescriptionManager.java (94%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/utils/MultipleIterator.java (97%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/utils/Names.java (96%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/utils/NullIterator.java (86%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/utils/Utility.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/utils/WarClassLoader.java (95%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/utils/WellknownClassJudgeRule.java (98%) rename src/main/java/jp/{naist/se => sourceforge}/stigmata/utils/WellknownClassManager.java (96%) delete mode 100755 src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.BirthmarkComparatorSpi delete mode 100755 src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.BirthmarkExtractorSpi delete mode 100755 src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.BirthmarkSpi delete mode 100755 src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.ComparisonPairFilterSpi delete mode 100755 src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.ExtractedBirthmarkSpi delete mode 100755 src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.ResultPrinterSpi delete mode 100755 src/main/resources/META-INF/services/jp.naist.se.stigmata.ui.swing.filter.ComparisonPairFilterComponentService create mode 100755 src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi create mode 100755 src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi create mode 100755 src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkSpi create mode 100755 src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi create mode 100755 src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi create mode 100755 src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ResultPrinterSpi rename src/main/resources/META-INF/services/{jp.naist.se.stigmata.spi.StigmataHookSpi => jp.sourceforge.stigmata.spi.StigmataHookSpi} (100%) create mode 100755 src/main/resources/META-INF/services/jp.sourceforge.stigmata.ui.swing.filter.ComparisonPairFilterComponentService rename src/test/java/jp/{naist/se => sourceforge}/stigmata/ServiceListTest.java (94%) rename src/test/java/jp/{naist/se => sourceforge}/stigmata/StigmataTest.java (74%) rename src/test/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/BirthmarkCompareTest.java (69%) rename src/test/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/cvfv/CVFVBirthmarkExtractorTest.java (70%) rename src/test/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java (75%) rename src/test/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/kgram/KGramTest.java (98%) rename src/test/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java (93%) rename src/test/java/jp/{naist/se => sourceforge}/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java (87%) diff --git a/README.txt b/README.txt index e6669e8..e0abb54 100755 --- a/README.txt +++ b/README.txt @@ -56,11 +56,10 @@ * Author Name: Haruaki TAMADA, Ph.D. - Affiliation: Software Engineering Laboratory, Graduate School of - Information and Science, Nara Institute of Science and - Technology - E-mail: harua-t[ at ]is.naist.jp - Web Page: http://se.naist.jp/~harua-t/ + Affiliation: Department of Computer Science, Faculty of Computer + Science and Engineering, Kyoto Sangyo University + E-mail: tama3[ at ]users.sourceforge.jp + Web Page: http://stigmata.sourceforge.jp/ Please notify us some bugs and requests to mailto:stigmata-info[ at ]lists.sourceforge.jp diff --git a/pom.xml b/pom.xml index b5116bc..94c78c9 100755 --- a/pom.xml +++ b/pom.xml @@ -1,7 +1,7 @@ 4.0.0 - jp.naist.se + jp.sourceforge stigmata 1.2.0 stigmata @@ -26,16 +26,16 @@ tama Haruaki TAMADA - harua-t[ at ]is.naist.jp - NAIST, Software Engineering Lab. - http://se.naist.jp/ + tama3[ at ]users.sourceforge.jp + sourceforge.jp + http://sourceforge.jp/ -9 - Software Engineering Lab., NAIST - http://se.naist.jp/ + Kyoto Sangyo University, Japan + http://www.kyoto-su.ac.jp/ @@ -154,7 +154,7 @@ - jp.naist.se.stigmata.Main + jp.sourceforge.stigmata.Main true true diff --git a/src/bin/stigmata.nsi b/src/bin/stigmata.nsi index 497578e..c712bec 100755 --- a/src/bin/stigmata.nsi +++ b/src/bin/stigmata.nsi @@ -24,9 +24,9 @@ ShowInstDetails nevershow VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "Stigmata" VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "Stigmata: Java birthmark toolkit" -VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "Software Engineering Lab., NAIST, Japan" +VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "Kyoto Sangyo University, Japan" VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "${VERSION}" -VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "Copyright (C) 2004-2007 by Haruaki Tamada" +VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "Copyright (C) 2004-2008 by Haruaki Tamada" VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Java birthmark toolkit" VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${VERSION}" @@ -69,10 +69,12 @@ Section "running-stigmata" File "..\..\target\commons-logging-1.0.3.jar" File "..\..\target\BrowserLauncher2-1.3.jar" File "..\..\target\Jama-1.0.2.jar" - File "..\..\target\xmlcli-1.2.2.jar" File "..\..\target\asm-all-2.2.3.jar" File "..\..\target\stax-1.2.0.jar" File "..\..\target\stax-api-1.0.1.jar" + File "..\..\target\xmlcli-1.2.2.jar" + File "..\..\target\mds-1.0.0.jar" + File "..\..\target\i18n-1.0.1.jar" StrCpy $R0 '$R0 -Dexecution.directory="$EXEDIR" -jar "${JARFILE}" $R1' !ifdef SPLASH_IMAGE @@ -84,16 +86,18 @@ Section "running-stigmata" ExecWait "$R0" Delete "$TEMP\${JARFILE}" - Delete "$TEMP\target\commons-beanutils-1.7.0.jar" - Delete "$TEMP\target\commons-cli-1.1.jar" - Delete "$TEMP\target\commons-dbutils-1.1.jar" - Delete "$TEMP\target\commons-logging-1.0.3.jar" - Delete "$TEMP\target\BrowserLauncher2-1.3.jar" - Delete "$TEMP\target\Jama-1.0.2.jar" - Delete "$TEMP\target\xmlcli-1.2.2.jar" - Delete "$TEMP\target\asm-all-2.2.3.jar" - Delete "$TEMP\target\stax-1.2.0.jar" - Delete "$TEMP\target\stax-api-1.0.1.jar" + Delete "$TEMP\commons-beanutils-1.7.0.jar" + Delete "$TEMP\commons-cli-1.1.jar" + Delete "$TEMP\commons-dbutils-1.1.jar" + Delete "$TEMP\commons-logging-1.0.3.jar" + Delete "$TEMP\BrowserLauncher2-1.3.jar" + Delete "$TEMP\Jama-1.0.2.jar" + Delete "$TEMP\asm-all-2.2.3.jar" + Delete "$TEMP\stax-1.2.0.jar" + Delete "$TEMP\stax-api-1.0.1.jar" + Delete "$TEMP\xmlcli-1.2.2.jar" + Delete "$TEMP\mds-1.0.0.jar" + Delete "$TEMP\i18n-1.0.1.jar" Quit @@ -131,4 +135,4 @@ Function GetParameters Pop $R2 Pop $R1 Exch $R0 -FunctionEnd \ No newline at end of file +FunctionEnd diff --git a/src/main/assembly/macosx/Info.plist b/src/main/assembly/macosx/Info.plist index 069993f..09be90f 100755 --- a/src/main/assembly/macosx/Info.plist +++ b/src/main/assembly/macosx/Info.plist @@ -25,7 +25,7 @@ Java MainClass - jp.naist.se.stigmata.Main + jp.sourceforge.stigmata.Main JVMVersion 1.5+ ClassPath @@ -41,6 +41,8 @@ $JAVAROOT/BrowserLauncher2-1.3.jar $JAVAROOT/Jama-1.0.2.jar $JAVAROOT/xmlcli-1.2.2.jar + $JAVAROOT/mds-1.0.0.jar + $JAVAROOT/i18n-1.0.1.jar Properties diff --git a/src/main/java/jp/naist/se/stigmata/ApplicationInitializationError.java b/src/main/java/jp/sourceforge/stigmata/ApplicationInitializationError.java similarity index 91% rename from src/main/java/jp/naist/se/stigmata/ApplicationInitializationError.java rename to src/main/java/jp/sourceforge/stigmata/ApplicationInitializationError.java index 3e84be1..f3b2053 100644 --- a/src/main/java/jp/naist/se/stigmata/ApplicationInitializationError.java +++ b/src/main/java/jp/sourceforge/stigmata/ApplicationInitializationError.java @@ -1,31 +1,31 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -/** - * Thrown an application fails to launch in initialization. - * This error causes invalid deployment. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ApplicationInitializationError extends Error{ - private static final long serialVersionUID = 32097456654328L; - - public ApplicationInitializationError(){ - } - - public ApplicationInitializationError(String message){ - super(message); - } - - public ApplicationInitializationError(String message, Throwable cause){ - super(message, cause); - } - - public ApplicationInitializationError(Throwable cause){ - super(cause); - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +/** + * Thrown an application fails to launch in initialization. + * This error causes invalid deployment. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ApplicationInitializationError extends Error{ + private static final long serialVersionUID = 32097456654328L; + + public ApplicationInitializationError(){ + } + + public ApplicationInitializationError(String message){ + super(message); + } + + public ApplicationInitializationError(String message, Throwable cause){ + super(message, cause); + } + + public ApplicationInitializationError(Throwable cause){ + super(cause); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/Birthmark.java b/src/main/java/jp/sourceforge/stigmata/Birthmark.java similarity index 97% rename from src/main/java/jp/naist/se/stigmata/Birthmark.java rename to src/main/java/jp/sourceforge/stigmata/Birthmark.java index 80291dc..6b4f528 100644 --- a/src/main/java/jp/naist/se/stigmata/Birthmark.java +++ b/src/main/java/jp/sourceforge/stigmata/Birthmark.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata; +package jp.sourceforge.stigmata; /* * $Id$ diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkComparator.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/BirthmarkComparator.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkComparator.java index aba1c2d..3ef697e 100644 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkComparator.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata; +package jp.sourceforge.stigmata; /* * $Id$ diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkComparisonFailedException.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkComparisonFailedException.java similarity index 91% rename from src/main/java/jp/naist/se/stigmata/BirthmarkComparisonFailedException.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkComparisonFailedException.java index 03d0ef3..823eb55 100755 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkComparisonFailedException.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkComparisonFailedException.java @@ -1,30 +1,30 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -/** - * Thrown to indicate failed to compare two birthmarks. - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class BirthmarkComparisonFailedException extends BirthmarkException{ - private static final long serialVersionUID = 3194872113405859851L; - - public BirthmarkComparisonFailedException(){ - } - - public BirthmarkComparisonFailedException(String message){ - super(message); - } - - public BirthmarkComparisonFailedException(Throwable cause){ - super(cause); - } - - public BirthmarkComparisonFailedException(String message, Throwable cause){ - super(message, cause); - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +/** + * Thrown to indicate failed to compare two birthmarks. + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class BirthmarkComparisonFailedException extends BirthmarkException{ + private static final long serialVersionUID = 3194872113405859851L; + + public BirthmarkComparisonFailedException(){ + } + + public BirthmarkComparisonFailedException(String message){ + super(message); + } + + public BirthmarkComparisonFailedException(Throwable cause){ + super(cause); + } + + public BirthmarkComparisonFailedException(String message, Throwable cause){ + super(message, cause); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkContext.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkContext.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/BirthmarkContext.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkContext.java index 747e4f3..1f362f1 100755 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkContext.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkContext.java @@ -1,169 +1,169 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -/** - * Birthmark runtime context. - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class BirthmarkContext{ - private BirthmarkEnvironment environment; - - private ComparisonMethod method = ComparisonMethod.ROUND_ROBIN_SAME_PAIR; - private ExtractionUnit unit = ExtractionUnit.CLASS; - private BirthmarkStoreTarget store = BirthmarkStoreTarget.MEMORY; - - private List birthmarkTypes = new ArrayList(); - private List filterTypes = new ArrayList(); - private Map nameMappings = new HashMap(); - - /** - * self constructor. - */ - public BirthmarkContext(BirthmarkContext context){ - this.environment = context.getEnvironment(); - this.method = context.getComparisonMethod(); - this.unit = context.getExtractionUnit(); - this.birthmarkTypes = new ArrayList(context.birthmarkTypes); - this.filterTypes = new ArrayList(context.filterTypes); - this.nameMappings = new HashMap(context.nameMappings); - } - - public BirthmarkContext(BirthmarkEnvironment environment){ - this.environment = environment; - } - - public BirthmarkEnvironment getEnvironment(){ - return environment; - } - - public boolean hasNameMapping(){ - return getNameMappingCount() > 0; - } - - public int getNameMappingCount(){ - return nameMappings.size(); - } - - public String getNameMapping(String key){ - return nameMappings.get(key); - } - - public void addNameMapping(String name1, String name2){ - nameMappings.put(name1, name2); - } - - public void removeNameMapping(String name1){ - nameMappings.remove(name1); - } - - public Map getNameMappings(){ - return Collections.unmodifiableMap(nameMappings); - } - - public Iterator> nameMappingEntries(){ - return getNameMappings().entrySet().iterator(); - } - - public void setNameMappings(Map mappings){ - nameMappings.clear(); - for(Iterator> i = mappings.entrySet().iterator(); i.hasNext(); ){ - Map.Entry entry = i.next(); - addNameMapping(entry.getKey(), entry.getValue()); - } - } - - public void setBirthmarkTypes(String[] types){ - birthmarkTypes.clear(); - for(int i = 0; i < types.length; i++){ - addBirthmarkType(types[i]); - } - } - - public void addBirthmarkType(String type){ - if(!birthmarkTypes.contains(type)){ - birthmarkTypes.add(type); - } - } - - public void removeBirthmarkType(String type){ - birthmarkTypes.remove(type); - } - - public synchronized String[] getBirthmarkTypes(){ - return birthmarkTypes.toArray(new String[getBirthmarkTypeSize()]); - } - - public int getBirthmarkTypeSize(){ - return birthmarkTypes.size(); - } - - public ComparisonMethod getComparisonMethod(){ - return method; - } - - public void setComparisonMethod(ComparisonMethod method){ - this.method = method; - } - - public ExtractionUnit getExtractionUnit(){ - return unit; - } - - public void setExtractionUnit(ExtractionUnit unit){ - this.unit = unit; - } - - public BirthmarkStoreTarget getStoreTarget(){ - return store; - } - - public void setStoreTarget(BirthmarkStoreTarget store){ - this.store = store; - } - - public boolean hasFilter(){ - return filterTypes.size() > 0; - } - - public void setFilterTypes(String[] filterTypes){ - if(filterTypes != null){ - for(int i = 0; i < filterTypes.length; i++){ - addFilterType(filterTypes[i]); - } - } - } - - public void addFilterType(String filterType){ - if(filterType != null){ - filterTypes.add(filterType); - } - } - - public void removeFilterType(String filterType){ - filterTypes.remove(filterType); - } - - public synchronized String[] getFilterTypes(){ - return filterTypes.toArray(new String[getFilterTypesCount()]); - } - - public Iterator filterTypes(){ - return filterTypes.iterator(); - } - - public int getFilterTypesCount(){ - return filterTypes.size(); - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +/** + * Birthmark runtime context. + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class BirthmarkContext{ + private BirthmarkEnvironment environment; + + private ComparisonMethod method = ComparisonMethod.ROUND_ROBIN_SAME_PAIR; + private ExtractionUnit unit = ExtractionUnit.CLASS; + private BirthmarkStoreTarget store = BirthmarkStoreTarget.MEMORY; + + private List birthmarkTypes = new ArrayList(); + private List filterTypes = new ArrayList(); + private Map nameMappings = new HashMap(); + + /** + * self constructor. + */ + public BirthmarkContext(BirthmarkContext context){ + this.environment = context.getEnvironment(); + this.method = context.getComparisonMethod(); + this.unit = context.getExtractionUnit(); + this.birthmarkTypes = new ArrayList(context.birthmarkTypes); + this.filterTypes = new ArrayList(context.filterTypes); + this.nameMappings = new HashMap(context.nameMappings); + } + + public BirthmarkContext(BirthmarkEnvironment environment){ + this.environment = environment; + } + + public BirthmarkEnvironment getEnvironment(){ + return environment; + } + + public boolean hasNameMapping(){ + return getNameMappingCount() > 0; + } + + public int getNameMappingCount(){ + return nameMappings.size(); + } + + public String getNameMapping(String key){ + return nameMappings.get(key); + } + + public void addNameMapping(String name1, String name2){ + nameMappings.put(name1, name2); + } + + public void removeNameMapping(String name1){ + nameMappings.remove(name1); + } + + public Map getNameMappings(){ + return Collections.unmodifiableMap(nameMappings); + } + + public Iterator> nameMappingEntries(){ + return getNameMappings().entrySet().iterator(); + } + + public void setNameMappings(Map mappings){ + nameMappings.clear(); + for(Iterator> i = mappings.entrySet().iterator(); i.hasNext(); ){ + Map.Entry entry = i.next(); + addNameMapping(entry.getKey(), entry.getValue()); + } + } + + public void setBirthmarkTypes(String[] types){ + birthmarkTypes.clear(); + for(int i = 0; i < types.length; i++){ + addBirthmarkType(types[i]); + } + } + + public void addBirthmarkType(String type){ + if(!birthmarkTypes.contains(type)){ + birthmarkTypes.add(type); + } + } + + public void removeBirthmarkType(String type){ + birthmarkTypes.remove(type); + } + + public synchronized String[] getBirthmarkTypes(){ + return birthmarkTypes.toArray(new String[getBirthmarkTypeSize()]); + } + + public int getBirthmarkTypeSize(){ + return birthmarkTypes.size(); + } + + public ComparisonMethod getComparisonMethod(){ + return method; + } + + public void setComparisonMethod(ComparisonMethod method){ + this.method = method; + } + + public ExtractionUnit getExtractionUnit(){ + return unit; + } + + public void setExtractionUnit(ExtractionUnit unit){ + this.unit = unit; + } + + public BirthmarkStoreTarget getStoreTarget(){ + return store; + } + + public void setStoreTarget(BirthmarkStoreTarget store){ + this.store = store; + } + + public boolean hasFilter(){ + return filterTypes.size() > 0; + } + + public void setFilterTypes(String[] filterTypes){ + if(filterTypes != null){ + for(int i = 0; i < filterTypes.length; i++){ + addFilterType(filterTypes[i]); + } + } + } + + public void addFilterType(String filterType){ + if(filterType != null){ + filterTypes.add(filterType); + } + } + + public void removeFilterType(String filterType){ + filterTypes.remove(filterType); + } + + public synchronized String[] getFilterTypes(){ + return filterTypes.toArray(new String[getFilterTypesCount()]); + } + + public Iterator filterTypes(){ + return filterTypes.iterator(); + } + + public int getFilterTypesCount(){ + return filterTypes.size(); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkElement.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkElement.java similarity index 97% rename from src/main/java/jp/naist/se/stigmata/BirthmarkElement.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkElement.java index fb95471..e25adaa 100644 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkElement.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkElement.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata; +package jp.sourceforge.stigmata; /* * $Id$ diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkElementClassNotFoundException.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkElementClassNotFoundException.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/BirthmarkElementClassNotFoundException.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkElementClassNotFoundException.java index 2236b8e..ff8f50e 100644 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkElementClassNotFoundException.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkElementClassNotFoundException.java @@ -1,56 +1,56 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.List; - -/** - * Thrown if extracting birthmark is failed to find a class definition. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkElementClassNotFoundException extends - BirthmarkExtractionFailedException { - private static final long serialVersionUID = 3256723476854L; - - /** - * class name list, which names are failed to load. - */ - private List classnames = new ArrayList(); - - /** - * - */ - public void addClassName(String name){ - classnames.add(name); - } - - @Override - public boolean isFailed(){ - return super.isFailed() || classnames.size() > 0; - } - - /** - * returns an array of class names which are failed loading. - */ - public synchronized String[] getClassNames(){ - return classnames.toArray(new String[classnames.size()]); - } - - @Override - public String getMessage(){ - StringBuffer sb = new StringBuffer(); - boolean first = true; - for(String value: classnames){ - if(!first){ - sb.append(", "); - } - sb.append(value); - } - return new String(sb); - } +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.List; + +/** + * Thrown if extracting birthmark is failed to find a class definition. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkElementClassNotFoundException extends + BirthmarkExtractionFailedException { + private static final long serialVersionUID = 3256723476854L; + + /** + * class name list, which names are failed to load. + */ + private List classnames = new ArrayList(); + + /** + * + */ + public void addClassName(String name){ + classnames.add(name); + } + + @Override + public boolean isFailed(){ + return super.isFailed() || classnames.size() > 0; + } + + /** + * returns an array of class names which are failed loading. + */ + public synchronized String[] getClassNames(){ + return classnames.toArray(new String[classnames.size()]); + } + + @Override + public String getMessage(){ + StringBuffer sb = new StringBuffer(); + boolean first = true; + for(String value: classnames){ + if(!first){ + sb.append(", "); + } + sb.append(value); + } + return new String(sb); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkEngine.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/BirthmarkEngine.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java index bf5295c..3597f98 100755 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkEngine.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java @@ -1,504 +1,504 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Stack; - -import jp.naist.se.stigmata.birthmarks.extractors.BirthmarkExtractorFactory; -import jp.naist.se.stigmata.event.BirthmarkEngineEvent; -import jp.naist.se.stigmata.event.BirthmarkEngineListener; -import jp.naist.se.stigmata.event.OperationStage; -import jp.naist.se.stigmata.event.OperationType; -import jp.naist.se.stigmata.event.WarningMessages; -import jp.naist.se.stigmata.filter.ComparisonPairFilterManager; -import jp.naist.se.stigmata.filter.FilteredComparisonResultSet; -import jp.naist.se.stigmata.hook.Phase; -import jp.naist.se.stigmata.hook.StigmataHookManager; -import jp.naist.se.stigmata.reader.ClassFileArchive; -import jp.naist.se.stigmata.reader.ClassFileEntry; -import jp.naist.se.stigmata.reader.ClasspathContext; -import jp.naist.se.stigmata.reader.DefaultClassFileArchive; -import jp.naist.se.stigmata.reader.JarClassFileArchive; -import jp.naist.se.stigmata.reader.WarClassFileArchive; -import jp.naist.se.stigmata.result.CertainPairComparisonResultSet; -import jp.naist.se.stigmata.result.RoundRobinComparisonResultSet; - -/** - * core engine for extracting/comparing/filtering birthmarks. - * - * This class is not thread safe. - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class BirthmarkEngine{ - private BirthmarkEnvironment environment; - private List listeners = new ArrayList(); - private Stack stack = new Stack(); - private WarningMessages warnings; - private OperationType latestOperationType; - private OperationType targetType; - private BirthmarkExtractorFactory factory; - - /** - * constructor. - */ - public BirthmarkEngine(BirthmarkEnvironment env){ - this.environment = env; - factory = new BirthmarkExtractorFactory(env); - } - - /** - * returns an environment of this object. - */ - public BirthmarkEnvironment getEnvironment(){ - return environment; - } - - public void addBirthmarkEngineListener(BirthmarkEngineListener listener){ - listeners.add(listener); - } - - public void removeBirthmarkEngineListener(BirthmarkEngineListener listener){ - listeners.remove(listener); - } - - /** - * filters comparison of birthmarks from target files. - * @see #extract(String[], BirthmarkContext) - * @see #compare(String[], BirthmarkContext) - * @see #filter(ComparisonResultSet) - * @see BirthmarkContext#getFilterTypes() - */ - public synchronized ComparisonResultSet filter(String[] target, BirthmarkContext context) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException, BirthmarkStoreException{ - operationStart(OperationType.FILTER_BIRTHMARKS); - - ComparisonResultSet crs = compare(target, context); - crs = filter(crs); - - operationDone(OperationType.FILTER_BIRTHMARKS); - - return crs; - } - - /** - * filters comparison of birthmarks from given two targets targetx, and targetY - * @see #extract(String[], String[], BirthmarkContext) - * @see #compare(String[], String[], BirthmarkContext) - * @see #filter(ComparisonResultSet) - * @see BirthmarkContext#getFilterTypes() - */ - public synchronized ComparisonResultSet filter(String[] targetX, String[] targetY, BirthmarkContext context) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException, BirthmarkStoreException{ - operationStart(OperationType.FILTER_BIRTHMARKS); - - ComparisonResultSet crs = compare(targetX, targetY, context); - crs = filter(crs); - - operationDone(OperationType.FILTER_BIRTHMARKS); - - return crs; - } - - /** - * filters comparison of birthmarks from given extraction result set. - * @see #compare(ExtractionResultSet) - * @see #filter(ComparisonResultSet) - * @see ExtractionResultSet#getContext() - * @see BirthmarkContext#getFilterTypes() - */ - public synchronized ComparisonResultSet filter(ExtractionResultSet er) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException{ - operationStart(OperationType.FILTER_BIRTHMARKS); - - ComparisonResultSet crs = compare(er); - crs = filter(crs); - - operationDone(OperationType.FILTER_BIRTHMARKS); - - return crs; - } - - /** - * filters comparison of birthmarks. - * @see ExtractionResultSet#getContext() - * @see BirthmarkContext#getFilterTypes() - */ - public synchronized ComparisonResultSet filter(ComparisonResultSet crs) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException{ - operationStart(OperationType.FILTER_BIRTHMARKS); - StigmataHookManager.getInstance().runHook(Phase.BEFORE_FILTERING, crs.getContext()); - - String[] filterTypes = crs.getContext().getFilterTypes(); - - if(filterTypes != null){ - List filterList = new ArrayList(); - ComparisonPairFilterManager manager = environment.getFilterManager(); - for(int i = 0; i < filterTypes.length; i++){ - ComparisonPairFilterSet fset = manager.getFilterSet(filterTypes[i]); - if(fset != null){ - filterList.add(fset); - } - else{ - warnings.addMessage(new FilterNotFoundException("filter not found"), filterTypes[i]); - } - } - ComparisonPairFilterSet[] cpfs = filterList.toArray(new ComparisonPairFilterSet[filterList.size()]); - - crs = new FilteredComparisonResultSet(crs, cpfs); - } - - StigmataHookManager.getInstance().runHook(Phase.AFTER_FILTERING, crs.getContext()); - operationDone(OperationType.FILTER_BIRTHMARKS); - - return crs; - } - - /** - * compares two given birthmarks and returns comparison pair. - */ - public synchronized ComparisonPair compareDetails(BirthmarkSet bs1, BirthmarkSet bs2, BirthmarkContext context) throws BirthmarkComparisonFailedException{ - return new ComparisonPair(bs1, bs2, context); - } - - public synchronized ComparisonResultSet compare(String[] target, BirthmarkContext context) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException, BirthmarkStoreException{ - operationStart(OperationType.COMPARE_BIRTHMARKS); - - ExtractionResultSet er = extract(target, context); - ComparisonResultSet crs = compare(er); - - operationDone(OperationType.COMPARE_BIRTHMARKS); - - return crs; - } - - public synchronized ComparisonResultSet compare(String[] targetX, String[] targetY, BirthmarkContext context) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException, BirthmarkStoreException{ - operationStart(OperationType.COMPARE_BIRTHMARKS); - - ExtractionResultSet er = extract(targetX, targetY, context); - ComparisonResultSet crs = compare(er); - - operationDone(OperationType.COMPARE_BIRTHMARKS); - - return crs; - } - - public synchronized ComparisonResultSet compare(ExtractionResultSet er) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException{ - operationStart(OperationType.COMPARE_BIRTHMARKS); - BirthmarkContext context = er.getContext(); - - StigmataHookManager.getInstance().runHook(Phase.BEFORE_COMPARISON, context); - ComparisonResultSet crs = null; - switch(context.getComparisonMethod()){ - case ROUND_ROBIN_SAME_PAIR: - crs = new RoundRobinComparisonResultSet(er, true); - break; - case ROUND_ROBIN_WITHOUT_SAME_PAIR: - crs = new RoundRobinComparisonResultSet(er, false); - break; - case ROUND_ROBIN_XY: - crs = new RoundRobinComparisonResultSet(er, true); - case GUESSED_PAIR: - crs = new CertainPairComparisonResultSet(er); - break; - case SPECIFIED_PAIR: - crs = new CertainPairComparisonResultSet(er, context.getNameMappings()); - break; - } - - StigmataHookManager.getInstance().runHook(Phase.AFTER_COMPARISON, context); - operationDone(OperationType.COMPARE_BIRTHMARKS); - - return crs; - } - - public synchronized ExtractionResultSet extract(String[] target, BirthmarkContext context) throws BirthmarkExtractionFailedException, BirthmarkStoreException{ - operationStart(OperationType.EXTRACT_BIRTHMARKS); - ExtractionResultSet er = extract(target, null, context); - operationDone(OperationType.EXTRACT_BIRTHMARKS); - return er; - } - - public synchronized ExtractionResultSet extract(String[] targetX, String[] targetY, BirthmarkContext context) throws BirthmarkExtractionFailedException, BirthmarkStoreException{ - operationStart(OperationType.EXTRACT_BIRTHMARKS); - ExtractionResultSet er = context.getEnvironment().getHistoryManager().createDefaultResultSet(context); - - try{ - StigmataHookManager.getInstance().runHook(Phase.BEFORE_EXTRACTION, context); - - switch(context.getComparisonMethod()){ - case ROUND_ROBIN_SAME_PAIR: - case ROUND_ROBIN_WITHOUT_SAME_PAIR: - er.setTableType(false); - String[] targetXY = mergeTarget(targetX, targetY); - extractImpl(targetXY, er, ExtractionTarget.TARGET_XY); - break; - case GUESSED_PAIR: - case SPECIFIED_PAIR: - case ROUND_ROBIN_XY: - default: - if(targetX == null || targetY == null){ - throw new BirthmarkExtractionFailedException("targetX or targetY is null"); - } - er.setTableType(true); - extractImpl(targetX, er, ExtractionTarget.TARGET_X); - extractImpl(targetY, er, ExtractionTarget.TARGET_Y); - break; - } - return er; - } catch(IOException e){ - throw new BirthmarkExtractionFailedException(e); - } finally{ - StigmataHookManager.getInstance().runHook(Phase.AFTER_EXTRACTION, context); - operationDone(OperationType.EXTRACT_BIRTHMARKS); - } - } - - private String[] mergeTarget(String[] t1, String[] t2){ - List list = new ArrayList(); - addToList(list, t1); - addToList(list, t2); - - return list.toArray(new String[list.size()]); - } - - private void addToList(List list, String[] target){ - if(target != null){ - for(String s: target){ - list.add(s); - } - } - } - - private BirthmarkSet[] extractImpl(String[] target, ExtractionResultSet er, ExtractionTarget et) throws BirthmarkExtractionFailedException, IOException, BirthmarkStoreException{ - ClassFileArchive[] archives = createArchives(target, environment); - BirthmarkContext context = er.getContext(); - ExtractionUnit unit = context.getExtractionUnit(); - - BirthmarkSet[] extractResult = null; - if(unit == ExtractionUnit.CLASS){ - extractFromClass(archives, er, et); - } - else if(unit == ExtractionUnit.PACKAGE){ - extractFromPackage(archives, er, et); - } - else if(unit == ExtractionUnit.ARCHIVE){ - extractFromProduct(archives, er, et); - } - - return extractResult; - } - - private byte[] inputStreamToByteArray(InputStream in) throws IOException{ - ByteArrayOutputStream bout = new ByteArrayOutputStream(); - int read; - byte[] dataBuffer = new byte[512]; - while((read = in.read(dataBuffer, 0, dataBuffer.length)) != -1){ - bout.write(dataBuffer, 0, read); - } - byte[] data = bout.toByteArray(); - - bout.close(); - return data; - } - - private void extractFromPackage(ClassFileArchive[] archives, ExtractionResultSet er, ExtractionTarget et) throws IOException, BirthmarkExtractionFailedException{ - Map map = new HashMap(); - BirthmarkContext context = er.getContext(); - - for(ClassFileArchive archive: archives){ - for(ClassFileEntry entry: archive){ - try{ - String name = entry.getClassName(); - String packageName = parsePackageName(name); - BirthmarkSet bs = map.get(packageName); - if(bs == null){ - bs = new BirthmarkSet(packageName, archive.getLocation()); - map.put(packageName, bs); - } - - byte[] data = inputStreamToByteArray(entry.getLocation().openStream()); - for(String birthmarkType: context.getBirthmarkTypes()){ - try{ - BirthmarkExtractor extractor = factory.getExtractor(birthmarkType); - if(extractor.isAcceptable(ExtractionUnit.PACKAGE)){ - Birthmark b = bs.getBirthmark(extractor.getProvider().getType()); - if(b == null){ - b = extractor.createBirthmark(); - bs.addBirthmark(b); - } - extractor.extract(b, new ByteArrayInputStream(data), er.getEnvironment()); - } - } catch(ExtractorNotFoundException e){ - warnings.addMessage(e, birthmarkType); - } - } - } catch(IOException e){ - warnings.addMessage(e, archive.getName()); - } - } - } - try{ - for(BirthmarkSet bs: map.values()){ - er.addBirthmarkSet(et, bs); - } - }catch(BirthmarkStoreException e){ - } - } - - private String parsePackageName(String name){ - String n = name.replace('/', '.'); - int index = n.lastIndexOf('.'); - if(index > 0){ - n = n.substring(0, index - 1); - } - - return n; - } - - private void extractFromClass(ClassFileArchive[] archives, ExtractionResultSet er, - ExtractionTarget et) throws IOException, BirthmarkExtractionFailedException, BirthmarkStoreException{ - BirthmarkContext context = er.getContext(); - - for(ClassFileArchive archive: archives){ - for(ClassFileEntry entry: archive){ - try{ - BirthmarkSet birthmarkset = new BirthmarkSet(entry.getClassName(), entry.getLocation()); - byte[] data = inputStreamToByteArray(entry.getLocation().openStream()); - - for(String birthmarkType: context.getBirthmarkTypes()){ - try{ - BirthmarkExtractor extractor = factory.getExtractor(birthmarkType); - if(extractor.isAcceptable(ExtractionUnit.CLASS)){ - Birthmark b = extractor.extract(new ByteArrayInputStream(data), er.getEnvironment()); - birthmarkset.addBirthmark(b); - } - } catch(ExtractorNotFoundException e){ - warnings.addMessage(e, birthmarkType); - } - } - er.addBirthmarkSet(et, birthmarkset); - } catch(IOException e){ - warnings.addMessage(e, entry.getClassName()); - } - } - } - } - - private void extractFromProduct(ClassFileArchive[] archives, ExtractionResultSet er, ExtractionTarget et) throws IOException, BirthmarkExtractionFailedException, BirthmarkStoreException{ - BirthmarkContext context = er.getContext(); - - for(ClassFileArchive archive: archives){ - BirthmarkSet birthmarkset = new BirthmarkSet(archive.getName(), archive.getLocation()); - - for(ClassFileEntry entry: archive){ - try{ - byte[] data = inputStreamToByteArray(entry.getLocation().openStream()); - for(String birthmarkType: context.getBirthmarkTypes()){ - try{ - BirthmarkExtractor extractor = factory.getExtractor(birthmarkType); - if(extractor.isAcceptable(ExtractionUnit.ARCHIVE)){ - Birthmark b = birthmarkset.getBirthmark(birthmarkType); - if(b == null){ - b = extractor.createBirthmark(); - birthmarkset.addBirthmark(b); - } - extractor.extract(b, new ByteArrayInputStream(data), er.getEnvironment()); - } - } catch(ExtractorNotFoundException e){ - warnings.addMessage(e, birthmarkType); - } - } - } catch(IOException e){ - warnings.addMessage(e, entry.getClassName()); - } - } - if(birthmarkset.getBirthmarksCount() != 0){ - er.addBirthmarkSet(et, birthmarkset); - } - } - } - - private ClassFileArchive[] createArchives(String[] files, BirthmarkEnvironment environment) throws IOException, MalformedURLException{ - ClasspathContext bytecode = environment.getClasspathContext(); - List archives = new ArrayList(); - for(int i = 0; i < files.length; i++){ - try{ - if(files[i].endsWith(".class")){ - archives.add(new DefaultClassFileArchive(files[i])); - } - else if(files[i].endsWith(".jar") || files[i].endsWith(".zip")){ - archives.add(new JarClassFileArchive(files[i])); - bytecode.addClasspath(new File(files[i]).toURI().toURL()); - } - else if(files[i].endsWith(".war")){ - archives.add(new WarClassFileArchive(files[i])); - } - } catch(IOException e){ - warnings.addMessage(e, files[i]); - } - } - return archives.toArray(new ClassFileArchive[archives.size()]); - } - - private void operationStart(OperationType type){ - if(warnings == null){ - warnings = new WarningMessages(type); - fireEvent(new BirthmarkEngineEvent(OperationStage.OPERATION_START, type, warnings)); - latestOperationType = type; - targetType = type; - } - stack.push(warnings); - /* - * call subOperationStart method only once when some operation is occured. - * Ex. extraction, comparison, filtering - */ - if(latestOperationType != type){ - fireEvent(new BirthmarkEngineEvent(OperationStage.SUB_OPERATION_START, type, warnings)); - latestOperationType = type; - } - } - - private void operationDone(OperationType type){ - if(latestOperationType != type && targetType != type){ - fireEvent(new BirthmarkEngineEvent(OperationStage.SUB_OPERATION_DONE, type, warnings)); - latestOperationType = type; - } - stack.pop(); - if(stack.size() == 0){ - fireEvent(new BirthmarkEngineEvent(OperationStage.OPERATION_DONE, type, warnings)); - warnings = null; - latestOperationType = null; - } - } - - private void fireEvent(BirthmarkEngineEvent e){ - for(BirthmarkEngineListener listener: listeners){ - switch(e.getStage()){ - case OPERATION_START: - listener.operationStart(e); - break; - case SUB_OPERATION_START: - listener.subOperationStart(e); - break; - case SUB_OPERATION_DONE: - listener.subOperationDone(e); - break; - case OPERATION_DONE: - listener.operationDone(e); - break; - default: - throw new InternalError("unknown stage: " + e.getStage()); - } - } - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Stack; + +import jp.sourceforge.stigmata.birthmarks.extractors.BirthmarkExtractorFactory; +import jp.sourceforge.stigmata.event.BirthmarkEngineEvent; +import jp.sourceforge.stigmata.event.BirthmarkEngineListener; +import jp.sourceforge.stigmata.event.OperationStage; +import jp.sourceforge.stigmata.event.OperationType; +import jp.sourceforge.stigmata.event.WarningMessages; +import jp.sourceforge.stigmata.filter.ComparisonPairFilterManager; +import jp.sourceforge.stigmata.filter.FilteredComparisonResultSet; +import jp.sourceforge.stigmata.hook.Phase; +import jp.sourceforge.stigmata.hook.StigmataHookManager; +import jp.sourceforge.stigmata.reader.ClassFileArchive; +import jp.sourceforge.stigmata.reader.ClassFileEntry; +import jp.sourceforge.stigmata.reader.ClasspathContext; +import jp.sourceforge.stigmata.reader.DefaultClassFileArchive; +import jp.sourceforge.stigmata.reader.JarClassFileArchive; +import jp.sourceforge.stigmata.reader.WarClassFileArchive; +import jp.sourceforge.stigmata.result.CertainPairComparisonResultSet; +import jp.sourceforge.stigmata.result.RoundRobinComparisonResultSet; + +/** + * core engine for extracting/comparing/filtering birthmarks. + * + * This class is not thread safe. + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class BirthmarkEngine{ + private BirthmarkEnvironment environment; + private List listeners = new ArrayList(); + private Stack stack = new Stack(); + private WarningMessages warnings; + private OperationType latestOperationType; + private OperationType targetType; + private BirthmarkExtractorFactory factory; + + /** + * constructor. + */ + public BirthmarkEngine(BirthmarkEnvironment env){ + this.environment = env; + factory = new BirthmarkExtractorFactory(env); + } + + /** + * returns an environment of this object. + */ + public BirthmarkEnvironment getEnvironment(){ + return environment; + } + + public void addBirthmarkEngineListener(BirthmarkEngineListener listener){ + listeners.add(listener); + } + + public void removeBirthmarkEngineListener(BirthmarkEngineListener listener){ + listeners.remove(listener); + } + + /** + * filters comparison of birthmarks from target files. + * @see #extract(String[], BirthmarkContext) + * @see #compare(String[], BirthmarkContext) + * @see #filter(ComparisonResultSet) + * @see BirthmarkContext#getFilterTypes() + */ + public synchronized ComparisonResultSet filter(String[] target, BirthmarkContext context) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException, BirthmarkStoreException{ + operationStart(OperationType.FILTER_BIRTHMARKS); + + ComparisonResultSet crs = compare(target, context); + crs = filter(crs); + + operationDone(OperationType.FILTER_BIRTHMARKS); + + return crs; + } + + /** + * filters comparison of birthmarks from given two targets targetx, and targetY + * @see #extract(String[], String[], BirthmarkContext) + * @see #compare(String[], String[], BirthmarkContext) + * @see #filter(ComparisonResultSet) + * @see BirthmarkContext#getFilterTypes() + */ + public synchronized ComparisonResultSet filter(String[] targetX, String[] targetY, BirthmarkContext context) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException, BirthmarkStoreException{ + operationStart(OperationType.FILTER_BIRTHMARKS); + + ComparisonResultSet crs = compare(targetX, targetY, context); + crs = filter(crs); + + operationDone(OperationType.FILTER_BIRTHMARKS); + + return crs; + } + + /** + * filters comparison of birthmarks from given extraction result set. + * @see #compare(ExtractionResultSet) + * @see #filter(ComparisonResultSet) + * @see ExtractionResultSet#getContext() + * @see BirthmarkContext#getFilterTypes() + */ + public synchronized ComparisonResultSet filter(ExtractionResultSet er) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException{ + operationStart(OperationType.FILTER_BIRTHMARKS); + + ComparisonResultSet crs = compare(er); + crs = filter(crs); + + operationDone(OperationType.FILTER_BIRTHMARKS); + + return crs; + } + + /** + * filters comparison of birthmarks. + * @see ExtractionResultSet#getContext() + * @see BirthmarkContext#getFilterTypes() + */ + public synchronized ComparisonResultSet filter(ComparisonResultSet crs) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException{ + operationStart(OperationType.FILTER_BIRTHMARKS); + StigmataHookManager.getInstance().runHook(Phase.BEFORE_FILTERING, crs.getContext()); + + String[] filterTypes = crs.getContext().getFilterTypes(); + + if(filterTypes != null){ + List filterList = new ArrayList(); + ComparisonPairFilterManager manager = environment.getFilterManager(); + for(int i = 0; i < filterTypes.length; i++){ + ComparisonPairFilterSet fset = manager.getFilterSet(filterTypes[i]); + if(fset != null){ + filterList.add(fset); + } + else{ + warnings.addMessage(new FilterNotFoundException("filter not found"), filterTypes[i]); + } + } + ComparisonPairFilterSet[] cpfs = filterList.toArray(new ComparisonPairFilterSet[filterList.size()]); + + crs = new FilteredComparisonResultSet(crs, cpfs); + } + + StigmataHookManager.getInstance().runHook(Phase.AFTER_FILTERING, crs.getContext()); + operationDone(OperationType.FILTER_BIRTHMARKS); + + return crs; + } + + /** + * compares two given birthmarks and returns comparison pair. + */ + public synchronized ComparisonPair compareDetails(BirthmarkSet bs1, BirthmarkSet bs2, BirthmarkContext context) throws BirthmarkComparisonFailedException{ + return new ComparisonPair(bs1, bs2, context); + } + + public synchronized ComparisonResultSet compare(String[] target, BirthmarkContext context) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException, BirthmarkStoreException{ + operationStart(OperationType.COMPARE_BIRTHMARKS); + + ExtractionResultSet er = extract(target, context); + ComparisonResultSet crs = compare(er); + + operationDone(OperationType.COMPARE_BIRTHMARKS); + + return crs; + } + + public synchronized ComparisonResultSet compare(String[] targetX, String[] targetY, BirthmarkContext context) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException, BirthmarkStoreException{ + operationStart(OperationType.COMPARE_BIRTHMARKS); + + ExtractionResultSet er = extract(targetX, targetY, context); + ComparisonResultSet crs = compare(er); + + operationDone(OperationType.COMPARE_BIRTHMARKS); + + return crs; + } + + public synchronized ComparisonResultSet compare(ExtractionResultSet er) throws BirthmarkExtractionFailedException, BirthmarkComparisonFailedException{ + operationStart(OperationType.COMPARE_BIRTHMARKS); + BirthmarkContext context = er.getContext(); + + StigmataHookManager.getInstance().runHook(Phase.BEFORE_COMPARISON, context); + ComparisonResultSet crs = null; + switch(context.getComparisonMethod()){ + case ROUND_ROBIN_SAME_PAIR: + crs = new RoundRobinComparisonResultSet(er, true); + break; + case ROUND_ROBIN_WITHOUT_SAME_PAIR: + crs = new RoundRobinComparisonResultSet(er, false); + break; + case ROUND_ROBIN_XY: + crs = new RoundRobinComparisonResultSet(er, true); + case GUESSED_PAIR: + crs = new CertainPairComparisonResultSet(er); + break; + case SPECIFIED_PAIR: + crs = new CertainPairComparisonResultSet(er, context.getNameMappings()); + break; + } + + StigmataHookManager.getInstance().runHook(Phase.AFTER_COMPARISON, context); + operationDone(OperationType.COMPARE_BIRTHMARKS); + + return crs; + } + + public synchronized ExtractionResultSet extract(String[] target, BirthmarkContext context) throws BirthmarkExtractionFailedException, BirthmarkStoreException{ + operationStart(OperationType.EXTRACT_BIRTHMARKS); + ExtractionResultSet er = extract(target, null, context); + operationDone(OperationType.EXTRACT_BIRTHMARKS); + return er; + } + + public synchronized ExtractionResultSet extract(String[] targetX, String[] targetY, BirthmarkContext context) throws BirthmarkExtractionFailedException, BirthmarkStoreException{ + operationStart(OperationType.EXTRACT_BIRTHMARKS); + ExtractionResultSet er = context.getEnvironment().getHistoryManager().createDefaultResultSet(context); + + try{ + StigmataHookManager.getInstance().runHook(Phase.BEFORE_EXTRACTION, context); + + switch(context.getComparisonMethod()){ + case ROUND_ROBIN_SAME_PAIR: + case ROUND_ROBIN_WITHOUT_SAME_PAIR: + er.setTableType(false); + String[] targetXY = mergeTarget(targetX, targetY); + extractImpl(targetXY, er, ExtractionTarget.TARGET_XY); + break; + case GUESSED_PAIR: + case SPECIFIED_PAIR: + case ROUND_ROBIN_XY: + default: + if(targetX == null || targetY == null){ + throw new BirthmarkExtractionFailedException("targetX or targetY is null"); + } + er.setTableType(true); + extractImpl(targetX, er, ExtractionTarget.TARGET_X); + extractImpl(targetY, er, ExtractionTarget.TARGET_Y); + break; + } + return er; + } catch(IOException e){ + throw new BirthmarkExtractionFailedException(e); + } finally{ + StigmataHookManager.getInstance().runHook(Phase.AFTER_EXTRACTION, context); + operationDone(OperationType.EXTRACT_BIRTHMARKS); + } + } + + private String[] mergeTarget(String[] t1, String[] t2){ + List list = new ArrayList(); + addToList(list, t1); + addToList(list, t2); + + return list.toArray(new String[list.size()]); + } + + private void addToList(List list, String[] target){ + if(target != null){ + for(String s: target){ + list.add(s); + } + } + } + + private BirthmarkSet[] extractImpl(String[] target, ExtractionResultSet er, ExtractionTarget et) throws BirthmarkExtractionFailedException, IOException, BirthmarkStoreException{ + ClassFileArchive[] archives = createArchives(target, environment); + BirthmarkContext context = er.getContext(); + ExtractionUnit unit = context.getExtractionUnit(); + + BirthmarkSet[] extractResult = null; + if(unit == ExtractionUnit.CLASS){ + extractFromClass(archives, er, et); + } + else if(unit == ExtractionUnit.PACKAGE){ + extractFromPackage(archives, er, et); + } + else if(unit == ExtractionUnit.ARCHIVE){ + extractFromProduct(archives, er, et); + } + + return extractResult; + } + + private byte[] inputStreamToByteArray(InputStream in) throws IOException{ + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + int read; + byte[] dataBuffer = new byte[512]; + while((read = in.read(dataBuffer, 0, dataBuffer.length)) != -1){ + bout.write(dataBuffer, 0, read); + } + byte[] data = bout.toByteArray(); + + bout.close(); + return data; + } + + private void extractFromPackage(ClassFileArchive[] archives, ExtractionResultSet er, ExtractionTarget et) throws IOException, BirthmarkExtractionFailedException{ + Map map = new HashMap(); + BirthmarkContext context = er.getContext(); + + for(ClassFileArchive archive: archives){ + for(ClassFileEntry entry: archive){ + try{ + String name = entry.getClassName(); + String packageName = parsePackageName(name); + BirthmarkSet bs = map.get(packageName); + if(bs == null){ + bs = new BirthmarkSet(packageName, archive.getLocation()); + map.put(packageName, bs); + } + + byte[] data = inputStreamToByteArray(entry.getLocation().openStream()); + for(String birthmarkType: context.getBirthmarkTypes()){ + try{ + BirthmarkExtractor extractor = factory.getExtractor(birthmarkType); + if(extractor.isAcceptable(ExtractionUnit.PACKAGE)){ + Birthmark b = bs.getBirthmark(extractor.getProvider().getType()); + if(b == null){ + b = extractor.createBirthmark(); + bs.addBirthmark(b); + } + extractor.extract(b, new ByteArrayInputStream(data), er.getEnvironment()); + } + } catch(ExtractorNotFoundException e){ + warnings.addMessage(e, birthmarkType); + } + } + } catch(IOException e){ + warnings.addMessage(e, archive.getName()); + } + } + } + try{ + for(BirthmarkSet bs: map.values()){ + er.addBirthmarkSet(et, bs); + } + }catch(BirthmarkStoreException e){ + } + } + + private String parsePackageName(String name){ + String n = name.replace('/', '.'); + int index = n.lastIndexOf('.'); + if(index > 0){ + n = n.substring(0, index - 1); + } + + return n; + } + + private void extractFromClass(ClassFileArchive[] archives, ExtractionResultSet er, + ExtractionTarget et) throws IOException, BirthmarkExtractionFailedException, BirthmarkStoreException{ + BirthmarkContext context = er.getContext(); + + for(ClassFileArchive archive: archives){ + for(ClassFileEntry entry: archive){ + try{ + BirthmarkSet birthmarkset = new BirthmarkSet(entry.getClassName(), entry.getLocation()); + byte[] data = inputStreamToByteArray(entry.getLocation().openStream()); + + for(String birthmarkType: context.getBirthmarkTypes()){ + try{ + BirthmarkExtractor extractor = factory.getExtractor(birthmarkType); + if(extractor.isAcceptable(ExtractionUnit.CLASS)){ + Birthmark b = extractor.extract(new ByteArrayInputStream(data), er.getEnvironment()); + birthmarkset.addBirthmark(b); + } + } catch(ExtractorNotFoundException e){ + warnings.addMessage(e, birthmarkType); + } + } + er.addBirthmarkSet(et, birthmarkset); + } catch(IOException e){ + warnings.addMessage(e, entry.getClassName()); + } + } + } + } + + private void extractFromProduct(ClassFileArchive[] archives, ExtractionResultSet er, ExtractionTarget et) throws IOException, BirthmarkExtractionFailedException, BirthmarkStoreException{ + BirthmarkContext context = er.getContext(); + + for(ClassFileArchive archive: archives){ + BirthmarkSet birthmarkset = new BirthmarkSet(archive.getName(), archive.getLocation()); + + for(ClassFileEntry entry: archive){ + try{ + byte[] data = inputStreamToByteArray(entry.getLocation().openStream()); + for(String birthmarkType: context.getBirthmarkTypes()){ + try{ + BirthmarkExtractor extractor = factory.getExtractor(birthmarkType); + if(extractor.isAcceptable(ExtractionUnit.ARCHIVE)){ + Birthmark b = birthmarkset.getBirthmark(birthmarkType); + if(b == null){ + b = extractor.createBirthmark(); + birthmarkset.addBirthmark(b); + } + extractor.extract(b, new ByteArrayInputStream(data), er.getEnvironment()); + } + } catch(ExtractorNotFoundException e){ + warnings.addMessage(e, birthmarkType); + } + } + } catch(IOException e){ + warnings.addMessage(e, entry.getClassName()); + } + } + if(birthmarkset.getBirthmarksCount() != 0){ + er.addBirthmarkSet(et, birthmarkset); + } + } + } + + private ClassFileArchive[] createArchives(String[] files, BirthmarkEnvironment environment) throws IOException, MalformedURLException{ + ClasspathContext bytecode = environment.getClasspathContext(); + List archives = new ArrayList(); + for(int i = 0; i < files.length; i++){ + try{ + if(files[i].endsWith(".class")){ + archives.add(new DefaultClassFileArchive(files[i])); + } + else if(files[i].endsWith(".jar") || files[i].endsWith(".zip")){ + archives.add(new JarClassFileArchive(files[i])); + bytecode.addClasspath(new File(files[i]).toURI().toURL()); + } + else if(files[i].endsWith(".war")){ + archives.add(new WarClassFileArchive(files[i])); + } + } catch(IOException e){ + warnings.addMessage(e, files[i]); + } + } + return archives.toArray(new ClassFileArchive[archives.size()]); + } + + private void operationStart(OperationType type){ + if(warnings == null){ + warnings = new WarningMessages(type); + fireEvent(new BirthmarkEngineEvent(OperationStage.OPERATION_START, type, warnings)); + latestOperationType = type; + targetType = type; + } + stack.push(warnings); + /* + * call subOperationStart method only once when some operation is occured. + * Ex. extraction, comparison, filtering + */ + if(latestOperationType != type){ + fireEvent(new BirthmarkEngineEvent(OperationStage.SUB_OPERATION_START, type, warnings)); + latestOperationType = type; + } + } + + private void operationDone(OperationType type){ + if(latestOperationType != type && targetType != type){ + fireEvent(new BirthmarkEngineEvent(OperationStage.SUB_OPERATION_DONE, type, warnings)); + latestOperationType = type; + } + stack.pop(); + if(stack.size() == 0){ + fireEvent(new BirthmarkEngineEvent(OperationStage.OPERATION_DONE, type, warnings)); + warnings = null; + latestOperationType = null; + } + } + + private void fireEvent(BirthmarkEngineEvent e){ + for(BirthmarkEngineListener listener: listeners){ + switch(e.getStage()){ + case OPERATION_START: + listener.operationStart(e); + break; + case SUB_OPERATION_START: + listener.subOperationStart(e); + break; + case SUB_OPERATION_DONE: + listener.subOperationDone(e); + break; + case OPERATION_DONE: + listener.operationDone(e); + break; + default: + throw new InternalError("unknown stage: " + e.getStage()); + } + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkEnvironment.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkEnvironment.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/BirthmarkEnvironment.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkEnvironment.java index 5fdd55f..7c39ab1 100644 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkEnvironment.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkEnvironment.java @@ -1,335 +1,335 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.imageio.spi.ServiceRegistry; - -import jp.naist.se.stigmata.filter.ComparisonPairFilterManager; -import jp.naist.se.stigmata.reader.ClasspathContext; -import jp.naist.se.stigmata.result.history.ExtractedBirthmarkServiceManager; -import jp.naist.se.stigmata.spi.BirthmarkSpi; -import jp.naist.se.stigmata.utils.WellknownClassManager; - -/** - * This class represents the context for extracting/comparing birthmarks. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkEnvironment{ - /** - * Default environment. All instance of this class is based on default environment. - */ - private static BirthmarkEnvironment DEFAULT_ENVIRONMENT = new BirthmarkEnvironment(true); - - /** - * home directory path. - */ - private static String HOME_DIRECTORY_PATH; - - /** - * parent of this environment. - */ - private BirthmarkEnvironment parent; - - /** - * context for classpath. - */ - private ClasspathContext classpathContext; - - /** - * wellknown class manager. This object judge a class is user made class or - * wellknown class. - */ - private WellknownClassManager manager; - - /** - * collection of services. - */ - private Map services = new HashMap(); - - /** - * properties manager. - */ - private Map properties = new HashMap(); - - /** - * listeners for updating properties. - */ - private List propertyListeners = new ArrayList(); - - /** - * filter manager. - */ - private ComparisonPairFilterManager filterManager; - - /** - * history manager. - */ - private ExtractedBirthmarkServiceManager historyManager; - - /** - * - */ - private ClassLoader loader; - - /** - * constructor for root environment - */ - private BirthmarkEnvironment(boolean flag){ - manager = new WellknownClassManager(); - classpathContext = new ClasspathContext(); - filterManager = new ComparisonPairFilterManager(this); - historyManager = new ExtractedBirthmarkServiceManager(this); - } - - /** - * constructor for specifying parent environment. - */ - public BirthmarkEnvironment(BirthmarkEnvironment parent){ - this.parent = parent; - this.manager = new WellknownClassManager(parent.getWellknownClassManager()); - this.classpathContext = new ClasspathContext(parent.getClasspathContext()); - this.filterManager = new ComparisonPairFilterManager(this, parent.getFilterManager()); - this.historyManager = new ExtractedBirthmarkServiceManager(this, parent.getHistoryManager()); - } - - /** - * returns the default birthmark environment. - */ - public static final BirthmarkEnvironment getDefaultEnvironment(){ - return DEFAULT_ENVIRONMENT; - } - - public static synchronized final String getStigmataHome(){ - if(HOME_DIRECTORY_PATH == null){ - String stigmataHome = System.getProperty("stigmata.home"); - if(stigmataHome == null){ - stigmataHome = System.getenv("STIGMATA_HOME"); - } - if(stigmataHome == null){ - String parent = System.getProperty("user.home"); - if(parent == null){ - parent = System.getenv("HOME"); - } - if(parent == null){ - parent = "."; - } - // for windows - if(parent.startsWith("C:\\Documents and Settings\\")){ - stigmataHome = parent + File.separator + "Application Data" + File.separator + "stigmata"; - } - else{ - stigmataHome = parent + File.separator + ".stigmata"; - } - } - HOME_DIRECTORY_PATH = stigmataHome; - } - return HOME_DIRECTORY_PATH; - } - - static void resetSettings(){ - DEFAULT_ENVIRONMENT = new BirthmarkEnvironment(false); - } - - public BirthmarkEnvironment getParent(){ - return parent; - } - - /** - * remove property mapped given key. - */ - public void removeProperty(String key){ - String old = properties.get(key); - properties.remove(key); - firePropertyEvent(new PropertyChangeEvent(this, key, old, null)); - } - - /** - * add given property. - */ - public void addProperty(String key, String value){ - boolean contains = properties.containsKey(key); - String old = getProperty(key); - properties.put(key, value); - - // value is updated? - if(!((old != null && old.equals(value)) || - (contains && old == null && value == null))){ - firePropertyEvent(new PropertyChangeEvent(this, key, old, value)); - } - } - - /** - * returns the property mapped given key - */ - public String getProperty(String key){ - String value = properties.get(key); - if(value == null && parent != null){ - value = parent.getProperty(key); - } - return value; - } - - /** - * fire property change event to listeners. - * @param e Event object. - */ - private void firePropertyEvent(PropertyChangeEvent e){ - for(PropertyChangeListener listener: propertyListeners){ - listener.propertyChange(e); - } - } - - /** - * add listener for updating properties. - */ - public void addPropertyListener(PropertyChangeListener listener){ - propertyListeners.add(listener); - } - - /** - * remove specified listener. - */ - public void removePropertyListener(PropertyChangeListener listener){ - propertyListeners.remove(listener); - } - - public void clearProperties(){ - properties.clear(); - } - - public Iterator propertyKeys(){ - Set set = new HashSet(); - if(parent != null){ - for(Iterator i = parent.propertyKeys(); i.hasNext(); ){ - set.add(i.next()); - } - } - set.addAll(properties.keySet()); - return set.iterator(); - } - - /** - * returns the classpath context. - */ - public ClasspathContext getClasspathContext(){ - return classpathContext; - } - - /** - * add given birthmark service to this environment. - */ - public synchronized void addService(BirthmarkSpi service){ - if(parent == null || parent.getService(service.getType()) == null){ - services.put(service.getType(), service); - } - } - - /** - * remove given birthmark service from this environment. - */ - public void removeService(String type){ - services.remove(type); - } - - /** - * return birthmark service registered with given birthmark type. - */ - public BirthmarkSpi getService(String type){ - BirthmarkSpi service = services.get(type); - if(service == null && parent != null){ - service = parent.getService(type); - } - return service; - } - - /** - * return all birthmark services searching traverse to root environment. - */ - public synchronized BirthmarkSpi[] getServices(){ - List list = getServiceList(); - BirthmarkSpi[] services = list.toArray(new BirthmarkSpi[list.size()]); - Arrays.sort(services, new BirthmarkSpiComparator()); - - return services; - } - - public Iterator lookupProviders(Class providerClass){ - Iterator iterator; - if(loader != null){ - iterator = ServiceRegistry.lookupProviders(providerClass, loader); - } - else{ - iterator = ServiceRegistry.lookupProviders(providerClass); - } - return iterator; - } - - /** - * return birthmark services lookup from current class path. - */ - public synchronized BirthmarkSpi[] findServices(){ - List list = getServiceList(); - - for(Iterator i = lookupProviders(BirthmarkSpi.class); i.hasNext(); ){ - BirthmarkSpi spi = i.next(); - if(getService(spi.getType()) == null){ - list.add(spi); - } - } - BirthmarkSpi[] services = list.toArray(new BirthmarkSpi[list.size()]); - Arrays.sort(services, new BirthmarkSpiComparator()); - - return services; - } - - /** - * return wellknown class manager. - */ - public WellknownClassManager getWellknownClassManager(){ - return manager; - } - - public ComparisonPairFilterManager getFilterManager(){ - return filterManager; - } - - public ExtractedBirthmarkServiceManager getHistoryManager(){ - return historyManager; - } - - void setClassLoader(ClassLoader loader){ - this.loader = loader; - } - - /** - * find the all birthmark services searching to root environment. - */ - private List getServiceList(){ - List list = new ArrayList(); - if(parent != null){ - for(BirthmarkSpi spi : parent.getServices()){ - list.add(spi); - } - } - for(String key : services.keySet()){ - list.add(services.get(key)); - } - return list; - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.imageio.spi.ServiceRegistry; + +import jp.sourceforge.stigmata.filter.ComparisonPairFilterManager; +import jp.sourceforge.stigmata.reader.ClasspathContext; +import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkServiceManager; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.utils.WellknownClassManager; + +/** + * This class represents the context for extracting/comparing birthmarks. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkEnvironment{ + /** + * Default environment. All instance of this class is based on default environment. + */ + private static BirthmarkEnvironment DEFAULT_ENVIRONMENT = new BirthmarkEnvironment(true); + + /** + * home directory path. + */ + private static String HOME_DIRECTORY_PATH; + + /** + * parent of this environment. + */ + private BirthmarkEnvironment parent; + + /** + * context for classpath. + */ + private ClasspathContext classpathContext; + + /** + * wellknown class manager. This object judge a class is user made class or + * wellknown class. + */ + private WellknownClassManager manager; + + /** + * collection of services. + */ + private Map services = new HashMap(); + + /** + * properties manager. + */ + private Map properties = new HashMap(); + + /** + * listeners for updating properties. + */ + private List propertyListeners = new ArrayList(); + + /** + * filter manager. + */ + private ComparisonPairFilterManager filterManager; + + /** + * history manager. + */ + private ExtractedBirthmarkServiceManager historyManager; + + /** + * + */ + private ClassLoader loader; + + /** + * constructor for root environment + */ + private BirthmarkEnvironment(boolean flag){ + manager = new WellknownClassManager(); + classpathContext = new ClasspathContext(); + filterManager = new ComparisonPairFilterManager(this); + historyManager = new ExtractedBirthmarkServiceManager(this); + } + + /** + * constructor for specifying parent environment. + */ + public BirthmarkEnvironment(BirthmarkEnvironment parent){ + this.parent = parent; + this.manager = new WellknownClassManager(parent.getWellknownClassManager()); + this.classpathContext = new ClasspathContext(parent.getClasspathContext()); + this.filterManager = new ComparisonPairFilterManager(this, parent.getFilterManager()); + this.historyManager = new ExtractedBirthmarkServiceManager(this, parent.getHistoryManager()); + } + + /** + * returns the default birthmark environment. + */ + public static final BirthmarkEnvironment getDefaultEnvironment(){ + return DEFAULT_ENVIRONMENT; + } + + public static synchronized final String getStigmataHome(){ + if(HOME_DIRECTORY_PATH == null){ + String stigmataHome = System.getProperty("stigmata.home"); + if(stigmataHome == null){ + stigmataHome = System.getenv("STIGMATA_HOME"); + } + if(stigmataHome == null){ + String parent = System.getProperty("user.home"); + if(parent == null){ + parent = System.getenv("HOME"); + } + if(parent == null){ + parent = "."; + } + // for windows + if(parent.startsWith("C:\\Documents and Settings\\")){ + stigmataHome = parent + File.separator + "Application Data" + File.separator + "stigmata"; + } + else{ + stigmataHome = parent + File.separator + ".stigmata"; + } + } + HOME_DIRECTORY_PATH = stigmataHome; + } + return HOME_DIRECTORY_PATH; + } + + static void resetSettings(){ + DEFAULT_ENVIRONMENT = new BirthmarkEnvironment(false); + } + + public BirthmarkEnvironment getParent(){ + return parent; + } + + /** + * remove property mapped given key. + */ + public void removeProperty(String key){ + String old = properties.get(key); + properties.remove(key); + firePropertyEvent(new PropertyChangeEvent(this, key, old, null)); + } + + /** + * add given property. + */ + public void addProperty(String key, String value){ + boolean contains = properties.containsKey(key); + String old = getProperty(key); + properties.put(key, value); + + // value is updated? + if(!((old != null && old.equals(value)) || + (contains && old == null && value == null))){ + firePropertyEvent(new PropertyChangeEvent(this, key, old, value)); + } + } + + /** + * returns the property mapped given key + */ + public String getProperty(String key){ + String value = properties.get(key); + if(value == null && parent != null){ + value = parent.getProperty(key); + } + return value; + } + + /** + * fire property change event to listeners. + * @param e Event object. + */ + private void firePropertyEvent(PropertyChangeEvent e){ + for(PropertyChangeListener listener: propertyListeners){ + listener.propertyChange(e); + } + } + + /** + * add listener for updating properties. + */ + public void addPropertyListener(PropertyChangeListener listener){ + propertyListeners.add(listener); + } + + /** + * remove specified listener. + */ + public void removePropertyListener(PropertyChangeListener listener){ + propertyListeners.remove(listener); + } + + public void clearProperties(){ + properties.clear(); + } + + public Iterator propertyKeys(){ + Set set = new HashSet(); + if(parent != null){ + for(Iterator i = parent.propertyKeys(); i.hasNext(); ){ + set.add(i.next()); + } + } + set.addAll(properties.keySet()); + return set.iterator(); + } + + /** + * returns the classpath context. + */ + public ClasspathContext getClasspathContext(){ + return classpathContext; + } + + /** + * add given birthmark service to this environment. + */ + public synchronized void addService(BirthmarkSpi service){ + if(parent == null || parent.getService(service.getType()) == null){ + services.put(service.getType(), service); + } + } + + /** + * remove given birthmark service from this environment. + */ + public void removeService(String type){ + services.remove(type); + } + + /** + * return birthmark service registered with given birthmark type. + */ + public BirthmarkSpi getService(String type){ + BirthmarkSpi service = services.get(type); + if(service == null && parent != null){ + service = parent.getService(type); + } + return service; + } + + /** + * return all birthmark services searching traverse to root environment. + */ + public synchronized BirthmarkSpi[] getServices(){ + List list = getServiceList(); + BirthmarkSpi[] services = list.toArray(new BirthmarkSpi[list.size()]); + Arrays.sort(services, new BirthmarkSpiComparator()); + + return services; + } + + public Iterator lookupProviders(Class providerClass){ + Iterator iterator; + if(loader != null){ + iterator = ServiceRegistry.lookupProviders(providerClass, loader); + } + else{ + iterator = ServiceRegistry.lookupProviders(providerClass); + } + return iterator; + } + + /** + * return birthmark services lookup from current class path. + */ + public synchronized BirthmarkSpi[] findServices(){ + List list = getServiceList(); + + for(Iterator i = lookupProviders(BirthmarkSpi.class); i.hasNext(); ){ + BirthmarkSpi spi = i.next(); + if(getService(spi.getType()) == null){ + list.add(spi); + } + } + BirthmarkSpi[] services = list.toArray(new BirthmarkSpi[list.size()]); + Arrays.sort(services, new BirthmarkSpiComparator()); + + return services; + } + + /** + * return wellknown class manager. + */ + public WellknownClassManager getWellknownClassManager(){ + return manager; + } + + public ComparisonPairFilterManager getFilterManager(){ + return filterManager; + } + + public ExtractedBirthmarkServiceManager getHistoryManager(){ + return historyManager; + } + + void setClassLoader(ClassLoader loader){ + this.loader = loader; + } + + /** + * find the all birthmark services searching to root environment. + */ + private List getServiceList(){ + List list = new ArrayList(); + if(parent != null){ + for(BirthmarkSpi spi : parent.getServices()){ + list.add(spi); + } + } + for(String key : services.keySet()){ + list.add(services.get(key)); + } + return list; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkException.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkException.java similarity index 90% rename from src/main/java/jp/naist/se/stigmata/BirthmarkException.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkException.java index 7c44832..1e705e5 100755 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkException.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkException.java @@ -1,31 +1,31 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -/** - * This exception represents occuring some exceptions caused birthmarking. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkException extends Exception{ - private static final long serialVersionUID = -6422474631148213820L; - - public BirthmarkException(){ - super(); - } - - public BirthmarkException(String message, Throwable cause){ - super(message, cause); - } - - public BirthmarkException(String message){ - super(message); - } - - public BirthmarkException(Throwable cause){ - super(cause); - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +/** + * This exception represents occuring some exceptions caused birthmarking. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkException extends Exception{ + private static final long serialVersionUID = -6422474631148213820L; + + public BirthmarkException(){ + super(); + } + + public BirthmarkException(String message, Throwable cause){ + super(message, cause); + } + + public BirthmarkException(String message){ + super(message); + } + + public BirthmarkException(Throwable cause){ + super(cause); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkExtractionFailedException.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkExtractionFailedException.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/BirthmarkExtractionFailedException.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkExtractionFailedException.java index 0f9cfd8..a54f3f0 100644 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkExtractionFailedException.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkExtractionFailedException.java @@ -1,53 +1,53 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.List; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkExtractionFailedException extends BirthmarkException { - private static final long serialVersionUID = 21932436457235L; - - private List causes = new ArrayList(); - - public BirthmarkExtractionFailedException() { - super(); - } - - public BirthmarkExtractionFailedException(String arg0, Throwable cause) { - super(arg0, cause); - } - - public BirthmarkExtractionFailedException(String arg0) { - super(arg0); - } - - public BirthmarkExtractionFailedException(Throwable cause) { - super(cause); - } - - public boolean isFailed(){ - return causes.size() != 0; - } - - public void addCause(Throwable cause){ - causes.add(cause); - } - - public void addCauses(Throwable[] causeList){ - for(Throwable throwable: causeList){ - causes.add(throwable); - } - } - - public Throwable[] getCauses(){ - return causes.toArray(new Throwable[causes.size()]); - } +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.List; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkExtractionFailedException extends BirthmarkException { + private static final long serialVersionUID = 21932436457235L; + + private List causes = new ArrayList(); + + public BirthmarkExtractionFailedException() { + super(); + } + + public BirthmarkExtractionFailedException(String arg0, Throwable cause) { + super(arg0, cause); + } + + public BirthmarkExtractionFailedException(String arg0) { + super(arg0); + } + + public BirthmarkExtractionFailedException(Throwable cause) { + super(cause); + } + + public boolean isFailed(){ + return causes.size() != 0; + } + + public void addCause(Throwable cause){ + causes.add(cause); + } + + public void addCauses(Throwable[] causeList){ + for(Throwable throwable: causeList){ + causes.add(throwable); + } + } + + public Throwable[] getCauses(){ + return causes.toArray(new Throwable[causes.size()]); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkExtractor.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/BirthmarkExtractor.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkExtractor.java index 76c5f85..acb0ba7 100644 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkExtractor.java @@ -1,77 +1,77 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.io.InputStream; - -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * extract birthmarks from given Java bytecode stream. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface BirthmarkExtractor{ - /** - * returns service provider interface of this extractor. - */ - public BirthmarkSpi getProvider(); - - /** - * create new birthmark. - */ - public Birthmark createBirthmark(); - - /** - * Does extractor accept given extraction unit. - */ - public boolean isAcceptable(ExtractionUnit unit); - - /** - * returns accepted extraction unit list. - */ - public ExtractionUnit[] getAcceptableUnits(); - - /** - * extract birthmark from given stream. - */ - public Birthmark extract(InputStream in) throws BirthmarkExtractionFailedException; - - /** - * extract birthmark from given byte array. - */ - public Birthmark extract(byte[] bytecode) throws BirthmarkExtractionFailedException; - - /** - * extract birthmark from given stream with given environment. - */ - public Birthmark extract(InputStream in, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException; - - /** - * extract birthmark from given byte array with given environment. - */ - public Birthmark extract(byte[] bytecode, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException; - - /** - * extract birthmark from given stream and add element to given birthmark object. - */ - public Birthmark extract(Birthmark birthmark, InputStream in) throws BirthmarkExtractionFailedException; - - /** - * extract birthmark from given byte array and add element to given birthmark object. - */ - public Birthmark extract(Birthmark birthmark, byte[] bytecode) throws BirthmarkExtractionFailedException; - - /** - * extract birthmark from given stream with given environment and add element to given birthmark object. - */ - public Birthmark extract(Birthmark birthmark, InputStream in, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException; - - /** - * extract birthmark from given byte array with given environment and add element to given birthmark object. - */ - public Birthmark extract(Birthmark birthmark, byte[] bytecode, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException; -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.io.InputStream; + +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * extract birthmarks from given Java bytecode stream. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface BirthmarkExtractor{ + /** + * returns service provider interface of this extractor. + */ + public BirthmarkSpi getProvider(); + + /** + * create new birthmark. + */ + public Birthmark createBirthmark(); + + /** + * Does extractor accept given extraction unit. + */ + public boolean isAcceptable(ExtractionUnit unit); + + /** + * returns accepted extraction unit list. + */ + public ExtractionUnit[] getAcceptableUnits(); + + /** + * extract birthmark from given stream. + */ + public Birthmark extract(InputStream in) throws BirthmarkExtractionFailedException; + + /** + * extract birthmark from given byte array. + */ + public Birthmark extract(byte[] bytecode) throws BirthmarkExtractionFailedException; + + /** + * extract birthmark from given stream with given environment. + */ + public Birthmark extract(InputStream in, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException; + + /** + * extract birthmark from given byte array with given environment. + */ + public Birthmark extract(byte[] bytecode, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException; + + /** + * extract birthmark from given stream and add element to given birthmark object. + */ + public Birthmark extract(Birthmark birthmark, InputStream in) throws BirthmarkExtractionFailedException; + + /** + * extract birthmark from given byte array and add element to given birthmark object. + */ + public Birthmark extract(Birthmark birthmark, byte[] bytecode) throws BirthmarkExtractionFailedException; + + /** + * extract birthmark from given stream with given environment and add element to given birthmark object. + */ + public Birthmark extract(Birthmark birthmark, InputStream in, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException; + + /** + * extract birthmark from given byte array with given environment and add element to given birthmark object. + */ + public Birthmark extract(Birthmark birthmark, byte[] bytecode, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException; +} diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkSet.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkSet.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/BirthmarkSet.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkSet.java index 79ebf83..c80f22f 100644 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkSet.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkSet.java @@ -1,133 +1,133 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.net.URL; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -/** - * This class manages a set of birthmarks which extracted from a target. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkSet implements Iterable{ - /** - * this object name. - */ - private String name; - - /** - * location of target is loaded from. - */ - private URL location; - - /** - * map for birthmarks. - */ - private Map birthmarks = new HashMap(); - - /** - * constructor. - */ - public BirthmarkSet(String name, URL location){ - this.name = name; - this.location = location; - } - - /** - * return the sum of all element count of birthmarks this instance has. - */ - public int getSumOfElementCount(){ - int count = 0; - for(Iterator i = birthmarkTypes(); i.hasNext();){ - Birthmark birthmark = getBirthmark(i.next()); - count += birthmark.getElementCount(); - } - return count; - } - - /** - * return the number of birthmarks. - */ - public int getBirthmarksCount(){ - return birthmarks.size(); - } - - /** - * return the name. - */ - public String getName(){ - return name; - } - - /** - * return the location. - */ - public URL getLocation(){ - return location; - } - - /** - * add given birthmark to this instance. - * @throws NullPointerException given birthmark is null. - */ - public void addBirthmark(Birthmark birthmark){ - if(birthmark == null){ - throw new NullPointerException("given birthmark is null"); - } - birthmarks.put(birthmark.getType(), birthmark); - } - - /** - * return the given type of birthmark. - */ - public Birthmark getBirthmark(String type){ - return birthmarks.get(type); - } - - /** - * does this object have the given birthmark type. - */ - public boolean hasBirthmark(String type){ - return birthmarks.get(type) != null; - } - - /** - * returns an array containing all of the birthmarks in this object. - */ - public Birthmark[] getBirthmarks(){ - Birthmark[] b = new Birthmark[getBirthmarksCount()]; - int index = 0; - for(Iterator i = birthmarkTypes(); i.hasNext();){ - b[index] = getBirthmark(i.next()); - index++; - } - return b; - } - - /** - * returns an iterator over the birthmarks in this birthmark-set. - */ - public Iterator iterator(){ - return birthmarks.values().iterator(); - } - - /** - * returns an iterator over the birthmark types. - */ - public Iterator birthmarkTypes(){ - return birthmarks.keySet().iterator(); - } - - /** - * returns an array of birthmark types. - */ - public synchronized String[] getBirthmarkTypes(){ - return birthmarks.keySet().toArray(new String[birthmarks.size()]); - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.net.URL; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * This class manages a set of birthmarks which extracted from a target. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkSet implements Iterable{ + /** + * this object name. + */ + private String name; + + /** + * location of target is loaded from. + */ + private URL location; + + /** + * map for birthmarks. + */ + private Map birthmarks = new HashMap(); + + /** + * constructor. + */ + public BirthmarkSet(String name, URL location){ + this.name = name; + this.location = location; + } + + /** + * return the sum of all element count of birthmarks this instance has. + */ + public int getSumOfElementCount(){ + int count = 0; + for(Iterator i = birthmarkTypes(); i.hasNext();){ + Birthmark birthmark = getBirthmark(i.next()); + count += birthmark.getElementCount(); + } + return count; + } + + /** + * return the number of birthmarks. + */ + public int getBirthmarksCount(){ + return birthmarks.size(); + } + + /** + * return the name. + */ + public String getName(){ + return name; + } + + /** + * return the location. + */ + public URL getLocation(){ + return location; + } + + /** + * add given birthmark to this instance. + * @throws NullPointerException given birthmark is null. + */ + public void addBirthmark(Birthmark birthmark){ + if(birthmark == null){ + throw new NullPointerException("given birthmark is null"); + } + birthmarks.put(birthmark.getType(), birthmark); + } + + /** + * return the given type of birthmark. + */ + public Birthmark getBirthmark(String type){ + return birthmarks.get(type); + } + + /** + * does this object have the given birthmark type. + */ + public boolean hasBirthmark(String type){ + return birthmarks.get(type) != null; + } + + /** + * returns an array containing all of the birthmarks in this object. + */ + public Birthmark[] getBirthmarks(){ + Birthmark[] b = new Birthmark[getBirthmarksCount()]; + int index = 0; + for(Iterator i = birthmarkTypes(); i.hasNext();){ + b[index] = getBirthmark(i.next()); + index++; + } + return b; + } + + /** + * returns an iterator over the birthmarks in this birthmark-set. + */ + public Iterator iterator(){ + return birthmarks.values().iterator(); + } + + /** + * returns an iterator over the birthmark types. + */ + public Iterator birthmarkTypes(){ + return birthmarks.keySet().iterator(); + } + + /** + * returns an array of birthmark types. + */ + public synchronized String[] getBirthmarkTypes(){ + return birthmarks.keySet().toArray(new String[birthmarks.size()]); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkSpiComparator.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkSpiComparator.java similarity index 87% rename from src/main/java/jp/naist/se/stigmata/BirthmarkSpiComparator.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkSpiComparator.java index 1041ec7..8b462dc 100644 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkSpiComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkSpiComparator.java @@ -1,45 +1,45 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.util.Comparator; - -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -class BirthmarkSpiComparator implements Comparator{ - /** - * default constructor - */ - public BirthmarkSpiComparator(){ - } - - public int hashCode(){ - return System.identityHashCode(this); - } - - public int compare(BirthmarkSpi s1, BirthmarkSpi s2){ - if(s1.isExpert() && !s2.isExpert()){ - return 1; - } - else if(!s1.isExpert() && s2.isExpert()){ - return -1; - } - else{ - return s1.getType().compareTo(s2.getType()); - } - } - - public boolean equals(Object o){ - String className = null; - if(o != null){ - className = o.getClass().getName(); - } - return o != null && className.equals(getClass().getName()); - } +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.util.Comparator; + +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +class BirthmarkSpiComparator implements Comparator{ + /** + * default constructor + */ + public BirthmarkSpiComparator(){ + } + + public int hashCode(){ + return System.identityHashCode(this); + } + + public int compare(BirthmarkSpi s1, BirthmarkSpi s2){ + if(s1.isExpert() && !s2.isExpert()){ + return 1; + } + else if(!s1.isExpert() && s2.isExpert()){ + return -1; + } + else{ + return s1.getType().compareTo(s2.getType()); + } + } + + public boolean equals(Object o){ + String className = null; + if(o != null){ + className = o.getClass().getName(); + } + return o != null && className.equals(getClass().getName()); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkStoreException.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkStoreException.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/BirthmarkStoreException.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkStoreException.java index e554d86..2eb0bf8 100755 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkStoreException.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkStoreException.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata; +package jp.sourceforge.stigmata; /* * $Id$ diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkStoreTarget.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkStoreTarget.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/BirthmarkStoreTarget.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkStoreTarget.java index 9c2996e..4f89907 100755 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkStoreTarget.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkStoreTarget.java @@ -1,64 +1,64 @@ -package jp.naist.se.stigmata; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; - -/* - * $Id$ - */ - -/** - * This class represents how to store extracted birthmarks. - * memory?, databases?, or files? - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class BirthmarkStoreTarget implements Serializable, Comparable{ - private static final long serialVersionUID = -4225861589804166362L; - - private static final Map TARGETS = new HashMap(); - - public static BirthmarkStoreTarget MEMORY = new BirthmarkStoreTarget(0, "MEMORY"); - public static BirthmarkStoreTarget XMLFILE = new BirthmarkStoreTarget(1, "XMLFILE"); - public static BirthmarkStoreTarget MEMORY_SINGLE = new BirthmarkStoreTarget(2, "MEMORY_SINGLE"); - public static BirthmarkStoreTarget RDB = new BirthmarkStoreTarget(3, "RDB"); - - private final String name; - private final int ordinal; - - private BirthmarkStoreTarget(int index, String name){ - this.name = name; - this.ordinal = index; - TARGETS.put(name, this); - } - - public String name(){ - return name; - } - - public int ordinal(){ - return ordinal; - } - - public boolean equals(Object o){ - return this == o; - } - - public int compareTo(BirthmarkStoreTarget other){ - return ordinal - other.ordinal; - } - - public static BirthmarkStoreTarget valueOf(String name){ - return TARGETS.get(name); - } - - public static BirthmarkStoreTarget createTarget(String name){ - BirthmarkStoreTarget bst = TARGETS.get(name); - if(bst == null){ - bst = new BirthmarkStoreTarget(TARGETS.size(), name); - } - return bst; - } -} +package jp.sourceforge.stigmata; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +/* + * $Id$ + */ + +/** + * This class represents how to store extracted birthmarks. + * memory?, databases?, or files? + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class BirthmarkStoreTarget implements Serializable, Comparable{ + private static final long serialVersionUID = -4225861589804166362L; + + private static final Map TARGETS = new HashMap(); + + public static BirthmarkStoreTarget MEMORY = new BirthmarkStoreTarget(0, "MEMORY"); + public static BirthmarkStoreTarget XMLFILE = new BirthmarkStoreTarget(1, "XMLFILE"); + public static BirthmarkStoreTarget MEMORY_SINGLE = new BirthmarkStoreTarget(2, "MEMORY_SINGLE"); + public static BirthmarkStoreTarget RDB = new BirthmarkStoreTarget(3, "RDB"); + + private final String name; + private final int ordinal; + + private BirthmarkStoreTarget(int index, String name){ + this.name = name; + this.ordinal = index; + TARGETS.put(name, this); + } + + public String name(){ + return name; + } + + public int ordinal(){ + return ordinal; + } + + public boolean equals(Object o){ + return this == o; + } + + public int compareTo(BirthmarkStoreTarget other){ + return ordinal - other.ordinal; + } + + public static BirthmarkStoreTarget valueOf(String name){ + return TARGETS.get(name); + } + + public static BirthmarkStoreTarget createTarget(String name){ + BirthmarkStoreTarget bst = TARGETS.get(name); + if(bst == null){ + bst = new BirthmarkStoreTarget(TARGETS.size(), name); + } + return bst; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/BirthmarkTypeMismatchException.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkTypeMismatchException.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/BirthmarkTypeMismatchException.java rename to src/main/java/jp/sourceforge/stigmata/BirthmarkTypeMismatchException.java index 5a75f65..e8c1efa 100755 --- a/src/main/java/jp/naist/se/stigmata/BirthmarkTypeMismatchException.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkTypeMismatchException.java @@ -1,32 +1,32 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -/** - * This exception class be thrown when birthmark types are different in some - * operation such as merging, and comparing. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkTypeMismatchException extends BirthmarkException{ - private static final long serialVersionUID = -6198325117696243731L; - - public BirthmarkTypeMismatchException(){ - super(); - } - - public BirthmarkTypeMismatchException(String message, Throwable cause){ - super(message, cause); - } - - public BirthmarkTypeMismatchException(String message){ - super(message); - } - - public BirthmarkTypeMismatchException(Throwable cause){ - super(cause); - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +/** + * This exception class be thrown when birthmark types are different in some + * operation such as merging, and comparing. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkTypeMismatchException extends BirthmarkException{ + private static final long serialVersionUID = -6198325117696243731L; + + public BirthmarkTypeMismatchException(){ + super(); + } + + public BirthmarkTypeMismatchException(String message, Throwable cause){ + super(message, cause); + } + + public BirthmarkTypeMismatchException(String message){ + super(message); + } + + public BirthmarkTypeMismatchException(Throwable cause){ + super(cause); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ComparisonMethod.java b/src/main/java/jp/sourceforge/stigmata/ComparisonMethod.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/ComparisonMethod.java rename to src/main/java/jp/sourceforge/stigmata/ComparisonMethod.java index 1935f82..4a5154d 100755 --- a/src/main/java/jp/naist/se/stigmata/ComparisonMethod.java +++ b/src/main/java/jp/sourceforge/stigmata/ComparisonMethod.java @@ -1,42 +1,42 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -/** - * This enum represents birthmark comparison method. let X be a set of - * target { x1, x2, ..., xn, } and Y be a set of target - * { y1, y2, ..., ym, }. - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public enum ComparisonMethod{ - /** - * This constants represents comparing all combination between X - * and Y. x1 - y1, x1 - y2, x1 - y3, ..., xn - ym-1, xn, ym. - */ - ROUND_ROBIN_XY, - /** - * This constants represents comparing all combination between X. - * x1 - x1, x1 - x2, x1 - x3, ..., xn - xn-1 xn, xn. - */ - ROUND_ROBIN_SAME_PAIR, - /** - * This constants represents comparing all combination between X. - * x1 - x1, x1 - x2, x1 - x3, ..., xn - xn-1 xn, xn. - */ - ROUND_ROBIN_WITHOUT_SAME_PAIR, - /** - * This constants represents comparing some pairs. The pair is guessed by - * its name. If x1 and y3 have same name, then the pair of x1 and y3 is - * compared. - */ - GUESSED_PAIR, - /** - * This constants represents comparing some pairs. The pair is specified by - * user. - */ - SPECIFIED_PAIR, -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +/** + * This enum represents birthmark comparison method. let X be a set of + * target { x1, x2, ..., xn, } and Y be a set of target + * { y1, y2, ..., ym, }. + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public enum ComparisonMethod{ + /** + * This constants represents comparing all combination between X + * and Y. x1 - y1, x1 - y2, x1 - y3, ..., xn - ym-1, xn, ym. + */ + ROUND_ROBIN_XY, + /** + * This constants represents comparing all combination between X. + * x1 - x1, x1 - x2, x1 - x3, ..., xn - xn-1 xn, xn. + */ + ROUND_ROBIN_SAME_PAIR, + /** + * This constants represents comparing all combination between X. + * x1 - x1, x1 - x2, x1 - x3, ..., xn - xn-1 xn, xn. + */ + ROUND_ROBIN_WITHOUT_SAME_PAIR, + /** + * This constants represents comparing some pairs. The pair is guessed by + * its name. If x1 and y3 have same name, then the pair of x1 and y3 is + * compared. + */ + GUESSED_PAIR, + /** + * This constants represents comparing some pairs. The pair is specified by + * user. + */ + SPECIFIED_PAIR, +} diff --git a/src/main/java/jp/naist/se/stigmata/ComparisonPair.java b/src/main/java/jp/sourceforge/stigmata/ComparisonPair.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ComparisonPair.java rename to src/main/java/jp/sourceforge/stigmata/ComparisonPair.java index 5b60f0b..dbbcec6 100644 --- a/src/main/java/jp/naist/se/stigmata/ComparisonPair.java +++ b/src/main/java/jp/sourceforge/stigmata/ComparisonPair.java @@ -1,94 +1,94 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -/** - * This class represents comparison pair. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ComparisonPair implements Iterable{ - private BirthmarkSet target1; - private BirthmarkSet target2; - private BirthmarkContext context; - - /** - * constructor. - */ - public ComparisonPair(BirthmarkSet target1, BirthmarkSet target2, BirthmarkContext context){ - this.target1 = target1; - this.target2 = target2; - this.context = context; - - if(target1.getBirthmarksCount() != target2.getBirthmarksCount()){ - throw new IllegalArgumentException("birthmark count is not matched"); - } - } - - /** - * return a target. - * @see #getTarget2() - */ - public BirthmarkSet getTarget1(){ - return target1; - } - - /** - * return other target - * @see #getTarget1() - */ - public BirthmarkSet getTarget2(){ - return target2; - } - - /** - * calculates similarity between target1 and target2. - */ - public double calculateSimilarity(){ - double similarity = 0d; - int count = 0; - for(ComparisonPairElement elem: this){ - double sim = elem.getSimilarity(); - if(!Double.isNaN(sim) && !Double.isInfinite(sim)){ - similarity += sim; - count++; - } - } - return similarity / count; - } - - /** - * Returns a number of birthmarks contained a target. - * Note that other target must have same birthmarks. - */ - public int getBirthmarksCount(){ - return target1.getBirthmarksCount(); - } - - /** - * returns an iterator for comparing each birthmarks. - */ - public synchronized Iterator iterator(){ - List list = new ArrayList(); - BirthmarkEnvironment env = context.getEnvironment(); - for(Iterator i = target1.birthmarkTypes(); i.hasNext(); ){ - String type = i.next(); - - Birthmark b1 = target1.getBirthmark(type); - Birthmark b2 = target2.getBirthmark(type); - if(b1 != null && b2 != null){ - list.add(new ComparisonPairElement( - b1, b2, env.getService(type).getComparator() - )); - } - } - return list.iterator(); - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * This class represents comparison pair. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ComparisonPair implements Iterable{ + private BirthmarkSet target1; + private BirthmarkSet target2; + private BirthmarkContext context; + + /** + * constructor. + */ + public ComparisonPair(BirthmarkSet target1, BirthmarkSet target2, BirthmarkContext context){ + this.target1 = target1; + this.target2 = target2; + this.context = context; + + if(target1.getBirthmarksCount() != target2.getBirthmarksCount()){ + throw new IllegalArgumentException("birthmark count is not matched"); + } + } + + /** + * return a target. + * @see #getTarget2() + */ + public BirthmarkSet getTarget1(){ + return target1; + } + + /** + * return other target + * @see #getTarget1() + */ + public BirthmarkSet getTarget2(){ + return target2; + } + + /** + * calculates similarity between target1 and target2. + */ + public double calculateSimilarity(){ + double similarity = 0d; + int count = 0; + for(ComparisonPairElement elem: this){ + double sim = elem.getSimilarity(); + if(!Double.isNaN(sim) && !Double.isInfinite(sim)){ + similarity += sim; + count++; + } + } + return similarity / count; + } + + /** + * Returns a number of birthmarks contained a target. + * Note that other target must have same birthmarks. + */ + public int getBirthmarksCount(){ + return target1.getBirthmarksCount(); + } + + /** + * returns an iterator for comparing each birthmarks. + */ + public synchronized Iterator iterator(){ + List list = new ArrayList(); + BirthmarkEnvironment env = context.getEnvironment(); + for(Iterator i = target1.birthmarkTypes(); i.hasNext(); ){ + String type = i.next(); + + Birthmark b1 = target1.getBirthmark(type); + Birthmark b2 = target2.getBirthmark(type); + if(b1 != null && b2 != null){ + list.add(new ComparisonPairElement( + b1, b2, env.getService(type).getComparator() + )); + } + } + return list.iterator(); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ComparisonPairElement.java b/src/main/java/jp/sourceforge/stigmata/ComparisonPairElement.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/ComparisonPairElement.java rename to src/main/java/jp/sourceforge/stigmata/ComparisonPairElement.java index ea86ac5..129e117 100644 --- a/src/main/java/jp/naist/se/stigmata/ComparisonPairElement.java +++ b/src/main/java/jp/sourceforge/stigmata/ComparisonPairElement.java @@ -1,53 +1,53 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -/** - * This class represents comparing two birthmarks. - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ComparisonPairElement{ - private Birthmark birthmark1; - private Birthmark birthmark2; - private BirthmarkComparator comparator; - private double similarity; - private int compareCount = -1; - - public ComparisonPairElement(Birthmark birthmark1, Birthmark birthmark2, - BirthmarkComparator comparator){ - this.birthmark1 = birthmark1; - this.birthmark2 = birthmark2; - this.comparator = comparator; - - if(!birthmark1.getType().equals(birthmark2.getType())){ - throw new IllegalArgumentException("birthmark type mismatch"); - } - // cached - similarity = comparator.compare(birthmark1, birthmark2); - } - - public synchronized int getComparisonCount(){ - // cached - if(compareCount < 0){ - compareCount = comparator.getCompareCount(birthmark1, birthmark2); - } - return compareCount; - } - - /** - * returns a type of birthmarks. - */ - public String getType(){ - return birthmark1.getType(); - } - - /** - * returns similarity between two birthmarks. - */ - public double getSimilarity(){ - return similarity; - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +/** + * This class represents comparing two birthmarks. + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ComparisonPairElement{ + private Birthmark birthmark1; + private Birthmark birthmark2; + private BirthmarkComparator comparator; + private double similarity; + private int compareCount = -1; + + public ComparisonPairElement(Birthmark birthmark1, Birthmark birthmark2, + BirthmarkComparator comparator){ + this.birthmark1 = birthmark1; + this.birthmark2 = birthmark2; + this.comparator = comparator; + + if(!birthmark1.getType().equals(birthmark2.getType())){ + throw new IllegalArgumentException("birthmark type mismatch"); + } + // cached + similarity = comparator.compare(birthmark1, birthmark2); + } + + public synchronized int getComparisonCount(){ + // cached + if(compareCount < 0){ + compareCount = comparator.getCompareCount(birthmark1, birthmark2); + } + return compareCount; + } + + /** + * returns a type of birthmarks. + */ + public String getType(){ + return birthmark1.getType(); + } + + /** + * returns similarity between two birthmarks. + */ + public double getSimilarity(){ + return similarity; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ComparisonPairFilter.java b/src/main/java/jp/sourceforge/stigmata/ComparisonPairFilter.java similarity index 79% rename from src/main/java/jp/naist/se/stigmata/ComparisonPairFilter.java rename to src/main/java/jp/sourceforge/stigmata/ComparisonPairFilter.java index 9c2bfaa..ef2fb7f 100644 --- a/src/main/java/jp/naist/se/stigmata/ComparisonPairFilter.java +++ b/src/main/java/jp/sourceforge/stigmata/ComparisonPairFilter.java @@ -1,33 +1,33 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.filter.Criterion; -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; - -/** - * Filtering results by some criteria. - * For example, - *
    - *
  • extract comparison pairs which similarity over 0.8, and
  • - *
  • extract comparison pairs which similarity over 0.8 and element count over 10.
  • - *
- * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface ComparisonPairFilter{ - public boolean isFiltered(ComparisonPair pair); - - public Criterion[] getAcceptableCriteria(); - - public boolean isAcceptable(Criterion criterion); - - public void setCriterion(Criterion criterion); - - public Criterion getCriterion(); - - public ComparisonPairFilterSpi getService(); -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.filter.Criterion; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; + +/** + * Filtering results by some criteria. + * For example, + *
    + *
  • extract comparison pairs which similarity over 0.8, and
  • + *
  • extract comparison pairs which similarity over 0.8 and element count over 10.
  • + *
+ * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface ComparisonPairFilter{ + public boolean isFiltered(ComparisonPair pair); + + public Criterion[] getAcceptableCriteria(); + + public boolean isAcceptable(Criterion criterion); + + public void setCriterion(Criterion criterion); + + public Criterion getCriterion(); + + public ComparisonPairFilterSpi getService(); +} diff --git a/src/main/java/jp/naist/se/stigmata/ComparisonPairFilterSet.java b/src/main/java/jp/sourceforge/stigmata/ComparisonPairFilterSet.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/ComparisonPairFilterSet.java rename to src/main/java/jp/sourceforge/stigmata/ComparisonPairFilterSet.java index 2d1065a..e116162 100644 --- a/src/main/java/jp/naist/se/stigmata/ComparisonPairFilterSet.java +++ b/src/main/java/jp/sourceforge/stigmata/ComparisonPairFilterSet.java @@ -1,114 +1,114 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - - -/** - * Set of {@link ComparisonPairFilter ComparisonPairFilter}. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ComparisonPairFilterSet implements Iterable{ - private List filters = new ArrayList(); - private String name; - private boolean matchall = true; - - public boolean isFiltered(ComparisonPair pair){ - boolean flag; - if(isMatchAll()){ // all of criteria are matched? - flag = true; - for(ComparisonPairFilter filter: filters){ - if(!filter.isFiltered(pair)){ - flag = false; - break; - } - } - } - else{ // any of criteria are matched - flag = false; - for(ComparisonPairFilter filter: filters){ - if(filter.isFiltered(pair)){ - flag = true; - break; - } - } - } - return flag; - } - - /** - * returns a flag that all filters must be matched. - */ - public boolean isMatchAll(){ - return matchall; - } - - /** - * returns a flag that any filters must be matched. - */ - public boolean isMatchAny(){ - return !isMatchAll(); - } - - /** - * filtering if all criteria is matched. - */ - public void setMatchAll(){ - matchall = true; - } - - /** - * filtering if any criterion is matched. - */ - public void setMatchAny(){ - matchall = false; - } - - public void setName(String name){ - this.name = name; - } - - public String getName(){ - return name; - } - - public boolean addFilter(ComparisonPairFilter o){ - return filters.add(o); - } - - public void removeAllFilters(){ - filters.clear(); - } - - public ComparisonPairFilter getFilter(int index){ - return filters.get(index); - } - - public Iterator iterator(){ - return filters.iterator(); - } - - public ComparisonPairFilter removeFilter(int index){ - return filters.remove(index); - } - - public int getFilterCount(){ - return filters.size(); - } - - public String toString(){ - StringBuilder sb = new StringBuilder("filterset{ "); - sb.append("name=").append(getName()).append(", "); - sb.append(isMatchAll()? "match_all": "match_any"); - sb.append(", ").append(filters).append("}"); - - return new String(sb); - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + + +/** + * Set of {@link ComparisonPairFilter ComparisonPairFilter}. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ComparisonPairFilterSet implements Iterable{ + private List filters = new ArrayList(); + private String name; + private boolean matchall = true; + + public boolean isFiltered(ComparisonPair pair){ + boolean flag; + if(isMatchAll()){ // all of criteria are matched? + flag = true; + for(ComparisonPairFilter filter: filters){ + if(!filter.isFiltered(pair)){ + flag = false; + break; + } + } + } + else{ // any of criteria are matched + flag = false; + for(ComparisonPairFilter filter: filters){ + if(filter.isFiltered(pair)){ + flag = true; + break; + } + } + } + return flag; + } + + /** + * returns a flag that all filters must be matched. + */ + public boolean isMatchAll(){ + return matchall; + } + + /** + * returns a flag that any filters must be matched. + */ + public boolean isMatchAny(){ + return !isMatchAll(); + } + + /** + * filtering if all criteria is matched. + */ + public void setMatchAll(){ + matchall = true; + } + + /** + * filtering if any criterion is matched. + */ + public void setMatchAny(){ + matchall = false; + } + + public void setName(String name){ + this.name = name; + } + + public String getName(){ + return name; + } + + public boolean addFilter(ComparisonPairFilter o){ + return filters.add(o); + } + + public void removeAllFilters(){ + filters.clear(); + } + + public ComparisonPairFilter getFilter(int index){ + return filters.get(index); + } + + public Iterator iterator(){ + return filters.iterator(); + } + + public ComparisonPairFilter removeFilter(int index){ + return filters.remove(index); + } + + public int getFilterCount(){ + return filters.size(); + } + + public String toString(){ + StringBuilder sb = new StringBuilder("filterset{ "); + sb.append("name=").append(getName()).append(", "); + sb.append(isMatchAll()? "match_all": "match_any"); + sb.append(", ").append(filters).append("}"); + + return new String(sb); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ComparisonResultSet.java b/src/main/java/jp/sourceforge/stigmata/ComparisonResultSet.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/ComparisonResultSet.java rename to src/main/java/jp/sourceforge/stigmata/ComparisonResultSet.java index 1f824b0..c98b0e8 100644 --- a/src/main/java/jp/naist/se/stigmata/ComparisonResultSet.java +++ b/src/main/java/jp/sourceforge/stigmata/ComparisonResultSet.java @@ -1,55 +1,55 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.util.Iterator; - -/** - * result set of birthmark comparison. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface ComparisonResultSet extends Iterable{ - /** - * the birthmark environment. - */ - public BirthmarkEnvironment getEnvironment(); - - /** - * the birthmark context. - */ - public BirthmarkContext getContext(); - - /** - * a iterator for {@link ComparisonPair ComparisonPair}. - */ - public Iterator iterator(); - - /** - * a comparison pair at given index. - */ - public ComparisonPair getPairAt(int index); - - /** - * all comparison pairs. - */ - public ComparisonPair[] getPairs(); - - /** - * comparison pair count of this instance has. - */ - public int getPairCount(); - - /** - * comparison source. - */ - public BirthmarkSet[] getPairSources(); - - /** - * returns an array of comparison sources. - */ - public Iterator pairSources(); -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.util.Iterator; + +/** + * result set of birthmark comparison. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface ComparisonResultSet extends Iterable{ + /** + * the birthmark environment. + */ + public BirthmarkEnvironment getEnvironment(); + + /** + * the birthmark context. + */ + public BirthmarkContext getContext(); + + /** + * a iterator for {@link ComparisonPair ComparisonPair}. + */ + public Iterator iterator(); + + /** + * a comparison pair at given index. + */ + public ComparisonPair getPairAt(int index); + + /** + * all comparison pairs. + */ + public ComparisonPair[] getPairs(); + + /** + * comparison pair count of this instance has. + */ + public int getPairCount(); + + /** + * comparison source. + */ + public BirthmarkSet[] getPairSources(); + + /** + * returns an array of comparison sources. + */ + public Iterator pairSources(); +} diff --git a/src/main/java/jp/naist/se/stigmata/ExtractionResultSet.java b/src/main/java/jp/sourceforge/stigmata/ExtractionResultSet.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ExtractionResultSet.java rename to src/main/java/jp/sourceforge/stigmata/ExtractionResultSet.java index 8a8f997..bb78fc9 100755 --- a/src/main/java/jp/naist/se/stigmata/ExtractionResultSet.java +++ b/src/main/java/jp/sourceforge/stigmata/ExtractionResultSet.java @@ -1,135 +1,135 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.util.Iterator; - -/** - * This interface represents a set of extracted birthmarks. - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public interface ExtractionResultSet extends Iterable{ - public BirthmarkStoreTarget getStoreTarget(); - - /** - * returns an environment of extraction result. - */ - public BirthmarkEnvironment getEnvironment(); - - /** - * returns a context of extraction result. - */ - public BirthmarkContext getContext(); - - public String getId(); - - /** - * sets extraction - */ - public boolean isTableType(); - - /** - * sets table type comparison flag. - * @see #isTableType() - */ - public void setTableType(boolean flag); - - /** - * returns types of extracted birthmarks. - */ - public String[] getBirthmarkTypes(); - - public ExtractionUnit getExtractionUnit(); - - /** - * returns the number of target birthmark-set size (# of classes, packages, or jar files). - */ - public int getBirthmarkSetSize(); - - /** - * returns an iterator for all of birthmark-sets. - */ - public Iterator iterator(); - - /** - * returns a birthmark-set of given index. - */ - public BirthmarkSet getBirthmarkSet(int index); - - /** - * returns a birthmark-set of given name. - */ - public BirthmarkSet getBirthmarkSet(String name); - - /** - * returns an array for all of birthmark-sets. - */ - public BirthmarkSet[] getBirthmarkSets(); - - /** - * removes given birthmark-set from this object. - */ - public void removeBirthmarkSet(BirthmarkSet bs); - - /** - * removes all of birthmark-set this object has. - */ - public void removeAllBirthmarkSets(); - - /** - * returns the number of birthmark-set to specified extraction target (TARGET_X, TARGET_Y, TARGET_XY, or TARGET_BOTH). - */ - public int getBirthmarkSetSize(ExtractionTarget target); - - /** - * returns an iterator of birthmark-sets from specified extraction target. - */ - public Iterator birthmarkSets(ExtractionTarget target); - - /** - * - */ - public BirthmarkSet getBirthmarkSet(ExtractionTarget target, int index); - - /** - * - */ - public BirthmarkSet getBirthmarkSet(ExtractionTarget target, String setname); - - /** - * - */ - public BirthmarkSet[] getBirthmarkSets(ExtractionTarget target); - - /** - * adds birthmark-set to extraction target. - * This method must be called when building birthmark-set is completely finished. - * All of birthmark must be added to birthmark-set. - * Because, if the concrete class of this interface stores given birthmark-set to database, - * birthmarks is parsed and store into target database in this method. - * @throws IllegalArgumentsException target is ExtractionTarget.TARGET_BOTH - */ - public void addBirthmarkSet(ExtractionTarget target, BirthmarkSet set) throws BirthmarkStoreException; - - /** - * remove all of birthmark-set this object has, then, adds each birthmark-sets to this object. - * @see #removeAllBirthmarkSets(ExtractionTarget) - * @see #addBirthmarkSet(ExtractionTarget, BirthmarkSet) - * @throws IllegalArgumentsException target is ExtractionTarget.TARGET_BOTH - */ - public void setBirthmarkSets(ExtractionTarget target, BirthmarkSet[] sets) throws BirthmarkStoreException; - - /** - * remove specified birthmark-set from specified extraction target. - */ - public void removeBirthmarkSet(ExtractionTarget target, BirthmarkSet set); - - /** - * remove all birthmark-sets from specified extraction target. - */ - public void removeAllBirthmarkSets(ExtractionTarget target); -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.util.Iterator; + +/** + * This interface represents a set of extracted birthmarks. + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public interface ExtractionResultSet extends Iterable{ + public BirthmarkStoreTarget getStoreTarget(); + + /** + * returns an environment of extraction result. + */ + public BirthmarkEnvironment getEnvironment(); + + /** + * returns a context of extraction result. + */ + public BirthmarkContext getContext(); + + public String getId(); + + /** + * sets extraction + */ + public boolean isTableType(); + + /** + * sets table type comparison flag. + * @see #isTableType() + */ + public void setTableType(boolean flag); + + /** + * returns types of extracted birthmarks. + */ + public String[] getBirthmarkTypes(); + + public ExtractionUnit getExtractionUnit(); + + /** + * returns the number of target birthmark-set size (# of classes, packages, or jar files). + */ + public int getBirthmarkSetSize(); + + /** + * returns an iterator for all of birthmark-sets. + */ + public Iterator iterator(); + + /** + * returns a birthmark-set of given index. + */ + public BirthmarkSet getBirthmarkSet(int index); + + /** + * returns a birthmark-set of given name. + */ + public BirthmarkSet getBirthmarkSet(String name); + + /** + * returns an array for all of birthmark-sets. + */ + public BirthmarkSet[] getBirthmarkSets(); + + /** + * removes given birthmark-set from this object. + */ + public void removeBirthmarkSet(BirthmarkSet bs); + + /** + * removes all of birthmark-set this object has. + */ + public void removeAllBirthmarkSets(); + + /** + * returns the number of birthmark-set to specified extraction target (TARGET_X, TARGET_Y, TARGET_XY, or TARGET_BOTH). + */ + public int getBirthmarkSetSize(ExtractionTarget target); + + /** + * returns an iterator of birthmark-sets from specified extraction target. + */ + public Iterator birthmarkSets(ExtractionTarget target); + + /** + * + */ + public BirthmarkSet getBirthmarkSet(ExtractionTarget target, int index); + + /** + * + */ + public BirthmarkSet getBirthmarkSet(ExtractionTarget target, String setname); + + /** + * + */ + public BirthmarkSet[] getBirthmarkSets(ExtractionTarget target); + + /** + * adds birthmark-set to extraction target. + * This method must be called when building birthmark-set is completely finished. + * All of birthmark must be added to birthmark-set. + * Because, if the concrete class of this interface stores given birthmark-set to database, + * birthmarks is parsed and store into target database in this method. + * @throws IllegalArgumentsException target is ExtractionTarget.TARGET_BOTH + */ + public void addBirthmarkSet(ExtractionTarget target, BirthmarkSet set) throws BirthmarkStoreException; + + /** + * remove all of birthmark-set this object has, then, adds each birthmark-sets to this object. + * @see #removeAllBirthmarkSets(ExtractionTarget) + * @see #addBirthmarkSet(ExtractionTarget, BirthmarkSet) + * @throws IllegalArgumentsException target is ExtractionTarget.TARGET_BOTH + */ + public void setBirthmarkSets(ExtractionTarget target, BirthmarkSet[] sets) throws BirthmarkStoreException; + + /** + * remove specified birthmark-set from specified extraction target. + */ + public void removeBirthmarkSet(ExtractionTarget target, BirthmarkSet set); + + /** + * remove all birthmark-sets from specified extraction target. + */ + public void removeAllBirthmarkSets(ExtractionTarget target); +} diff --git a/src/main/java/jp/naist/se/stigmata/ExtractionTarget.java b/src/main/java/jp/sourceforge/stigmata/ExtractionTarget.java similarity index 82% rename from src/main/java/jp/naist/se/stigmata/ExtractionTarget.java rename to src/main/java/jp/sourceforge/stigmata/ExtractionTarget.java index 510f251..5add1c7 100755 --- a/src/main/java/jp/naist/se/stigmata/ExtractionTarget.java +++ b/src/main/java/jp/sourceforge/stigmata/ExtractionTarget.java @@ -1,18 +1,18 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -/** - * This enum represents the mean of extracted birthmarks. - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public enum ExtractionTarget{ - TARGET_X, - TARGET_Y, - TARGET_XY, - TARGET_BOTH, +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +/** + * This enum represents the mean of extracted birthmarks. + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public enum ExtractionTarget{ + TARGET_X, + TARGET_Y, + TARGET_XY, + TARGET_BOTH, } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/ExtractionUnit.java b/src/main/java/jp/sourceforge/stigmata/ExtractionUnit.java similarity index 70% rename from src/main/java/jp/naist/se/stigmata/ExtractionUnit.java rename to src/main/java/jp/sourceforge/stigmata/ExtractionUnit.java index 94ad087..ce9d605 100755 --- a/src/main/java/jp/naist/se/stigmata/ExtractionUnit.java +++ b/src/main/java/jp/sourceforge/stigmata/ExtractionUnit.java @@ -1,23 +1,23 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -/** - * This enum type represents birthmark extraction unit. - * - * The name of - * {@link jp.naist.se.stigmata.BirthmarkSet BirthmarkSet} will be - * class name, method name, package name, or product name. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public enum ExtractionUnit{ - CLASS, - PACKAGE, - ARCHIVE, - @Deprecated - METHOD, -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +/** + * This enum type represents birthmark extraction unit. + * + * The name of + * {@link jp.sourceforge.stigmata.BirthmarkSet BirthmarkSet} will be + * class name, method name, package name, or product name. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public enum ExtractionUnit{ + CLASS, + PACKAGE, + ARCHIVE, + @Deprecated + METHOD, +} diff --git a/src/main/java/jp/naist/se/stigmata/ExtractorNotFoundException.java b/src/main/java/jp/sourceforge/stigmata/ExtractorNotFoundException.java similarity index 90% rename from src/main/java/jp/naist/se/stigmata/ExtractorNotFoundException.java rename to src/main/java/jp/sourceforge/stigmata/ExtractorNotFoundException.java index 6f3df30..62e11c2 100755 --- a/src/main/java/jp/naist/se/stigmata/ExtractorNotFoundException.java +++ b/src/main/java/jp/sourceforge/stigmata/ExtractorNotFoundException.java @@ -1,29 +1,29 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class ExtractorNotFoundException extends BirthmarkException{ - private static final long serialVersionUID = 2050231007494812969L; - - public ExtractorNotFoundException(){ - } - - public ExtractorNotFoundException(String message, Throwable cause){ - super(message, cause); - } - - public ExtractorNotFoundException(String message){ - super(message); - } - - public ExtractorNotFoundException(Throwable cause){ - super(cause); - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class ExtractorNotFoundException extends BirthmarkException{ + private static final long serialVersionUID = 2050231007494812969L; + + public ExtractorNotFoundException(){ + } + + public ExtractorNotFoundException(String message, Throwable cause){ + super(message, cause); + } + + public ExtractorNotFoundException(String message){ + super(message); + } + + public ExtractorNotFoundException(Throwable cause){ + super(cause); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/FilterNotFoundException.java b/src/main/java/jp/sourceforge/stigmata/FilterNotFoundException.java similarity index 90% rename from src/main/java/jp/naist/se/stigmata/FilterNotFoundException.java rename to src/main/java/jp/sourceforge/stigmata/FilterNotFoundException.java index c3f5cfa..71edca6 100755 --- a/src/main/java/jp/naist/se/stigmata/FilterNotFoundException.java +++ b/src/main/java/jp/sourceforge/stigmata/FilterNotFoundException.java @@ -1,29 +1,29 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class FilterNotFoundException extends BirthmarkException{ - private static final long serialVersionUID = -3981002035876805953L; - - public FilterNotFoundException(){ - } - - public FilterNotFoundException(String message, Throwable cause){ - super(message, cause); - } - - public FilterNotFoundException(String message){ - super(message); - } - - public FilterNotFoundException(Throwable cause){ - super(cause); - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class FilterNotFoundException extends BirthmarkException{ + private static final long serialVersionUID = -3981002035876805953L; + + public FilterNotFoundException(){ + } + + public FilterNotFoundException(String message, Throwable cause){ + super(message, cause); + } + + public FilterNotFoundException(String message){ + super(message); + } + + public FilterNotFoundException(Throwable cause){ + super(cause); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/Main.java b/src/main/java/jp/sourceforge/stigmata/Main.java similarity index 91% rename from src/main/java/jp/naist/se/stigmata/Main.java rename to src/main/java/jp/sourceforge/stigmata/Main.java index ed88557..255f2c0 100644 --- a/src/main/java/jp/naist/se/stigmata/Main.java +++ b/src/main/java/jp/sourceforge/stigmata/Main.java @@ -1,368 +1,368 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ResourceBundle; - -import jp.naist.se.stigmata.event.BirthmarkEngineAdapter; -import jp.naist.se.stigmata.event.BirthmarkEngineEvent; -import jp.naist.se.stigmata.event.WarningMessages; -import jp.naist.se.stigmata.hook.Phase; -import jp.naist.se.stigmata.hook.StigmataHookManager; -import jp.naist.se.stigmata.printer.BirthmarkServicePrinter; -import jp.naist.se.stigmata.printer.ComparisonResultSetPrinter; -import jp.naist.se.stigmata.printer.ExtractionResultSetPrinter; -import jp.naist.se.stigmata.printer.PrinterManager; -import jp.naist.se.stigmata.reader.ClasspathContext; -import jp.naist.se.stigmata.spi.BirthmarkSpi; -import jp.naist.se.stigmata.spi.ResultPrinterSpi; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; -import jp.naist.se.stigmata.utils.ConfigFileExporter; -import jp.sourceforge.talisman.xmlcli.CommandLinePlus; -import jp.sourceforge.talisman.xmlcli.OptionsBuilder; -import jp.sourceforge.talisman.xmlcli.ResourceHelpFormatter; -import jp.sourceforge.talisman.xmlcli.XmlCliConfigurationException; -import jp.sourceforge.talisman.xmlcli.builder.OptionsBuilderFactory; - -import org.apache.commons.cli.CommandLineParser; -import org.apache.commons.cli.HelpFormatter; -import org.apache.commons.cli.Options; -import org.apache.commons.cli.ParseException; -import org.apache.commons.cli.PosixParser; -import org.w3c.dom.DOMException; - -/** - * Front end class. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public final class Main{ - private PrinterManager manager = PrinterManager.getInstance(); - - /** - * main process. - * @throws org.apache.commons.cli.ParseException - */ - public Main(String[] args) throws ParseException{ - Options options = buildOptions(); - CommandLineParser parser = new PosixParser(); - CommandLinePlus commandLine = new CommandLinePlus(parser.parse(options, args, false)); - - Stigmata stigmata = Stigmata.getInstance(); - stigmata.configuration(commandLine.getOptionValue("config-file"), commandLine.hasOption("reset-config")); - - String[] arguments = commandLine.getArgs(); - - String mode = commandLine.getOptionValue("mode"); - String format = commandLine.getOptionValue("format"); - - if(format == null){ - format = "xml"; - } - if(mode == null){ - mode = "gui"; - } - BirthmarkContext context = stigmata.createContext(); - updateContext(context, commandLine); - - boolean exitFlag = executeOption(context.getEnvironment(), commandLine, options); - - if(!exitFlag){ - if(!("gui".equals(mode) || "list".equals(mode)) && (arguments == null || arguments.length == 0)){ - - printHelp(context.getEnvironment(), options); - return; - } - StigmataHookManager.getInstance().runHook(Phase.SETUP, context.getEnvironment()); - - if(mode.equals("list")){ - listBirthmarks(context, format); - } - else if(mode.equals("extract")){ - extractBirthmarks(stigmata, arguments, format, context); - } - else if(mode.equals("compare")){ - compareBirthmarks(stigmata, arguments, format, context); - } - else if(mode.equals("gui")){ - StigmataFrame frame = new StigmataFrame(stigmata, context.getEnvironment()); - frame.setVisible(true); - } - - if(!mode.equals("gui")){ - StigmataHookManager.getInstance().runHook(Phase.TEAR_DOWN, context.getEnvironment()); - } - else{ - final BirthmarkEnvironment env = context.getEnvironment(); - Runtime.getRuntime().addShutdownHook(new Thread(){ - public void run(){ - StigmataHookManager.getInstance().runHook( - Phase.TEAR_DOWN, env - ); - } - }); - } - } - } - - /** - * extract birthmarks. - */ - private void extractBirthmarks(Stigmata stigmata, String[] args, String format, - BirthmarkContext context){ - try{ - context.setComparisonMethod(ComparisonMethod.ROUND_ROBIN_SAME_PAIR); - BirthmarkEngine engine = new BirthmarkEngine(context.getEnvironment()); - - engine.addBirthmarkEngineListener(new BirthmarkEngineAdapter(){ - public void operationDone(BirthmarkEngineEvent e){ - WarningMessages warnings = e.getMessage(); - for(Iterator i = warnings.exceptions(); i.hasNext(); ){ - i.next().printStackTrace(); - } - } - }); - ExtractionResultSet ers = engine.extract(args, context); - - ResultPrinterSpi spi = manager.getService(format); - ExtractionResultSetPrinter formatter = spi.getExtractionResultSetPrinter(); - formatter.printResult(new PrintWriter(System.out), ers); - }catch(Exception ex){ - ex.printStackTrace(); - } - } - - /** - * - */ - private void compareBirthmarks(Stigmata stigmata, String[] args, String format, - BirthmarkContext context){ - try{ - BirthmarkEngine engine = new BirthmarkEngine(context.getEnvironment()); - context.setComparisonMethod(ComparisonMethod.ROUND_ROBIN_SAME_PAIR); - engine.addBirthmarkEngineListener(new BirthmarkEngineAdapter(){ - public void operationDone(BirthmarkEngineEvent e){ - WarningMessages warnings = e.getMessage(); - for(Iterator i = warnings.exceptions(); i.hasNext(); ){ - i.next().printStackTrace(); - } - } - }); - - ExtractionResultSet rs = engine.extract(args, context); - ComparisonResultSet resultset = engine.compare(rs); - if(context.hasFilter()){ - resultset = engine.filter(resultset); - } - - ResultPrinterSpi spi = manager.getService(format); - ComparisonResultSetPrinter formatter = spi.getComparisonResultSetPrinter(); - formatter.printResult(new PrintWriter(System.out), resultset); - }catch(Exception e){ - e.printStackTrace(); - } - } - - private void listBirthmarks(BirthmarkContext context, String format){ - try{ - BirthmarkSpi[] spis = context.getEnvironment().findServices(); - ResultPrinterSpi spi = manager.getService(format); - BirthmarkServicePrinter formatter = spi.getBirthmarkServicePrinter(); - - formatter.printResult(new PrintWriter(System.out), spis); - }catch(IOException e){ - e.printStackTrace(); - } - } - - private void updateContext(BirthmarkContext context, CommandLinePlus cl){ - BirthmarkEnvironment env = context.getEnvironment(); - - String[] birthmarks = getTargetBirthmarks(env, cl); - for(int i = 0; i < birthmarks.length; i++){ - context.addBirthmarkType(birthmarks[i]); - } - if(cl.hasOption("filter")){ - String[] filters = cl.getOptionValues("filter"); - for(int i = 0; i < filters.length; i++){ - context.addFilterType(filters[i]); - } - } - if(cl.hasOption("store-target")){ - String value = cl.getOptionValue("store-target"); - BirthmarkStoreTarget bst = BirthmarkStoreTarget.valueOf(value); - if(bst == null){ - bst = BirthmarkStoreTarget.MEMORY; - } - context.setStoreTarget(bst); - } - if(cl.hasOption("extraction-unit")){ - ExtractionUnit unit = ExtractionUnit.valueOf(cl.getOptionValue("extraction-unit")); - context.setExtractionUnit(unit); - } - - addClasspath(env.getClasspathContext(), cl); - } - - private String[] getTargetBirthmarks(BirthmarkEnvironment env, CommandLinePlus cl){ - String[] birthmarks = cl.getOptionValues("birthmark"); - if(birthmarks == null || birthmarks.length == 0){ - List birthmarkList = new ArrayList(); - for(BirthmarkSpi service: env.getServices()){ - if(!service.isExpert()){ - birthmarkList.add(service.getType()); - } - } - birthmarks = birthmarkList.toArray(new String[birthmarkList.size()]); - } - return birthmarks; - } - - private void addClasspath(ClasspathContext context, CommandLinePlus commandLine){ - String[] classpath = commandLine.getOptionValues("classpath"); - - if(classpath != null){ - for(String cp: classpath){ - try{ - File f = new File(cp); - if(f.exists()){ - context.addClasspath(f.toURI().toURL()); - } - }catch(MalformedURLException ex){ - } - } - } - } - - private boolean executeOption(BirthmarkEnvironment env, CommandLinePlus commandLine, Options options){ - boolean exitFlag = false; - if(commandLine.hasOption("help")){ - printHelp(env, options); - exitFlag = true; - } - if(commandLine.hasOption("version")){ - printVersion(); - exitFlag = true; - } - if(commandLine.hasOption("license")){ - printLicense(); - exitFlag = true; - } - if(commandLine.hasOption("export-config")){ - exportConfiguration(env, commandLine.getOptionValue("export-config")); - exitFlag = true; - } - return exitFlag; - } - - private Options buildOptions(){ - try{ - OptionsBuilderFactory factory = OptionsBuilderFactory.getInstance(); - URL location = getClass().getResource("/resources/options.xml"); - OptionsBuilder builder = factory.createBuilder(location); - Options options = builder.buildOptions(); - - return options; - }catch(XmlCliConfigurationException ex){ - ex.printStackTrace(); - }catch(DOMException ex){ - ex.printStackTrace(); - }catch(IOException ex){ - ex.printStackTrace(); - } - return null; - } - - public void exportConfiguration(BirthmarkEnvironment env, String file){ - try{ - PrintWriter out; - if(file == null){ - out = new PrintWriter(System.out); - } - else{ - if(!file.endsWith(".xml")){ - file = file + ".xml"; - } - out = new PrintWriter(new FileWriter(file)); - } - - new ConfigFileExporter(env).export(out); - out.close(); - }catch(IOException e){ - } - } - - public void printHelp(BirthmarkEnvironment env, Options options){ - Package p = getClass().getPackage(); - ResourceBundle helpResource = ResourceBundle.getBundle("resources.options"); - HelpFormatter formatter = new ResourceHelpFormatter(helpResource); - formatter.printHelp( - String.format( - helpResource.getString("cli.interface"), - p.getImplementationVersion() - ), - options - ); - System.out.println(); - System.out.println(helpResource.getString("cli.interface.birthmarks")); - for(BirthmarkSpi service: env.getServices()){ - if(!service.isExpert()){ - System.out.printf(" %-5s (%s): %s%n", service.getType(), - service.getDisplayType(), service.getDescription()); - } - } - System.out.println(); - System.out.println(helpResource.getString("cli.interface.filters")); - for(ComparisonPairFilterSet filterset: env.getFilterManager().getFilterSets()){ - String matchString = helpResource.getString("cli.interface.filter.matchall"); - if(filterset.isMatchAny()) matchString = helpResource.getString("cli.interface.filter.matchany"); - System.out.printf(" %s (%s)%n", filterset.getName(), matchString); - for(ComparisonPairFilter filter: filterset){ - System.out.printf(" %s%n", filter); - } - } - System.out.println(); - System.out.println(helpResource.getString("cli.interface.copyright")); - System.out.println(helpResource.getString("cli.interface.mailto")); - } - - public void printLicense(){ - try{ - InputStream in = getClass().getResourceAsStream("/META-INF/license.txt"); - BufferedReader reader = new BufferedReader(new InputStreamReader(in)); - String line; - - while((line = reader.readLine()) != null){ - System.out.println(line); - } - reader.close(); - }catch(IOException ex){ - ex.printStackTrace(); - } - } - - public void printVersion(){ - ResourceBundle helpResource = ResourceBundle.getBundle("resources.options"); - Package p = getClass().getPackage(); - System.out.printf("%s %s%n", helpResource.getString("cli.version.header"), p.getImplementationVersion()); - } - - public static void main(String[] args) throws Exception{ - new Main(args); - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.ResourceBundle; + +import jp.sourceforge.stigmata.event.BirthmarkEngineAdapter; +import jp.sourceforge.stigmata.event.BirthmarkEngineEvent; +import jp.sourceforge.stigmata.event.WarningMessages; +import jp.sourceforge.stigmata.hook.Phase; +import jp.sourceforge.stigmata.hook.StigmataHookManager; +import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter; +import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter; +import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter; +import jp.sourceforge.stigmata.printer.PrinterManager; +import jp.sourceforge.stigmata.reader.ClasspathContext; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; +import jp.sourceforge.stigmata.utils.ConfigFileExporter; +import jp.sourceforge.talisman.xmlcli.CommandLinePlus; +import jp.sourceforge.talisman.xmlcli.OptionsBuilder; +import jp.sourceforge.talisman.xmlcli.ResourceHelpFormatter; +import jp.sourceforge.talisman.xmlcli.XmlCliConfigurationException; +import jp.sourceforge.talisman.xmlcli.builder.OptionsBuilderFactory; + +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; +import org.apache.commons.cli.PosixParser; +import org.w3c.dom.DOMException; + +/** + * Front end class. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public final class Main{ + private PrinterManager manager = PrinterManager.getInstance(); + + /** + * main process. + * @throws org.apache.commons.cli.ParseException + */ + public Main(String[] args) throws ParseException{ + Options options = buildOptions(); + CommandLineParser parser = new PosixParser(); + CommandLinePlus commandLine = new CommandLinePlus(parser.parse(options, args, false)); + + Stigmata stigmata = Stigmata.getInstance(); + stigmata.configuration(commandLine.getOptionValue("config-file"), commandLine.hasOption("reset-config")); + + String[] arguments = commandLine.getArgs(); + + String mode = commandLine.getOptionValue("mode"); + String format = commandLine.getOptionValue("format"); + + if(format == null){ + format = "xml"; + } + if(mode == null){ + mode = "gui"; + } + BirthmarkContext context = stigmata.createContext(); + updateContext(context, commandLine); + + boolean exitFlag = executeOption(context.getEnvironment(), commandLine, options); + + if(!exitFlag){ + if(!("gui".equals(mode) || "list".equals(mode)) && (arguments == null || arguments.length == 0)){ + + printHelp(context.getEnvironment(), options); + return; + } + StigmataHookManager.getInstance().runHook(Phase.SETUP, context.getEnvironment()); + + if(mode.equals("list")){ + listBirthmarks(context, format); + } + else if(mode.equals("extract")){ + extractBirthmarks(stigmata, arguments, format, context); + } + else if(mode.equals("compare")){ + compareBirthmarks(stigmata, arguments, format, context); + } + else if(mode.equals("gui")){ + StigmataFrame frame = new StigmataFrame(stigmata, context.getEnvironment()); + frame.setVisible(true); + } + + if(!mode.equals("gui")){ + StigmataHookManager.getInstance().runHook(Phase.TEAR_DOWN, context.getEnvironment()); + } + else{ + final BirthmarkEnvironment env = context.getEnvironment(); + Runtime.getRuntime().addShutdownHook(new Thread(){ + public void run(){ + StigmataHookManager.getInstance().runHook( + Phase.TEAR_DOWN, env + ); + } + }); + } + } + } + + /** + * extract birthmarks. + */ + private void extractBirthmarks(Stigmata stigmata, String[] args, String format, + BirthmarkContext context){ + try{ + context.setComparisonMethod(ComparisonMethod.ROUND_ROBIN_SAME_PAIR); + BirthmarkEngine engine = new BirthmarkEngine(context.getEnvironment()); + + engine.addBirthmarkEngineListener(new BirthmarkEngineAdapter(){ + public void operationDone(BirthmarkEngineEvent e){ + WarningMessages warnings = e.getMessage(); + for(Iterator i = warnings.exceptions(); i.hasNext(); ){ + i.next().printStackTrace(); + } + } + }); + ExtractionResultSet ers = engine.extract(args, context); + + ResultPrinterSpi spi = manager.getService(format); + ExtractionResultSetPrinter formatter = spi.getExtractionResultSetPrinter(); + formatter.printResult(new PrintWriter(System.out), ers); + }catch(Exception ex){ + ex.printStackTrace(); + } + } + + /** + * + */ + private void compareBirthmarks(Stigmata stigmata, String[] args, String format, + BirthmarkContext context){ + try{ + BirthmarkEngine engine = new BirthmarkEngine(context.getEnvironment()); + context.setComparisonMethod(ComparisonMethod.ROUND_ROBIN_SAME_PAIR); + engine.addBirthmarkEngineListener(new BirthmarkEngineAdapter(){ + public void operationDone(BirthmarkEngineEvent e){ + WarningMessages warnings = e.getMessage(); + for(Iterator i = warnings.exceptions(); i.hasNext(); ){ + i.next().printStackTrace(); + } + } + }); + + ExtractionResultSet rs = engine.extract(args, context); + ComparisonResultSet resultset = engine.compare(rs); + if(context.hasFilter()){ + resultset = engine.filter(resultset); + } + + ResultPrinterSpi spi = manager.getService(format); + ComparisonResultSetPrinter formatter = spi.getComparisonResultSetPrinter(); + formatter.printResult(new PrintWriter(System.out), resultset); + }catch(Exception e){ + e.printStackTrace(); + } + } + + private void listBirthmarks(BirthmarkContext context, String format){ + try{ + BirthmarkSpi[] spis = context.getEnvironment().findServices(); + ResultPrinterSpi spi = manager.getService(format); + BirthmarkServicePrinter formatter = spi.getBirthmarkServicePrinter(); + + formatter.printResult(new PrintWriter(System.out), spis); + }catch(IOException e){ + e.printStackTrace(); + } + } + + private void updateContext(BirthmarkContext context, CommandLinePlus cl){ + BirthmarkEnvironment env = context.getEnvironment(); + + String[] birthmarks = getTargetBirthmarks(env, cl); + for(int i = 0; i < birthmarks.length; i++){ + context.addBirthmarkType(birthmarks[i]); + } + if(cl.hasOption("filter")){ + String[] filters = cl.getOptionValues("filter"); + for(int i = 0; i < filters.length; i++){ + context.addFilterType(filters[i]); + } + } + if(cl.hasOption("store-target")){ + String value = cl.getOptionValue("store-target"); + BirthmarkStoreTarget bst = BirthmarkStoreTarget.valueOf(value); + if(bst == null){ + bst = BirthmarkStoreTarget.MEMORY; + } + context.setStoreTarget(bst); + } + if(cl.hasOption("extraction-unit")){ + ExtractionUnit unit = ExtractionUnit.valueOf(cl.getOptionValue("extraction-unit")); + context.setExtractionUnit(unit); + } + + addClasspath(env.getClasspathContext(), cl); + } + + private String[] getTargetBirthmarks(BirthmarkEnvironment env, CommandLinePlus cl){ + String[] birthmarks = cl.getOptionValues("birthmark"); + if(birthmarks == null || birthmarks.length == 0){ + List birthmarkList = new ArrayList(); + for(BirthmarkSpi service: env.getServices()){ + if(!service.isExpert()){ + birthmarkList.add(service.getType()); + } + } + birthmarks = birthmarkList.toArray(new String[birthmarkList.size()]); + } + return birthmarks; + } + + private void addClasspath(ClasspathContext context, CommandLinePlus commandLine){ + String[] classpath = commandLine.getOptionValues("classpath"); + + if(classpath != null){ + for(String cp: classpath){ + try{ + File f = new File(cp); + if(f.exists()){ + context.addClasspath(f.toURI().toURL()); + } + }catch(MalformedURLException ex){ + } + } + } + } + + private boolean executeOption(BirthmarkEnvironment env, CommandLinePlus commandLine, Options options){ + boolean exitFlag = false; + if(commandLine.hasOption("help")){ + printHelp(env, options); + exitFlag = true; + } + if(commandLine.hasOption("version")){ + printVersion(); + exitFlag = true; + } + if(commandLine.hasOption("license")){ + printLicense(); + exitFlag = true; + } + if(commandLine.hasOption("export-config")){ + exportConfiguration(env, commandLine.getOptionValue("export-config")); + exitFlag = true; + } + return exitFlag; + } + + private Options buildOptions(){ + try{ + OptionsBuilderFactory factory = OptionsBuilderFactory.getInstance(); + URL location = getClass().getResource("/resources/options.xml"); + OptionsBuilder builder = factory.createBuilder(location); + Options options = builder.buildOptions(); + + return options; + }catch(XmlCliConfigurationException ex){ + ex.printStackTrace(); + }catch(DOMException ex){ + ex.printStackTrace(); + }catch(IOException ex){ + ex.printStackTrace(); + } + return null; + } + + public void exportConfiguration(BirthmarkEnvironment env, String file){ + try{ + PrintWriter out; + if(file == null){ + out = new PrintWriter(System.out); + } + else{ + if(!file.endsWith(".xml")){ + file = file + ".xml"; + } + out = new PrintWriter(new FileWriter(file)); + } + + new ConfigFileExporter(env).export(out); + out.close(); + }catch(IOException e){ + } + } + + public void printHelp(BirthmarkEnvironment env, Options options){ + Package p = getClass().getPackage(); + ResourceBundle helpResource = ResourceBundle.getBundle("resources.options"); + HelpFormatter formatter = new ResourceHelpFormatter(helpResource); + formatter.printHelp( + String.format( + helpResource.getString("cli.interface"), + p.getImplementationVersion() + ), + options + ); + System.out.println(); + System.out.println(helpResource.getString("cli.interface.birthmarks")); + for(BirthmarkSpi service: env.getServices()){ + if(!service.isExpert()){ + System.out.printf(" %-5s (%s): %s%n", service.getType(), + service.getDisplayType(), service.getDescription()); + } + } + System.out.println(); + System.out.println(helpResource.getString("cli.interface.filters")); + for(ComparisonPairFilterSet filterset: env.getFilterManager().getFilterSets()){ + String matchString = helpResource.getString("cli.interface.filter.matchall"); + if(filterset.isMatchAny()) matchString = helpResource.getString("cli.interface.filter.matchany"); + System.out.printf(" %s (%s)%n", filterset.getName(), matchString); + for(ComparisonPairFilter filter: filterset){ + System.out.printf(" %s%n", filter); + } + } + System.out.println(); + System.out.println(helpResource.getString("cli.interface.copyright")); + System.out.println(helpResource.getString("cli.interface.mailto")); + } + + public void printLicense(){ + try{ + InputStream in = getClass().getResourceAsStream("/META-INF/license.txt"); + BufferedReader reader = new BufferedReader(new InputStreamReader(in)); + String line; + + while((line = reader.readLine()) != null){ + System.out.println(line); + } + reader.close(); + }catch(IOException ex){ + ex.printStackTrace(); + } + } + + public void printVersion(){ + ResourceBundle helpResource = ResourceBundle.getBundle("resources.options"); + Package p = getClass().getPackage(); + System.out.printf("%s %s%n", helpResource.getString("cli.version.header"), p.getImplementationVersion()); + } + + public static void main(String[] args) throws Exception{ + new Main(args); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/Stigmata.java b/src/main/java/jp/sourceforge/stigmata/Stigmata.java similarity index 91% rename from src/main/java/jp/naist/se/stigmata/Stigmata.java rename to src/main/java/jp/sourceforge/stigmata/Stigmata.java index ab6ee11..02608dd 100755 --- a/src/main/java/jp/naist/se/stigmata/Stigmata.java +++ b/src/main/java/jp/sourceforge/stigmata/Stigmata.java @@ -1,206 +1,206 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintWriter; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import jp.naist.se.stigmata.event.BirthmarkEngineListener; -import jp.naist.se.stigmata.printer.PrinterManager; -import jp.naist.se.stigmata.spi.BirthmarkSpi; -import jp.naist.se.stigmata.ui.swing.ExtensionFilter; -import jp.naist.se.stigmata.utils.ConfigFileExporter; -import jp.naist.se.stigmata.utils.ConfigFileImporter; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class Stigmata{ - /** - * instance. singleton pattern. - */ - private static Stigmata stigmata; - private BirthmarkEnvironment defaultEnvironment; - private List listeners = new ArrayList(); - - /** - * private constructor. - */ - private Stigmata(){ - configuration(); - } - - /** - * gets only instance of this class. - */ - public static synchronized Stigmata getInstance(){ - if(stigmata == null){ - stigmata = new Stigmata(); - } - return stigmata; - } - - /** - * creates a new birthmark context. - */ - public BirthmarkContext createContext(){ - return new BirthmarkContext(createEnvironment()); - } - - /** - * creates a new birthmark environment. - */ - public BirthmarkEnvironment createEnvironment(){ - return new BirthmarkEnvironment(defaultEnvironment); - } - - /** - * creates a new birthmark engine. - */ - public BirthmarkEngine createEngine(){ - return createEngine(createEnvironment()); - } - - /** - * creates a new birthmark engine with given environment. - */ - public BirthmarkEngine createEngine(BirthmarkEnvironment environment){ - BirthmarkEngine engine = new BirthmarkEngine(environment); - for(BirthmarkEngineListener listener: listeners){ - engine.addBirthmarkEngineListener(listener); - } - return engine; - } - - public void addBirthmarkEngineListener(BirthmarkEngineListener listener){ - listeners.add(listener); - } - - public void removeBirthmarkEngineListener(BirthmarkEngineListener listener){ - listeners.remove(listener); - } - - public void configuration(){ - configuration(null, false); - } - - public void configuration(String filePath, boolean resetFlag){ - InputStream target = null; - if(filePath != null){ - try{ - target = new FileInputStream(filePath); - } catch(FileNotFoundException e){ - filePath = null; - } - } - - if(filePath == null){ - String currentDirectory = System.getProperty("execution.directory"); - if(currentDirectory == null){ - currentDirectory = System.getProperty("user.dir"); - } - File file = new File(currentDirectory, "stigmata.xml"); - if(!file.exists()){ - file = new File(BirthmarkEnvironment.getStigmataHome(), "stigmata.xml"); - if(!file.exists()){ - file = null; - } - } - if(file != null){ - try { - target = new FileInputStream(file); - } catch (FileNotFoundException ex) { - // never throwed this exception; - throw new InternalError(ex.getMessage()); - } - } - } - if(target == null || resetFlag){ - target = getClass().getResourceAsStream("/resources/stigmata.xml"); - if(resetFlag){ - defaultEnvironment = null; - BirthmarkEnvironment.resetSettings(); - } - } - initConfiguration(target); - } - - private void initConfiguration(InputStream in){ - if(defaultEnvironment == null){ - defaultEnvironment = BirthmarkEnvironment.getDefaultEnvironment(); - } - buildStigmataDirectory(BirthmarkEnvironment.getStigmataHome()); - - defaultEnvironment.setClassLoader(buildClassLoader("plugins")); - try{ - ConfigFileImporter parser = new ConfigFileImporter(defaultEnvironment); - parser.parse(in); - } catch(IOException e){ - throw new ApplicationInitializationError(e); - } - for(Iterator i = defaultEnvironment.lookupProviders(BirthmarkSpi.class); i.hasNext(); ){ - BirthmarkSpi service = i.next(); - defaultEnvironment.addService(service); - } - PrinterManager.updateServices(defaultEnvironment); - exportConfigFile(BirthmarkEnvironment.getStigmataHome(), "stigmata.xml"); - } - - private void buildStigmataDirectory(String homeDirectory){ - File file = new File(homeDirectory); - if(file.exists() && file.isFile()){ - File dest = new File(file.getParent(), ".stigmata.back"); - file.renameTo(dest); - } - if(!file.exists()){ - file.mkdirs(); - } - File pluginDir = new File(file, "plugins"); - if(!pluginDir.exists()){ - pluginDir.mkdirs(); - } - } - - private void exportConfigFile(String parent, String fileName){ - try{ - File file = new File(parent, fileName); - if(!file.exists()){ - ConfigFileExporter exporter = new ConfigFileExporter(defaultEnvironment); - exporter.export(new PrintWriter(new FileWriter(file))); - } - } catch(IOException e){ - e.printStackTrace(); - } - } - - private static ClassLoader buildClassLoader(String path){ - File directory = new File(BirthmarkEnvironment.getStigmataHome(), path); - File[] jarfiles = directory.listFiles(new ExtensionFilter("jar")); - - if(jarfiles == null) jarfiles = new File[0]; - try{ - URL[] urls = new URL[jarfiles.length]; - for(int i = 0; i < jarfiles.length; i++){ - urls[i] = jarfiles[i].toURI().toURL(); - } - return new URLClassLoader(urls, Stigmata.class.getClassLoader()); - } catch(MalformedURLException e){ - } - return null; - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import jp.sourceforge.stigmata.event.BirthmarkEngineListener; +import jp.sourceforge.stigmata.printer.PrinterManager; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.ui.swing.ExtensionFilter; +import jp.sourceforge.stigmata.utils.ConfigFileExporter; +import jp.sourceforge.stigmata.utils.ConfigFileImporter; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class Stigmata{ + /** + * instance. singleton pattern. + */ + private static Stigmata stigmata; + private BirthmarkEnvironment defaultEnvironment; + private List listeners = new ArrayList(); + + /** + * private constructor. + */ + private Stigmata(){ + configuration(); + } + + /** + * gets only instance of this class. + */ + public static synchronized Stigmata getInstance(){ + if(stigmata == null){ + stigmata = new Stigmata(); + } + return stigmata; + } + + /** + * creates a new birthmark context. + */ + public BirthmarkContext createContext(){ + return new BirthmarkContext(createEnvironment()); + } + + /** + * creates a new birthmark environment. + */ + public BirthmarkEnvironment createEnvironment(){ + return new BirthmarkEnvironment(defaultEnvironment); + } + + /** + * creates a new birthmark engine. + */ + public BirthmarkEngine createEngine(){ + return createEngine(createEnvironment()); + } + + /** + * creates a new birthmark engine with given environment. + */ + public BirthmarkEngine createEngine(BirthmarkEnvironment environment){ + BirthmarkEngine engine = new BirthmarkEngine(environment); + for(BirthmarkEngineListener listener: listeners){ + engine.addBirthmarkEngineListener(listener); + } + return engine; + } + + public void addBirthmarkEngineListener(BirthmarkEngineListener listener){ + listeners.add(listener); + } + + public void removeBirthmarkEngineListener(BirthmarkEngineListener listener){ + listeners.remove(listener); + } + + public void configuration(){ + configuration(null, false); + } + + public void configuration(String filePath, boolean resetFlag){ + InputStream target = null; + if(filePath != null){ + try{ + target = new FileInputStream(filePath); + } catch(FileNotFoundException e){ + filePath = null; + } + } + + if(filePath == null){ + String currentDirectory = System.getProperty("execution.directory"); + if(currentDirectory == null){ + currentDirectory = System.getProperty("user.dir"); + } + File file = new File(currentDirectory, "stigmata.xml"); + if(!file.exists()){ + file = new File(BirthmarkEnvironment.getStigmataHome(), "stigmata.xml"); + if(!file.exists()){ + file = null; + } + } + if(file != null){ + try { + target = new FileInputStream(file); + } catch (FileNotFoundException ex) { + // never throwed this exception; + throw new InternalError(ex.getMessage()); + } + } + } + if(target == null || resetFlag){ + target = getClass().getResourceAsStream("/resources/stigmata.xml"); + if(resetFlag){ + defaultEnvironment = null; + BirthmarkEnvironment.resetSettings(); + } + } + initConfiguration(target); + } + + private void initConfiguration(InputStream in){ + if(defaultEnvironment == null){ + defaultEnvironment = BirthmarkEnvironment.getDefaultEnvironment(); + } + buildStigmataDirectory(BirthmarkEnvironment.getStigmataHome()); + + defaultEnvironment.setClassLoader(buildClassLoader("plugins")); + try{ + ConfigFileImporter parser = new ConfigFileImporter(defaultEnvironment); + parser.parse(in); + } catch(IOException e){ + throw new ApplicationInitializationError(e); + } + for(Iterator i = defaultEnvironment.lookupProviders(BirthmarkSpi.class); i.hasNext(); ){ + BirthmarkSpi service = i.next(); + defaultEnvironment.addService(service); + } + PrinterManager.updateServices(defaultEnvironment); + exportConfigFile(BirthmarkEnvironment.getStigmataHome(), "stigmata.xml"); + } + + private void buildStigmataDirectory(String homeDirectory){ + File file = new File(homeDirectory); + if(file.exists() && file.isFile()){ + File dest = new File(file.getParent(), ".stigmata.back"); + file.renameTo(dest); + } + if(!file.exists()){ + file.mkdirs(); + } + File pluginDir = new File(file, "plugins"); + if(!pluginDir.exists()){ + pluginDir.mkdirs(); + } + } + + private void exportConfigFile(String parent, String fileName){ + try{ + File file = new File(parent, fileName); + if(!file.exists()){ + ConfigFileExporter exporter = new ConfigFileExporter(defaultEnvironment); + exporter.export(new PrintWriter(new FileWriter(file))); + } + } catch(IOException e){ + e.printStackTrace(); + } + } + + private static ClassLoader buildClassLoader(String path){ + File directory = new File(BirthmarkEnvironment.getStigmataHome(), path); + File[] jarfiles = directory.listFiles(new ExtensionFilter("jar")); + + if(jarfiles == null) jarfiles = new File[0]; + try{ + URL[] urls = new URL[jarfiles.length]; + for(int i = 0; i < jarfiles.length; i++){ + urls[i] = jarfiles[i].toURI().toURL(); + } + return new URLClassLoader(urls, Stigmata.class.getClassLoader()); + } catch(MalformedURLException e){ + } + return null; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/ASMBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/ASMBirthmarkExtractor.java similarity index 83% rename from src/main/java/jp/naist/se/stigmata/birthmarks/ASMBirthmarkExtractor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/ASMBirthmarkExtractor.java index 3bbbc92..0d59333 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/ASMBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/ASMBirthmarkExtractor.java @@ -1,58 +1,58 @@ -package jp.naist.se.stigmata.birthmarks; - -/* - * $Id$ - */ - -import java.io.IOException; -import java.io.InputStream; - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkExtractionFailedException; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassWriter; - -/** - * Abstract birthmark extractor using ASM. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public abstract class ASMBirthmarkExtractor extends AbstractBirthmarkExtractor{ - public ASMBirthmarkExtractor(BirthmarkSpi spi){ - super(spi); - } - - @SuppressWarnings("deprecation") - public ASMBirthmarkExtractor(){ - super(); - } - - public abstract BirthmarkExtractVisitor - createExtractVisitor(ClassWriter writer, Birthmark birthmark, BirthmarkEnvironment environment); - - @Override - public Birthmark extract(Birthmark birthmark, InputStream in, - BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException{ - BirthmarkExtractionFailedException bee = new BirthmarkExtractionFailedException(); - - try{ - ClassReader reader = new ClassReader(in); - ClassWriter writer = new ClassWriter(false); - BirthmarkExtractVisitor visitor = createExtractVisitor(writer, birthmark, environment); - reader.accept(visitor, false); - - if(!visitor.isSuccess()){ - bee.addCauses(visitor.getCauses()); - } - - return visitor.getBirthmark(); - } catch(IOException e){ - bee.addCause(e); - throw bee; - } - } +package jp.sourceforge.stigmata.birthmarks; + +/* + * $Id$ + */ + +import java.io.IOException; +import java.io.InputStream; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkExtractionFailedException; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +import org.objectweb.asm.ClassReader; +import org.objectweb.asm.ClassWriter; + +/** + * Abstract birthmark extractor using ASM. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public abstract class ASMBirthmarkExtractor extends AbstractBirthmarkExtractor{ + public ASMBirthmarkExtractor(BirthmarkSpi spi){ + super(spi); + } + + @SuppressWarnings("deprecation") + public ASMBirthmarkExtractor(){ + super(); + } + + public abstract BirthmarkExtractVisitor + createExtractVisitor(ClassWriter writer, Birthmark birthmark, BirthmarkEnvironment environment); + + @Override + public Birthmark extract(Birthmark birthmark, InputStream in, + BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException{ + BirthmarkExtractionFailedException bee = new BirthmarkExtractionFailedException(); + + try{ + ClassReader reader = new ClassReader(in); + ClassWriter writer = new ClassWriter(false); + BirthmarkExtractVisitor visitor = createExtractVisitor(writer, birthmark, environment); + reader.accept(visitor, false); + + if(!visitor.isSuccess()){ + bee.addCauses(visitor.getCauses()); + } + + return visitor.getBirthmark(); + } catch(IOException e){ + bee.addCause(e); + throw bee; + } + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/AbstractBirthmark.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmark.java similarity index 89% rename from src/main/java/jp/naist/se/stigmata/birthmarks/AbstractBirthmark.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmark.java index 0427767..5e48ef0 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/AbstractBirthmark.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmark.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.birthmarks; +package jp.sourceforge.stigmata.birthmarks; /* * $Id$ @@ -9,8 +9,8 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; /** * Abstract class for concrete {@link Birthmark Birthmark} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/AbstractBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkExtractor.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/birthmarks/AbstractBirthmarkExtractor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkExtractor.java index fa5f78b..e926edf 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/AbstractBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkExtractor.java @@ -1,124 +1,124 @@ -package jp.naist.se.stigmata.birthmarks; - -/* - * $Id$ - */ - -import java.io.ByteArrayInputStream; -import java.io.InputStream; - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkExtractionFailedException; -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.ExtractionUnit; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * Abstract class for extracting birthmark. - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public abstract class AbstractBirthmarkExtractor implements BirthmarkExtractor{ - /** - * provider. - */ - private BirthmarkSpi spi; - - /** - * default constructor. - * @deprecated this constructor does not support service provider. - */ - public AbstractBirthmarkExtractor(){ - } - - /** - * constructor. - * @param spi service provider. - */ - public AbstractBirthmarkExtractor(BirthmarkSpi spi){ - this.spi = spi; - } - - /** - * returns the provider of this extractor. - */ - public BirthmarkSpi getProvider(){ - return spi; - } - - /** - * extract birthmark given stream. - */ - public final Birthmark extract(InputStream in) throws BirthmarkExtractionFailedException{ - return extract(in, BirthmarkEnvironment.getDefaultEnvironment()); - } - - /** - * extract birthmark given byte array. - */ - public final Birthmark extract(byte[] bytecode) throws BirthmarkExtractionFailedException{ - return extract(bytecode, BirthmarkEnvironment.getDefaultEnvironment()); - } - - /** - * extract birthmark given stream. - */ - public final Birthmark extract(Birthmark birthmark, InputStream in) throws BirthmarkExtractionFailedException{ - return extract(birthmark, in, BirthmarkEnvironment.getDefaultEnvironment()); - } - - /** - * extract birthmark given byte array. - */ - public final Birthmark extract(Birthmark birthmark, byte[] bytecode) throws BirthmarkExtractionFailedException{ - return extract(birthmark, bytecode, BirthmarkEnvironment.getDefaultEnvironment()); - } - - /** - * extract birthmark given stream with given environment. - */ - public final Birthmark extract(InputStream in, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException{ - return extract(createBirthmark(), in, environment); - } - - /** - * extract birthmark given byte array with given environment. - */ - public final Birthmark extract(Birthmark birthmark, byte[] bytecode, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException{ - return extract(birthmark, new ByteArrayInputStream(bytecode), environment); - } - - /** - * extract birthmark given byte array with given environment. - */ - public final Birthmark extract(byte[] bytecode, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException{ - return extract(createBirthmark(), new ByteArrayInputStream(bytecode), environment); - } - - /** - * extract birthmark given stream with given environment. - */ - public abstract Birthmark extract(Birthmark birthmark, InputStream in, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException; - - /** - * create birthmark. - * @see jp.naist.se.stigmata.BirthmarkExtractor#createBirthmark() - */ - public Birthmark createBirthmark(){ - return new PlainBirthmark(getProvider().getType()); - } - - public abstract ExtractionUnit[] getAcceptableUnits(); - - public boolean isAcceptable(ExtractionUnit unit){ - ExtractionUnit[] units = getAcceptableUnits(); - - for(int i = 0; i < units.length; i++){ - if(units[i] == unit){ - return true; - } - } - return false; - } -} +package jp.sourceforge.stigmata.birthmarks; + +/* + * $Id$ + */ + +import java.io.ByteArrayInputStream; +import java.io.InputStream; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkExtractionFailedException; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.ExtractionUnit; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * Abstract class for extracting birthmark. + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public abstract class AbstractBirthmarkExtractor implements BirthmarkExtractor{ + /** + * provider. + */ + private BirthmarkSpi spi; + + /** + * default constructor. + * @deprecated this constructor does not support service provider. + */ + public AbstractBirthmarkExtractor(){ + } + + /** + * constructor. + * @param spi service provider. + */ + public AbstractBirthmarkExtractor(BirthmarkSpi spi){ + this.spi = spi; + } + + /** + * returns the provider of this extractor. + */ + public BirthmarkSpi getProvider(){ + return spi; + } + + /** + * extract birthmark given stream. + */ + public final Birthmark extract(InputStream in) throws BirthmarkExtractionFailedException{ + return extract(in, BirthmarkEnvironment.getDefaultEnvironment()); + } + + /** + * extract birthmark given byte array. + */ + public final Birthmark extract(byte[] bytecode) throws BirthmarkExtractionFailedException{ + return extract(bytecode, BirthmarkEnvironment.getDefaultEnvironment()); + } + + /** + * extract birthmark given stream. + */ + public final Birthmark extract(Birthmark birthmark, InputStream in) throws BirthmarkExtractionFailedException{ + return extract(birthmark, in, BirthmarkEnvironment.getDefaultEnvironment()); + } + + /** + * extract birthmark given byte array. + */ + public final Birthmark extract(Birthmark birthmark, byte[] bytecode) throws BirthmarkExtractionFailedException{ + return extract(birthmark, bytecode, BirthmarkEnvironment.getDefaultEnvironment()); + } + + /** + * extract birthmark given stream with given environment. + */ + public final Birthmark extract(InputStream in, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException{ + return extract(createBirthmark(), in, environment); + } + + /** + * extract birthmark given byte array with given environment. + */ + public final Birthmark extract(Birthmark birthmark, byte[] bytecode, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException{ + return extract(birthmark, new ByteArrayInputStream(bytecode), environment); + } + + /** + * extract birthmark given byte array with given environment. + */ + public final Birthmark extract(byte[] bytecode, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException{ + return extract(createBirthmark(), new ByteArrayInputStream(bytecode), environment); + } + + /** + * extract birthmark given stream with given environment. + */ + public abstract Birthmark extract(Birthmark birthmark, InputStream in, BirthmarkEnvironment environment) throws BirthmarkExtractionFailedException; + + /** + * create birthmark. + * @see jp.sourceforge.stigmata.BirthmarkExtractor#createBirthmark() + */ + public Birthmark createBirthmark(){ + return new PlainBirthmark(getProvider().getType()); + } + + public abstract ExtractionUnit[] getAcceptableUnits(); + + public boolean isAcceptable(ExtractionUnit unit){ + ExtractionUnit[] units = getAcceptableUnits(); + + for(int i = 0; i < units.length; i++){ + if(units[i] == unit){ + return true; + } + } + return false; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/AbstractBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkService.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/birthmarks/AbstractBirthmarkService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkService.java index e09a33d..0ed182f 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/AbstractBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkService.java @@ -1,85 +1,85 @@ -package jp.naist.se.stigmata.birthmarks; - -/* - * $Id$ - */ - -import java.util.Locale; - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.spi.BirthmarkSpi; -import jp.naist.se.stigmata.utils.LocalizedDescriptionManager; - -/** - * Abstract class for {@link BirthmarkSpi BirthmarkSpi} - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public abstract class AbstractBirthmarkService implements BirthmarkSpi{ - public String getDisplayType(){ - return getDisplayType(Locale.getDefault()); - } - - public String getDisplayType(Locale locale){ - LocalizedDescriptionManager manager = LocalizedDescriptionManager.getInstance(); - String type = manager.getDisplayType(locale, getType()); - if(type == null){ - type = getType(); - } - return type; - } - - public String getDescription(){ - return getDescription(Locale.getDefault()); - } - - public String getDescription(Locale locale){ - LocalizedDescriptionManager manager = LocalizedDescriptionManager.getInstance(); - String description = manager.getDescription(locale, getType()); - if(description == null){ - description = getDefaultDescription(); - } - return description; - } - - public String getComparatorClassName(){ - return getComparator().getClass().getName(); - } - - public String getExtractorClassName(){ - return getExtractor().getClass().getName(); - } - - public abstract String getType(); - - public abstract String getDefaultDescription(); - - public boolean isExpert(){ - return true; - } - - public boolean isUserDefined(){ - return true; - } - - public String getVersion(){ - return getClass().getPackage().getImplementationVersion(); - } - - public String getVendorName(){ - return getClass().getPackage().getImplementationVendor(); - } - - public Birthmark buildBirthmark(){ - return getExtractor().createBirthmark(); - } - - public BirthmarkElement buildBirthmarkElement(String value){ - if(value == null || value.equals("")){ - return NullBirthmarkElement.getInstance(); - } - return new BirthmarkElement(value); - } -} +package jp.sourceforge.stigmata.birthmarks; + +/* + * $Id$ + */ + +import java.util.Locale; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; + +/** + * Abstract class for {@link BirthmarkSpi BirthmarkSpi} + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public abstract class AbstractBirthmarkService implements BirthmarkSpi{ + public String getDisplayType(){ + return getDisplayType(Locale.getDefault()); + } + + public String getDisplayType(Locale locale){ + LocalizedDescriptionManager manager = LocalizedDescriptionManager.getInstance(); + String type = manager.getDisplayType(locale, getType()); + if(type == null){ + type = getType(); + } + return type; + } + + public String getDescription(){ + return getDescription(Locale.getDefault()); + } + + public String getDescription(Locale locale){ + LocalizedDescriptionManager manager = LocalizedDescriptionManager.getInstance(); + String description = manager.getDescription(locale, getType()); + if(description == null){ + description = getDefaultDescription(); + } + return description; + } + + public String getComparatorClassName(){ + return getComparator().getClass().getName(); + } + + public String getExtractorClassName(){ + return getExtractor().getClass().getName(); + } + + public abstract String getType(); + + public abstract String getDefaultDescription(); + + public boolean isExpert(){ + return true; + } + + public boolean isUserDefined(){ + return true; + } + + public String getVersion(){ + return getClass().getPackage().getImplementationVersion(); + } + + public String getVendorName(){ + return getClass().getPackage().getImplementationVendor(); + } + + public Birthmark buildBirthmark(){ + return getExtractor().createBirthmark(); + } + + public BirthmarkElement buildBirthmarkElement(String value){ + if(value == null || value.equals("")){ + return NullBirthmarkElement.getInstance(); + } + return new BirthmarkElement(value); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/BirthmarkExtractVisitor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkExtractVisitor.java similarity index 84% rename from src/main/java/jp/naist/se/stigmata/birthmarks/BirthmarkExtractVisitor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkExtractVisitor.java index 0e68303..852e602 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/BirthmarkExtractVisitor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkExtractVisitor.java @@ -1,57 +1,57 @@ -package jp.naist.se.stigmata.birthmarks; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.List; - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkEnvironment; - -import org.objectweb.asm.ClassAdapter; -import org.objectweb.asm.ClassVisitor; - -/** - * Abstract visitor class of extracting birthmarks from class file. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public abstract class BirthmarkExtractVisitor extends ClassAdapter{ - private Birthmark birthmark; - private BirthmarkEnvironment environment; - private List causes = new ArrayList(); - - public BirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkEnvironment environment){ - super(visitor); - this.birthmark = birthmark; - this.environment = environment; - } - - protected BirthmarkEnvironment getEnvironment(){ - return environment; - } - - protected void addElement(BirthmarkElement element){ - birthmark.addElement(element); - } - - public Birthmark getBirthmark(){ - return birthmark; - } - - public synchronized void addFailur(Throwable e){ - causes.add(e); - } - - public boolean isSuccess(){ - return causes.size() == 0; - } - - public synchronized Throwable[] getCauses(){ - return causes.toArray(new Throwable[causes.size()]); - } -} +package jp.sourceforge.stigmata.birthmarks; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.List; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkEnvironment; + +import org.objectweb.asm.ClassAdapter; +import org.objectweb.asm.ClassVisitor; + +/** + * Abstract visitor class of extracting birthmarks from class file. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public abstract class BirthmarkExtractVisitor extends ClassAdapter{ + private Birthmark birthmark; + private BirthmarkEnvironment environment; + private List causes = new ArrayList(); + + public BirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkEnvironment environment){ + super(visitor); + this.birthmark = birthmark; + this.environment = environment; + } + + protected BirthmarkEnvironment getEnvironment(){ + return environment; + } + + protected void addElement(BirthmarkElement element){ + birthmark.addElement(element); + } + + public Birthmark getBirthmark(){ + return birthmark; + } + + public synchronized void addFailur(Throwable e){ + causes.add(e); + } + + public boolean isSuccess(){ + return causes.size() == 0; + } + + public synchronized Throwable[] getCauses(){ + return causes.toArray(new Throwable[causes.size()]); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/BirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkService.java similarity index 91% rename from src/main/java/jp/naist/se/stigmata/birthmarks/BirthmarkService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkService.java index 40d01e7..763b4d4 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/BirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkService.java @@ -1,161 +1,161 @@ -package jp.naist.se.stigmata.birthmarks; - -/* - * $Id$ - */ - -import java.lang.reflect.Constructor; - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * Service provider interface for birthmarks which are defined in - * configuration files. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ - private Class extractorClass; - private Class comparatorClass; - private String type; - private String displayType; - private String description; - private BirthmarkExtractor extractorObject; - private BirthmarkComparator comparatorObject; - private boolean userDefined = true; - private BirthmarkEnvironment environment; - - public BirthmarkService(BirthmarkEnvironment environment){ - this.environment = environment; - } - - public BirthmarkService(){ - } - - public void setBirthmarkEnvironment(BirthmarkEnvironment environment){ - this.environment = environment; - } - - public void setExtractorClassName(String extractor){ - try{ - Class c; - if(environment == null){ - c = Class.forName(extractor); - } - else{ - c = environment.getClasspathContext().findClass(extractor); - } - extractorClass = c.asSubclass(BirthmarkExtractor.class); - extractorObject = null; - } catch(ClassNotFoundException e){ - e.printStackTrace(); - } - } - - public void setComparatorClassName(String comparator){ - try{ - Class c; - if(environment == null){ - c = Class.forName(comparator); - } - else{ - c = environment.getClasspathContext().findClass(comparator); - } - comparatorClass = c.asSubclass(BirthmarkComparator.class); - comparatorObject = null; - } catch(ClassNotFoundException e){ - e.printStackTrace(); - } - } - - public void setType(String type){ - this.type = type; - } - - /** - * returns a type of the birthmark this service provides. - */ - @Override - public String getType(){ - return type; - } - - public void setDisplayType(String displayType){ - this.displayType = displayType; - } - - public String getDisplayType(){ - return displayType; - } - - public void setDescription(String description){ - this.description = description; - } - - public String getDescription(){ - String desc = description; - if(description == null){ - desc = ""; - } - return desc; - } - - /** - * returns a description of the birthmark this service provides. - */ - @Override - public String getDefaultDescription(){ - return description; - } - - public String getExtractorClassName(){ - return extractorClass.getName(); - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkExtractor getExtractor(){ - if(extractorObject == null){ - try{ - Constructor c = extractorClass.getConstructor(BirthmarkSpi.class); - extractorObject = c.newInstance(this); - } catch(Exception e){ - e.printStackTrace(); - } - } - return extractorObject; - } - - public String getComparatorClassName(){ - return comparatorClass.getName(); - } - - /** - * returns a comparator for the birthmark of this service. - */ - public BirthmarkComparator getComparator(){ - if(comparatorObject == null){ - try{ - Constructor c = comparatorClass.getConstructor(BirthmarkSpi.class); - comparatorObject = c.newInstance(this); - } catch(Exception e){ - e.printStackTrace(); - } - } - return comparatorObject; - } - - public boolean isUserDefined(){ - return userDefined; - } - - public void setUserDefined(boolean userDefined){ - this.userDefined = userDefined; - } -} - +package jp.sourceforge.stigmata.birthmarks; + +/* + * $Id$ + */ + +import java.lang.reflect.Constructor; + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * Service provider interface for birthmarks which are defined in + * configuration files. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ + private Class extractorClass; + private Class comparatorClass; + private String type; + private String displayType; + private String description; + private BirthmarkExtractor extractorObject; + private BirthmarkComparator comparatorObject; + private boolean userDefined = true; + private BirthmarkEnvironment environment; + + public BirthmarkService(BirthmarkEnvironment environment){ + this.environment = environment; + } + + public BirthmarkService(){ + } + + public void setBirthmarkEnvironment(BirthmarkEnvironment environment){ + this.environment = environment; + } + + public void setExtractorClassName(String extractor){ + try{ + Class c; + if(environment == null){ + c = Class.forName(extractor); + } + else{ + c = environment.getClasspathContext().findClass(extractor); + } + extractorClass = c.asSubclass(BirthmarkExtractor.class); + extractorObject = null; + } catch(ClassNotFoundException e){ + e.printStackTrace(); + } + } + + public void setComparatorClassName(String comparator){ + try{ + Class c; + if(environment == null){ + c = Class.forName(comparator); + } + else{ + c = environment.getClasspathContext().findClass(comparator); + } + comparatorClass = c.asSubclass(BirthmarkComparator.class); + comparatorObject = null; + } catch(ClassNotFoundException e){ + e.printStackTrace(); + } + } + + public void setType(String type){ + this.type = type; + } + + /** + * returns a type of the birthmark this service provides. + */ + @Override + public String getType(){ + return type; + } + + public void setDisplayType(String displayType){ + this.displayType = displayType; + } + + public String getDisplayType(){ + return displayType; + } + + public void setDescription(String description){ + this.description = description; + } + + public String getDescription(){ + String desc = description; + if(description == null){ + desc = ""; + } + return desc; + } + + /** + * returns a description of the birthmark this service provides. + */ + @Override + public String getDefaultDescription(){ + return description; + } + + public String getExtractorClassName(){ + return extractorClass.getName(); + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkExtractor getExtractor(){ + if(extractorObject == null){ + try{ + Constructor c = extractorClass.getConstructor(BirthmarkSpi.class); + extractorObject = c.newInstance(this); + } catch(Exception e){ + e.printStackTrace(); + } + } + return extractorObject; + } + + public String getComparatorClassName(){ + return comparatorClass.getName(); + } + + /** + * returns a comparator for the birthmark of this service. + */ + public BirthmarkComparator getComparator(){ + if(comparatorObject == null){ + try{ + Constructor c = comparatorClass.getConstructor(BirthmarkSpi.class); + comparatorObject = c.newInstance(this); + } catch(Exception e){ + e.printStackTrace(); + } + } + return comparatorObject; + } + + public boolean isUserDefined(){ + return userDefined; + } + + public void setUserDefined(boolean userDefined){ + this.userDefined = userDefined; + } +} + diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/FrequencyBirthmark.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/FrequencyBirthmark.java similarity index 90% rename from src/main/java/jp/naist/se/stigmata/birthmarks/FrequencyBirthmark.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/FrequencyBirthmark.java index a7fc1cb..48e9dcd 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/FrequencyBirthmark.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/FrequencyBirthmark.java @@ -1,81 +1,81 @@ -package jp.naist.se.stigmata.birthmarks; - -/* - * $Id$ - */ - -import java.util.Arrays; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.utils.ArrayIterator; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class FrequencyBirthmark extends AbstractBirthmark{ - private static final long serialVersionUID = 1905526895627693908L; - - private Map counts = new HashMap(); - private String type; - - public FrequencyBirthmark(String type){ - this.type = type; - } - - @Override - public int getElementCount(){ - return counts.size(); - } - - @Override - public synchronized BirthmarkElement[] getElements(){ - FrequencyBirthmarkElement[] elements = new FrequencyBirthmarkElement[counts.size()]; - int index = 0; - for(Map.Entry entry: counts.entrySet()){ - elements[index] = entry.getValue(); - index++; - } - Arrays.sort(elements, new Comparator(){ - public int compare(FrequencyBirthmarkElement o1, FrequencyBirthmarkElement o2){ - return o1.getValueName().compareTo(o2.getValueName()); - } - }); - - return elements; - } - - @Override - public Iterator iterator(){ - return new ArrayIterator(getElements()); - } - - public void addElement(BirthmarkElement element){ - String value; - if(element instanceof FrequencyBirthmarkElement){ - FrequencyBirthmarkElement e = (FrequencyBirthmarkElement)element; - value = e.getValueName(); - } - else{ - value = (String)element.getValue(); - } - FrequencyBirthmarkElement foundElement = counts.get(value); - if(foundElement != null){ - foundElement.incrementValueCount(); - } - else{ - foundElement = new FrequencyBirthmarkElement(value); - } - counts.put(value, foundElement); - } - - @Override - public String getType(){ - return type; - } -} +package jp.sourceforge.stigmata.birthmarks; + +/* + * $Id$ + */ + +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.utils.ArrayIterator; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class FrequencyBirthmark extends AbstractBirthmark{ + private static final long serialVersionUID = 1905526895627693908L; + + private Map counts = new HashMap(); + private String type; + + public FrequencyBirthmark(String type){ + this.type = type; + } + + @Override + public int getElementCount(){ + return counts.size(); + } + + @Override + public synchronized BirthmarkElement[] getElements(){ + FrequencyBirthmarkElement[] elements = new FrequencyBirthmarkElement[counts.size()]; + int index = 0; + for(Map.Entry entry: counts.entrySet()){ + elements[index] = entry.getValue(); + index++; + } + Arrays.sort(elements, new Comparator(){ + public int compare(FrequencyBirthmarkElement o1, FrequencyBirthmarkElement o2){ + return o1.getValueName().compareTo(o2.getValueName()); + } + }); + + return elements; + } + + @Override + public Iterator iterator(){ + return new ArrayIterator(getElements()); + } + + public void addElement(BirthmarkElement element){ + String value; + if(element instanceof FrequencyBirthmarkElement){ + FrequencyBirthmarkElement e = (FrequencyBirthmarkElement)element; + value = e.getValueName(); + } + else{ + value = (String)element.getValue(); + } + FrequencyBirthmarkElement foundElement = counts.get(value); + if(foundElement != null){ + foundElement.incrementValueCount(); + } + else{ + foundElement = new FrequencyBirthmarkElement(value); + } + counts.put(value, foundElement); + } + + @Override + public String getType(){ + return type; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/FrequencyBirthmarkElement.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/FrequencyBirthmarkElement.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/birthmarks/FrequencyBirthmarkElement.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/FrequencyBirthmarkElement.java index ee0d8dd..e8305dc 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/FrequencyBirthmarkElement.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/FrequencyBirthmarkElement.java @@ -1,87 +1,87 @@ -package jp.naist.se.stigmata.birthmarks; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkElement; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class FrequencyBirthmarkElement extends BirthmarkElement implements ValueCountable{ - private static final long serialVersionUID = 4454345943098520436L; - - private int count = 1; - - public FrequencyBirthmarkElement(String value){ - super(parseValue(value)); - if(!value.equals(super.getValue())){ - int number = new Integer(value.substring(0, value.indexOf(":"))); - this.count = number; - } - } - - public FrequencyBirthmarkElement(String value, int count){ - super(value); - this.count = count; - } - - void incrementValueCount(){ - count++; - } - - @Override - public boolean equals(Object o){ - boolean flag = false; - if(o instanceof FrequencyBirthmarkElement){ - FrequencyBirthmarkElement fmbe = (FrequencyBirthmarkElement)o; - flag = super.equals(fmbe) && getValueCount() == fmbe.getValueCount(); - } - return flag; - } - - @Override - public Object getValue(){ - return getValueCount() + ": " + getValueName(); - } - - @Override - public int hashCode(){ - int hash = super.hashCode(); - int shift = getValueCount() % 32; - - // cyclic shift - for(int i = 0; i < shift; i++){ - int v = hash & 1; - hash = hash >>> 1 | v << 31; - } - - return hash; - } - - public String getValueName(){ - return (String)super.getValue(); - } - - public int getValueCount(){ - return count; - } - - private static String parseValue(String value){ - if(value.indexOf(":") > 0){ - int index = value.indexOf(":"); - String num = value.substring(0, index); - String val = value.substring(index + 1); - try{ - // is number? - new Integer(num); - return val.trim(); - } catch(NumberFormatException e){ - } - } - return value; - } -} +package jp.sourceforge.stigmata.birthmarks; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkElement; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class FrequencyBirthmarkElement extends BirthmarkElement implements ValueCountable{ + private static final long serialVersionUID = 4454345943098520436L; + + private int count = 1; + + public FrequencyBirthmarkElement(String value){ + super(parseValue(value)); + if(!value.equals(super.getValue())){ + int number = new Integer(value.substring(0, value.indexOf(":"))); + this.count = number; + } + } + + public FrequencyBirthmarkElement(String value, int count){ + super(value); + this.count = count; + } + + void incrementValueCount(){ + count++; + } + + @Override + public boolean equals(Object o){ + boolean flag = false; + if(o instanceof FrequencyBirthmarkElement){ + FrequencyBirthmarkElement fmbe = (FrequencyBirthmarkElement)o; + flag = super.equals(fmbe) && getValueCount() == fmbe.getValueCount(); + } + return flag; + } + + @Override + public Object getValue(){ + return getValueCount() + ": " + getValueName(); + } + + @Override + public int hashCode(){ + int hash = super.hashCode(); + int shift = getValueCount() % 32; + + // cyclic shift + for(int i = 0; i < shift; i++){ + int v = hash & 1; + hash = hash >>> 1 | v << 31; + } + + return hash; + } + + public String getValueName(){ + return (String)super.getValue(); + } + + public int getValueCount(){ + return count; + } + + private static String parseValue(String value){ + if(value.indexOf(":") > 0){ + int index = value.indexOf(":"); + String num = value.substring(0, index); + String val = value.substring(index + 1); + try{ + // is number? + new Integer(num); + return val.trim(); + } catch(NumberFormatException e){ + } + } + return value; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/NullBirthmarkElement.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/NullBirthmarkElement.java similarity index 84% rename from src/main/java/jp/naist/se/stigmata/birthmarks/NullBirthmarkElement.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/NullBirthmarkElement.java index c9225f4..8506ba1 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/NullBirthmarkElement.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/NullBirthmarkElement.java @@ -1,39 +1,39 @@ -package jp.naist.se.stigmata.birthmarks; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkElement; - -/** - * Null birthmark element. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class NullBirthmarkElement extends BirthmarkElement{ - private static final long serialVersionUID = -92345638932523L; - - private static final NullBirthmarkElement ELEMENT = new NullBirthmarkElement(); - - private NullBirthmarkElement(){ - super(null); - } - - public static BirthmarkElement getInstance(){ - return ELEMENT; - } - - public int hashCode(){ - return 0; - } - - public boolean equals(Object o){ - return o instanceof NullBirthmarkElement; - } - - public String toString(){ - return ""; - } -} +package jp.sourceforge.stigmata.birthmarks; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkElement; + +/** + * Null birthmark element. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class NullBirthmarkElement extends BirthmarkElement{ + private static final long serialVersionUID = -92345638932523L; + + private static final NullBirthmarkElement ELEMENT = new NullBirthmarkElement(); + + private NullBirthmarkElement(){ + super(null); + } + + public static BirthmarkElement getInstance(){ + return ELEMENT; + } + + public int hashCode(){ + return 0; + } + + public boolean equals(Object o){ + return o instanceof NullBirthmarkElement; + } + + public String toString(){ + return ""; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/PlainBirthmark.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/PlainBirthmark.java similarity index 84% rename from src/main/java/jp/naist/se/stigmata/birthmarks/PlainBirthmark.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/PlainBirthmark.java index 25b5ee0..55af713 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/PlainBirthmark.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/PlainBirthmark.java @@ -1,43 +1,43 @@ -package jp.naist.se.stigmata.birthmarks; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkElement; - -/** - * Implementation of plain birthmark. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class PlainBirthmark extends AbstractBirthmark{ - private static final long serialVersionUID = 2370435723234463456L; - - private String type; - - public PlainBirthmark(String type){ - this.type = type; - } - - public PlainBirthmark(){ - } - - public void addElement(int index, BirthmarkElement element){ - elements.add(index, element); - } - - public BirthmarkElement getElement(int index){ - return elements.get(index); - } - - public void setType(String type){ - this.type = type; - } - - @Override - public String getType(){ - return type; - } -} +package jp.sourceforge.stigmata.birthmarks; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkElement; + +/** + * Implementation of plain birthmark. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class PlainBirthmark extends AbstractBirthmark{ + private static final long serialVersionUID = 2370435723234463456L; + + private String type; + + public PlainBirthmark(String type){ + this.type = type; + } + + public PlainBirthmark(){ + } + + public void addElement(int index, BirthmarkElement element){ + elements.add(index, element); + } + + public BirthmarkElement getElement(int index){ + return elements.get(index); + } + + public void setType(String type){ + this.type = type; + } + + @Override + public String getType(){ + return type; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/ValueCountable.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/ValueCountable.java similarity index 82% rename from src/main/java/jp/naist/se/stigmata/birthmarks/ValueCountable.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/ValueCountable.java index 3b619b0..96c4aa4 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/ValueCountable.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/ValueCountable.java @@ -1,17 +1,17 @@ -package jp.naist.se.stigmata.birthmarks; - -/* - * $Id$ - */ - -/** - * This interface represents that the implemented class have name and its count. - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public interface ValueCountable{ - public int getValueCount(); - - public String getValueName(); -} +package jp.sourceforge.stigmata.birthmarks; + +/* + * $Id$ + */ + +/** + * This interface represents that the implemented class have name and its count. + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public interface ValueCountable{ + public int getValueCount(); + + public String getValueName(); +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/AbstractBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparator.java similarity index 75% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/AbstractBirthmarkComparator.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparator.java index c1b758f..09dbeb3 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/AbstractBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparator.java @@ -1,41 +1,41 @@ -package jp.naist.se.stigmata.birthmarks.comparators; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * abstract birthmark comparator. - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public abstract class AbstractBirthmarkComparator implements BirthmarkComparator{ - private BirthmarkSpi spi; - - @Deprecated - public AbstractBirthmarkComparator(){ - } - - public AbstractBirthmarkComparator(BirthmarkSpi spi){ - this.spi = spi; - } - - public BirthmarkSpi getProvider(){ - return spi; - } - - public String getType(){ - return spi.getType(); - } - - public abstract double compare(Birthmark b1, Birthmark b2); - - public int getCompareCount(Birthmark b1, Birthmark b2){ - return b1.getElementCount() + b2.getElementCount(); - } -} +package jp.sourceforge.stigmata.birthmarks.comparators; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * abstract birthmark comparator. + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public abstract class AbstractBirthmarkComparator implements BirthmarkComparator{ + private BirthmarkSpi spi; + + @Deprecated + public AbstractBirthmarkComparator(){ + } + + public AbstractBirthmarkComparator(BirthmarkSpi spi){ + this.spi = spi; + } + + public BirthmarkSpi getProvider(){ + return spi; + } + + public String getType(){ + return spi.getType(); + } + + public abstract double compare(Birthmark b1, Birthmark b2); + + public int getCompareCount(Birthmark b1, Birthmark b2){ + return b1.getElementCount() + b2.getElementCount(); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java similarity index 82% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java index 81e5c76..9a5902e 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java @@ -1,65 +1,65 @@ -package jp.naist.se.stigmata.birthmarks.comparators; - -/* - * $Id$ - */ - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.Locale; - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.spi.AbstractServiceProvider; -import jp.naist.se.stigmata.spi.BirthmarkComparatorSpi; -import jp.naist.se.stigmata.spi.BirthmarkSpi; -import jp.naist.se.stigmata.utils.LocalizedDescriptionManager; - -/** - * Abstract service provider interface for comparing birthmarks. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -abstract class AbstractBirthmarkComparatorService extends AbstractServiceProvider implements BirthmarkComparatorSpi{ - /** - * returns a type of the birthmark this service provides. - */ - public abstract String getType(); - - /** - * returns a localized description of the birthmark this service provides. - */ - public String getDescription(Locale locale){ - return LocalizedDescriptionManager.getInstance().getDescription( - locale, getType(), LocalizedDescriptionManager.ServiceCategory.comparator - ); - } - - /** - * returns a localized description of the birthmark in default locale. - */ - public String getDescription(){ - return getDescription(Locale.getDefault()); - } - - public abstract String getComparatorClassName(); - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkComparator getComparator(BirthmarkSpi service){ - try{ - Class c = Class.forName(getComparatorClassName()); - Class clazz = c.asSubclass(BirthmarkComparator.class); - Constructor constructor = clazz.getConstructor(BirthmarkSpi.class); - return constructor.newInstance(service); - } catch(NoSuchMethodException e){ - } catch(InstantiationException e){ - } catch(InvocationTargetException e){ - } catch(ClassNotFoundException e){ - } catch(IllegalAccessException e){ - } - return null; - } -} - +package jp.sourceforge.stigmata.birthmarks.comparators; + +/* + * $Id$ + */ + +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.Locale; + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.AbstractServiceProvider; +import jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; + +/** + * Abstract service provider interface for comparing birthmarks. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +abstract class AbstractBirthmarkComparatorService extends AbstractServiceProvider implements BirthmarkComparatorSpi{ + /** + * returns a type of the birthmark this service provides. + */ + public abstract String getType(); + + /** + * returns a localized description of the birthmark this service provides. + */ + public String getDescription(Locale locale){ + return LocalizedDescriptionManager.getInstance().getDescription( + locale, getType(), LocalizedDescriptionManager.ServiceCategory.comparator + ); + } + + /** + * returns a localized description of the birthmark in default locale. + */ + public String getDescription(){ + return getDescription(Locale.getDefault()); + } + + public abstract String getComparatorClassName(); + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkComparator getComparator(BirthmarkSpi service){ + try{ + Class c = Class.forName(getComparatorClassName()); + Class clazz = c.asSubclass(BirthmarkComparator.class); + Constructor constructor = clazz.getConstructor(BirthmarkSpi.class); + return constructor.newInstance(service); + } catch(NoSuchMethodException e){ + } catch(InstantiationException e){ + } catch(InvocationTargetException e){ + } catch(ClassNotFoundException e){ + } catch(IllegalAccessException e){ + } + return null; + } +} + diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparator.java similarity index 90% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparator.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparator.java index adf35e5..66c91a9 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparator.java @@ -1,121 +1,121 @@ -package jp.naist.se.stigmata.birthmarks.comparators; - -/* - * $Id$ - */ - -import java.util.HashMap; -import java.util.Map; - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.birthmarks.ValueCountable; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * Comparing birthmarks by cosine similarity algorithm. This class compares - * birthmarks which must be implemented - * {@link ValueCountable ValueCountable} interface. - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class CosineSimilarityBirthmarkComparator extends - AbstractBirthmarkComparator{ - - public CosineSimilarityBirthmarkComparator(BirthmarkSpi spi){ - super(spi); - } - - public double compare(Birthmark b1, Birthmark b2){ - if(!b1.getType().equals(b2.getType())){ - return Double.NaN; - } - if(b1.getElementCount() == 0 && b2.getElementCount() == 0){ - return 1d; - } - else if(b1.getElementCount() == 0 || b2.getElementCount() == 0){ - return 0d; - } - - Map pairs = new HashMap(); - addCount(pairs, b1, true); - addCount(pairs, b2, false); - - double norm1 = norm(pairs, true); - double norm2 = norm(pairs, false); - double product = innerproduct(pairs); - double similarity = product / (norm1 * norm2); - // System.out.printf("%g / (%g * %g) = %g%n", product, norm1, norm2, similarity); - - // double radian = Math.acos(product / (norm1 * norm2)); - // double angle = 90 - (180 * radian / Math.PI); - // double sim = angle / 90; - // System.out.printf("angle: %g (%g“x, %g)%n", radian, angle, sim); - - return similarity; - } - - private double innerproduct(Map pairs){ - double sum = 0; - for(CountPair pair: pairs.values()){ - sum += pair.get(true) * pair.get(false); - } - return sum; - } - - private double norm(Map pairs, boolean first){ - double sum = 0; - for(CountPair pair: pairs.values()){ - sum += pair.get(first) * pair.get(first); - } - return Math.sqrt(sum); - } - - private void addCount(Map pairs, Birthmark birthmark, boolean first){ - for(BirthmarkElement element: birthmark){ - ValueCountable vc = (ValueCountable)element; - CountPair cp = pairs.get(vc.getValueName()); - if(cp == null){ - cp = new CountPair(); - pairs.put(vc.getValueName(), cp); - } - cp.set(first, vc.getValueCount()); - } - } - - private class CountPair{ - private int c1 = 0; - private int c2 = 0; - - public int get(boolean first){ - if(first){ - return c1; - } - else{ - return c2; - } - } - - public void set(boolean first, int count){ - if(first){ - c1 = count; - } - else{ - c2 = count; - } - } - } - - /** - * This method is used for debugging. - */ - @SuppressWarnings("unused") - private void printAll(Map pairs){ - System.out.println("----------"); - for(Map.Entry entry: pairs.entrySet()){ - CountPair pair = entry.getValue(); - System.out.printf("%40s: %5d, %5d%n", entry.getKey(), pair.get(true), pair.get(false)); - } - } -} +package jp.sourceforge.stigmata.birthmarks.comparators; + +/* + * $Id$ + */ + +import java.util.HashMap; +import java.util.Map; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.birthmarks.ValueCountable; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * Comparing birthmarks by cosine similarity algorithm. This class compares + * birthmarks which must be implemented + * {@link ValueCountable ValueCountable} interface. + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class CosineSimilarityBirthmarkComparator extends + AbstractBirthmarkComparator{ + + public CosineSimilarityBirthmarkComparator(BirthmarkSpi spi){ + super(spi); + } + + public double compare(Birthmark b1, Birthmark b2){ + if(!b1.getType().equals(b2.getType())){ + return Double.NaN; + } + if(b1.getElementCount() == 0 && b2.getElementCount() == 0){ + return 1d; + } + else if(b1.getElementCount() == 0 || b2.getElementCount() == 0){ + return 0d; + } + + Map pairs = new HashMap(); + addCount(pairs, b1, true); + addCount(pairs, b2, false); + + double norm1 = norm(pairs, true); + double norm2 = norm(pairs, false); + double product = innerproduct(pairs); + double similarity = product / (norm1 * norm2); + // System.out.printf("%g / (%g * %g) = %g%n", product, norm1, norm2, similarity); + + // double radian = Math.acos(product / (norm1 * norm2)); + // double angle = 90 - (180 * radian / Math.PI); + // double sim = angle / 90; + // System.out.printf("angle: %g (%g“x, %g)%n", radian, angle, sim); + + return similarity; + } + + private double innerproduct(Map pairs){ + double sum = 0; + for(CountPair pair: pairs.values()){ + sum += pair.get(true) * pair.get(false); + } + return sum; + } + + private double norm(Map pairs, boolean first){ + double sum = 0; + for(CountPair pair: pairs.values()){ + sum += pair.get(first) * pair.get(first); + } + return Math.sqrt(sum); + } + + private void addCount(Map pairs, Birthmark birthmark, boolean first){ + for(BirthmarkElement element: birthmark){ + ValueCountable vc = (ValueCountable)element; + CountPair cp = pairs.get(vc.getValueName()); + if(cp == null){ + cp = new CountPair(); + pairs.put(vc.getValueName(), cp); + } + cp.set(first, vc.getValueCount()); + } + } + + private class CountPair{ + private int c1 = 0; + private int c2 = 0; + + public int get(boolean first){ + if(first){ + return c1; + } + else{ + return c2; + } + } + + public void set(boolean first, int count){ + if(first){ + c1 = count; + } + else{ + c2 = count; + } + } + } + + /** + * This method is used for debugging. + */ + @SuppressWarnings("unused") + private void printAll(Map pairs){ + System.out.println("----------"); + for(Map.Entry entry: pairs.entrySet()){ + CountPair pair = entry.getValue(); + System.out.printf("%40s: %5d, %5d%n", entry.getKey(), pair.get(true), pair.get(false)); + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java similarity index 71% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java index 3c28976..f75a638 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java @@ -1,36 +1,36 @@ -package jp.naist.se.stigmata.birthmarks.comparators; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * SPI of {@link BirthmarkComparator BirthmarkComparator}. - * Comparing birthmarks by cosine similarity algorithm. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class CosineSimilarityBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ - /** - * returns a type of the birthmark this service provides. - */ - public String getType(){ - return "cosine"; - } - - public String getComparatorClassName(){ - return "jp.naist.se.stigmata.birthmarks.comparators.CosineSimilarityBirthmarkComparator"; - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkComparator getComparator(BirthmarkSpi service){ - return new CosineSimilarityBirthmarkComparator(service); - } -} - +package jp.sourceforge.stigmata.birthmarks.comparators; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * SPI of {@link BirthmarkComparator BirthmarkComparator}. + * Comparing birthmarks by cosine similarity algorithm. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class CosineSimilarityBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ + /** + * returns a type of the birthmark this service provides. + */ + public String getType(){ + return "cosine"; + } + + public String getComparatorClassName(){ + return "jp.sourceforge.stigmata.birthmarks.comparators.CosineSimilarityBirthmarkComparator"; + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkComparator getComparator(BirthmarkSpi service){ + return new CosineSimilarityBirthmarkComparator(service); + } +} + diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparator.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparator.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparator.java index faeb217..8afd237 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparator.java @@ -1,12 +1,12 @@ -package jp.naist.se.stigmata.birthmarks.comparators; +package jp.sourceforge.stigmata.birthmarks.comparators; /* * $Id$ */ -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; /** * calculate similarities between two birthmarks by DP matching algorithm. diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java similarity index 71% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java index e82970f..3f73d80 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java @@ -1,36 +1,36 @@ -package jp.naist.se.stigmata.birthmarks.comparators; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * SPI of {@link BirthmarkComparator BirthmarkComparator}. - * Comparing birthmarks by DP matching algorithm. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class DPMatchingBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ - /** - * returns a type of the birthmark this service provides. - */ - public String getType(){ - return "dpmatching"; - } - - public String getComparatorClassName(){ - return "jp.naist.se.stigmata.birthmarks.comparators.DPMatchingBirthmarkComparator"; - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkComparator getComparator(BirthmarkSpi service){ - return new DPMatchingBirthmarkComparator(service); - } -} - +package jp.sourceforge.stigmata.birthmarks.comparators; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * SPI of {@link BirthmarkComparator BirthmarkComparator}. + * Comparing birthmarks by DP matching algorithm. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class DPMatchingBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ + /** + * returns a type of the birthmark this service provides. + */ + public String getType(){ + return "dpmatching"; + } + + public String getComparatorClassName(){ + return "jp.sourceforge.stigmata.birthmarks.comparators.DPMatchingBirthmarkComparator"; + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkComparator getComparator(BirthmarkSpi service){ + return new DPMatchingBirthmarkComparator(service); + } +} + diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparator.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparator.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparator.java index c8a02d7..6901240 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparator.java @@ -1,12 +1,12 @@ -package jp.naist.se.stigmata.birthmarks.comparators; +package jp.sourceforge.stigmata.birthmarks.comparators; /* * $Id$ */ -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; /** * calculate similarities between two birthmarks by edit distance diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java similarity index 72% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java index 8d184a0..d0a13c6 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java @@ -1,36 +1,36 @@ -package jp.naist.se.stigmata.birthmarks.comparators; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * SPI of {@link BirthmarkComparator BirthmarkComparator}. - * Comparing birthmarks by edit distance algorithm. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class EditDistanceBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ - /** - * returns a type of the birthmark this service provides. - */ - public String getType(){ - return "editdistancee"; - } - - public String getComparatorClassName(){ - return "jp.naist.se.stigmata.birthmarks.comparators.EditDistanceBirthmarkComparator"; - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkComparator getComparator(BirthmarkSpi service){ - return new EditDistanceBirthmarkComparator(service); - } -} - +package jp.sourceforge.stigmata.birthmarks.comparators; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * SPI of {@link BirthmarkComparator BirthmarkComparator}. + * Comparing birthmarks by edit distance algorithm. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class EditDistanceBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ + /** + * returns a type of the birthmark this service provides. + */ + public String getType(){ + return "editdistancee"; + } + + public String getComparatorClassName(){ + return "jp.sourceforge.stigmata.birthmarks.comparators.EditDistanceBirthmarkComparator"; + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkComparator getComparator(BirthmarkSpi service){ + return new EditDistanceBirthmarkComparator(service); + } +} + diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparator.java similarity index 83% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparator.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparator.java index 44b28cf..52d834f 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparator.java @@ -1,12 +1,12 @@ -package jp.naist.se.stigmata.birthmarks.comparators; +package jp.sourceforge.stigmata.birthmarks.comparators; /* * $Id$ */ -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; /** * calculate similarities between two birthmarks by edit distance diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java similarity index 72% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java index 1fcc526..20c3eb5 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java @@ -1,36 +1,36 @@ -package jp.naist.se.stigmata.birthmarks.comparators; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * SPI of {@link BirthmarkComparator BirthmarkComparator}. - * Comparing birthmarks by extended edit distance algorithm. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ExtendedEditDistanceBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ - /** - * returns a type of the birthmark this service provides. - */ - public String getType(){ - return "editdistanceext"; - } - - public String getComparatorClassName(){ - return "jp.naist.se.stigmata.birthmarks.comparators.ExtendedEditDistanceBirthmarkComparator"; - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkComparator getComparator(BirthmarkSpi service){ - return new ExtendedEditDistanceBirthmarkComparator(service); - } -} - +package jp.sourceforge.stigmata.birthmarks.comparators; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * SPI of {@link BirthmarkComparator BirthmarkComparator}. + * Comparing birthmarks by extended edit distance algorithm. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ExtendedEditDistanceBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ + /** + * returns a type of the birthmark this service provides. + */ + public String getType(){ + return "editdistanceext"; + } + + public String getComparatorClassName(){ + return "jp.sourceforge.stigmata.birthmarks.comparators.ExtendedEditDistanceBirthmarkComparator"; + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkComparator getComparator(BirthmarkSpi service){ + return new ExtendedEditDistanceBirthmarkComparator(service); + } +} + diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparator.java similarity index 89% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparator.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparator.java index 07fe42d..bc1ad59 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparator.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.birthmarks.comparators; +package jp.sourceforge.stigmata.birthmarks.comparators; /* * $Id$ @@ -7,9 +7,9 @@ package jp.naist.se.stigmata.birthmarks.comparators; import java.util.HashSet; import java.util.Set; -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; /** * this comparator calculate following formula. diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java similarity index 71% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java index 63e16a6..e52532f 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java @@ -1,36 +1,36 @@ -package jp.naist.se.stigmata.birthmarks.comparators; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * SPI of {@link BirthmarkComparator BirthmarkComparator}. - * Comparing birthmarks by logical AND algorithm. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class LogicalAndBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ - /** - * returns a type of the birthmark this service provides. - */ - public String getType(){ - return "and"; - } - - public String getComparatorClassName(){ - return "jp.naist.se.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator"; - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkComparator getComparator(BirthmarkSpi service){ - return new LogicalAndBirthmarkComparator(service); - } -} - +package jp.sourceforge.stigmata.birthmarks.comparators; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * SPI of {@link BirthmarkComparator BirthmarkComparator}. + * Comparing birthmarks by logical AND algorithm. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class LogicalAndBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ + /** + * returns a type of the birthmark this service provides. + */ + public String getType(){ + return "and"; + } + + public String getComparatorClassName(){ + return "jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator"; + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkComparator getComparator(BirthmarkSpi service){ + return new LogicalAndBirthmarkComparator(service); + } +} + diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/PlainBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparator.java similarity index 85% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/PlainBirthmarkComparator.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparator.java index 1c2ced6..62f6201 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/PlainBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparator.java @@ -1,13 +1,13 @@ -package jp.naist.se.stigmata.birthmarks.comparators; +package jp.sourceforge.stigmata.birthmarks.comparators; /* * $Id$ */ -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; /** * An implementation of {@link BirthmarkComparator diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java similarity index 72% rename from src/main/java/jp/naist/se/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java index 7991be7..1eb0151 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java @@ -1,36 +1,36 @@ -package jp.naist.se.stigmata.birthmarks.comparators; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * SPI of {@link BirthmarkComparator BirthmarkComparator}. - * Comparing birthmarks by default matching algorithm. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class PlainBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ - /** - * returns a type of the birthmark this service provides. - */ - public String getType(){ - return "plain"; - } - - public String getComparatorClassName(){ - return "jp.naist.se.stigmata.birthmarks.comparators.PlainBirthmarkComparator"; - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkComparator getComparator(BirthmarkSpi service){ - return new PlainBirthmarkComparator(service); - } -} - +package jp.sourceforge.stigmata.birthmarks.comparators; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * SPI of {@link BirthmarkComparator BirthmarkComparator}. + * Comparing birthmarks by default matching algorithm. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class PlainBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ + /** + * returns a type of the birthmark this service provides. + */ + public String getType(){ + return "plain"; + } + + public String getComparatorClassName(){ + return "jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator"; + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkComparator getComparator(BirthmarkSpi service){ + return new PlainBirthmarkComparator(service); + } +} + diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractVisitor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractVisitor.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractVisitor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractVisitor.java index c8c3a01..195d716 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractVisitor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractVisitor.java @@ -1,159 +1,159 @@ -package jp.naist.se.stigmata.birthmarks.cvfv; - -/* - * $Id$ - */ - -import java.util.LinkedHashMap; -import java.util.Map; - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor; - -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.FieldVisitor; -import org.objectweb.asm.MethodAdapter; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; -import org.objectweb.asm.Type; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ConstantValueOfFieldVariableBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ - private Map elements = new LinkedHashMap(); - private String className; - - public ConstantValueOfFieldVariableBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkEnvironment environment){ - super(visitor, birthmark, environment); - } - - public void visitEnd(){ - for(String key: elements.keySet()){ - addElement(elements.get(key)); - } - super.visitEnd(); - } - - public void visit(int version, int access, String name, String signature, - String superName, String[] interfaces){ - this.className = name; - - super.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public FieldVisitor visitField(int access, String name, String desc, - String signature, Object value){ - - FieldVisitor visitor = super.visitField(access, name, desc, signature, value); - - TypeAndValueBirthmarkElement e = elements.get(name); - if(e == null){ - e = new TypeAndValueBirthmarkElement(desc, value); - } - else{ - if(value != null){ - e.setValue(value); - } - } - elements.put(name, e); - - return visitor; - } - - public MethodVisitor visitMethod(int access, String name, String desc, String signature, - String[] exceptions){ - MethodVisitor visitor = super.visitMethod(access, name, desc, signature, exceptions); - - if(name.equals("") || name.equals("")){ - visitor = new MethodAdapter(visitor){ - private Object constant = null; - - public void visitIntInsn(int opcode, int operand){ - if(opcode == Opcodes.BIPUSH || opcode == Opcodes.SIPUSH){ - constant = new Integer(operand); - } - super.visitIntInsn(opcode, operand); - } - - public void visitMethodInsn(int opcode, String owner, String name, String desc){ - Type type = Type.getReturnType(desc); - if(!type.equals(Type.VOID_TYPE)){ - constant = null; - } - super.visitMethodInsn(opcode, owner, name, desc); - } - - public void visitInsn(int opcode){ - if(opcode == Opcodes.ICONST_M1) constant = new Integer(-1); - else if(opcode == Opcodes.ICONST_0) constant = new Integer(0); - else if(opcode == Opcodes.ICONST_1) constant = new Integer(1); - else if(opcode == Opcodes.ICONST_2) constant = new Integer(2); - else if(opcode == Opcodes.ICONST_3) constant = new Integer(3); - else if(opcode == Opcodes.ICONST_4) constant = new Integer(4); - else if(opcode == Opcodes.ICONST_5) constant = new Integer(5); - else if(opcode == Opcodes.LCONST_0) constant = new Long(0L); - else if(opcode == Opcodes.LCONST_1) constant = new Long(1L); - else if(opcode == Opcodes.DCONST_0) constant = new Double(0D); - else if(opcode == Opcodes.DCONST_1) constant = new Double(1D); - else if(opcode == Opcodes.FCONST_0) constant = new Float(0F); - else if(opcode == Opcodes.FCONST_1) constant = new Float(1F); - else if(opcode == Opcodes.FCONST_2) constant = new Float(2F); - - super.visitInsn(opcode); - } - - public void visitLdcInsn(Object object){ - constant = object; - super.visitLdcInsn(object); - } - - public void visitFieldInsn(int opcode, String owner, String name, String desc){ - if(className.equals(owner) && opcode == Opcodes.PUTFIELD){ - TypeAndValueBirthmarkElement e = elements.get(name); - if(e == null){ - e = new TypeAndValueBirthmarkElement(desc, constant); - } - - if(e.getValue() == null && constant != null){ - if(!checkCast(desc, constant)){ - constant = null; - } - e.setValue(constant); - } - } - super.visitFieldInsn(opcode, owner, name, desc); - } - }; - } - - return visitor; - } - - private boolean checkCast(String desc, Object constant){ - if(constant instanceof Integer){ - return desc.equals("Ljava/lang/Integer;") || - desc.equals("I") || desc.equals("S") || desc.equals("Z") || - desc.equals("C") || desc.equals("B"); - } - else if(constant instanceof Float){ - return desc.equals("Ljava/lang/Float;") || desc.equals("F"); - } - else if(constant instanceof Double){ - return desc.equals("Ljava/lang/Double;") || desc.equals("D"); - } - else if(constant instanceof Long){ - return desc.equals("Ljava/lang/Long;") || desc.equals("J"); - } - else if(constant instanceof String){ - return desc.equals("Ljava/lang/String;"); - } - return false; - } -} +package jp.sourceforge.stigmata.birthmarks.cvfv; + +/* + * $Id$ + */ + +import java.util.LinkedHashMap; +import java.util.Map; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; + +import org.objectweb.asm.ClassVisitor; +import org.objectweb.asm.FieldVisitor; +import org.objectweb.asm.MethodAdapter; +import org.objectweb.asm.MethodVisitor; +import org.objectweb.asm.Opcodes; +import org.objectweb.asm.Type; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ConstantValueOfFieldVariableBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ + private Map elements = new LinkedHashMap(); + private String className; + + public ConstantValueOfFieldVariableBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkEnvironment environment){ + super(visitor, birthmark, environment); + } + + public void visitEnd(){ + for(String key: elements.keySet()){ + addElement(elements.get(key)); + } + super.visitEnd(); + } + + public void visit(int version, int access, String name, String signature, + String superName, String[] interfaces){ + this.className = name; + + super.visit(version, access, name, signature, superName, interfaces); + } + + @Override + public FieldVisitor visitField(int access, String name, String desc, + String signature, Object value){ + + FieldVisitor visitor = super.visitField(access, name, desc, signature, value); + + TypeAndValueBirthmarkElement e = elements.get(name); + if(e == null){ + e = new TypeAndValueBirthmarkElement(desc, value); + } + else{ + if(value != null){ + e.setValue(value); + } + } + elements.put(name, e); + + return visitor; + } + + public MethodVisitor visitMethod(int access, String name, String desc, String signature, + String[] exceptions){ + MethodVisitor visitor = super.visitMethod(access, name, desc, signature, exceptions); + + if(name.equals("") || name.equals("")){ + visitor = new MethodAdapter(visitor){ + private Object constant = null; + + public void visitIntInsn(int opcode, int operand){ + if(opcode == Opcodes.BIPUSH || opcode == Opcodes.SIPUSH){ + constant = new Integer(operand); + } + super.visitIntInsn(opcode, operand); + } + + public void visitMethodInsn(int opcode, String owner, String name, String desc){ + Type type = Type.getReturnType(desc); + if(!type.equals(Type.VOID_TYPE)){ + constant = null; + } + super.visitMethodInsn(opcode, owner, name, desc); + } + + public void visitInsn(int opcode){ + if(opcode == Opcodes.ICONST_M1) constant = new Integer(-1); + else if(opcode == Opcodes.ICONST_0) constant = new Integer(0); + else if(opcode == Opcodes.ICONST_1) constant = new Integer(1); + else if(opcode == Opcodes.ICONST_2) constant = new Integer(2); + else if(opcode == Opcodes.ICONST_3) constant = new Integer(3); + else if(opcode == Opcodes.ICONST_4) constant = new Integer(4); + else if(opcode == Opcodes.ICONST_5) constant = new Integer(5); + else if(opcode == Opcodes.LCONST_0) constant = new Long(0L); + else if(opcode == Opcodes.LCONST_1) constant = new Long(1L); + else if(opcode == Opcodes.DCONST_0) constant = new Double(0D); + else if(opcode == Opcodes.DCONST_1) constant = new Double(1D); + else if(opcode == Opcodes.FCONST_0) constant = new Float(0F); + else if(opcode == Opcodes.FCONST_1) constant = new Float(1F); + else if(opcode == Opcodes.FCONST_2) constant = new Float(2F); + + super.visitInsn(opcode); + } + + public void visitLdcInsn(Object object){ + constant = object; + super.visitLdcInsn(object); + } + + public void visitFieldInsn(int opcode, String owner, String name, String desc){ + if(className.equals(owner) && opcode == Opcodes.PUTFIELD){ + TypeAndValueBirthmarkElement e = elements.get(name); + if(e == null){ + e = new TypeAndValueBirthmarkElement(desc, constant); + } + + if(e.getValue() == null && constant != null){ + if(!checkCast(desc, constant)){ + constant = null; + } + e.setValue(constant); + } + } + super.visitFieldInsn(opcode, owner, name, desc); + } + }; + } + + return visitor; + } + + private boolean checkCast(String desc, Object constant){ + if(constant instanceof Integer){ + return desc.equals("Ljava/lang/Integer;") || + desc.equals("I") || desc.equals("S") || desc.equals("Z") || + desc.equals("C") || desc.equals("B"); + } + else if(constant instanceof Float){ + return desc.equals("Ljava/lang/Float;") || desc.equals("F"); + } + else if(constant instanceof Double){ + return desc.equals("Ljava/lang/Double;") || desc.equals("D"); + } + else if(constant instanceof Long){ + return desc.equals("Ljava/lang/Long;") || desc.equals("J"); + } + else if(constant instanceof String){ + return desc.equals("Ljava/lang/String;"); + } + return false; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractor.java similarity index 69% rename from src/main/java/jp/naist/se/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractor.java index 3cd5c5d..3da6a92 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractor.java @@ -1,15 +1,15 @@ -package jp.naist.se.stigmata.birthmarks.cvfv; +package jp.sourceforge.stigmata.birthmarks.cvfv; /* * $Id$ */ -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.ExtractionUnit; -import jp.naist.se.stigmata.birthmarks.ASMBirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.ExtractionUnit; +import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; import org.objectweb.asm.ClassWriter; diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkService.java similarity index 81% rename from src/main/java/jp/naist/se/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkService.java index f099875..e342c2d 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkService.java @@ -1,76 +1,76 @@ -package jp.naist.se.stigmata.birthmarks.cvfv; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.AbstractBirthmarkService; -import jp.naist.se.stigmata.birthmarks.comparators.PlainBirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ConstantValueOfFieldVariableBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ - private BirthmarkComparator comparator = new PlainBirthmarkComparator(this); - private BirthmarkExtractor extractor = new ConstantValueOfFieldVariableBirthmarkExtractor(this); - - public String getType(){ - return "cvfv"; - } - - public String getDefaultDescription(){ - return "Field type and its initial value."; - } - - public BirthmarkExtractor getExtractor(){ - return extractor; - } - - public BirthmarkComparator getComparator(){ - return comparator; - } - - public boolean isExpert(){ - return false; - } - - public boolean isUserDefined(){ - return false; - } - - @Override - public BirthmarkElement buildBirthmarkElement(String value) { - String signature = value.substring(0, value.indexOf('=')); - String subValue = value.substring(value.indexOf('=') + 1); - Object elementValue = subValue; - - if(subValue.equals("null")){ - elementValue = null; - } - else{ - switch(signature.charAt(0)){ - case 'Z':{ - if(value.equals("true")) elementValue = Boolean.TRUE; - else elementValue = Boolean.FALSE; - break; - } - case 'C': elementValue = new Character(subValue.charAt(0)); break; - case 'D': elementValue = new Double(subValue); break; - case 'F': elementValue = new Float(subValue); break; - case 'S': elementValue = new Short(subValue); break; - case 'B': elementValue = new Byte(subValue); break; - case 'I': elementValue = new Integer(subValue); break; - default: elementValue = value; break; - } - } - return new TypeAndValueBirthmarkElement(signature, elementValue); - } -} +package jp.sourceforge.stigmata.birthmarks.cvfv; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService; +import jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ConstantValueOfFieldVariableBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ + private BirthmarkComparator comparator = new PlainBirthmarkComparator(this); + private BirthmarkExtractor extractor = new ConstantValueOfFieldVariableBirthmarkExtractor(this); + + public String getType(){ + return "cvfv"; + } + + public String getDefaultDescription(){ + return "Field type and its initial value."; + } + + public BirthmarkExtractor getExtractor(){ + return extractor; + } + + public BirthmarkComparator getComparator(){ + return comparator; + } + + public boolean isExpert(){ + return false; + } + + public boolean isUserDefined(){ + return false; + } + + @Override + public BirthmarkElement buildBirthmarkElement(String value) { + String signature = value.substring(0, value.indexOf('=')); + String subValue = value.substring(value.indexOf('=') + 1); + Object elementValue = subValue; + + if(subValue.equals("null")){ + elementValue = null; + } + else{ + switch(signature.charAt(0)){ + case 'Z':{ + if(value.equals("true")) elementValue = Boolean.TRUE; + else elementValue = Boolean.FALSE; + break; + } + case 'C': elementValue = new Character(subValue.charAt(0)); break; + case 'D': elementValue = new Double(subValue); break; + case 'F': elementValue = new Float(subValue); break; + case 'S': elementValue = new Short(subValue); break; + case 'B': elementValue = new Byte(subValue); break; + case 'I': elementValue = new Integer(subValue); break; + default: elementValue = value; break; + } + } + return new TypeAndValueBirthmarkElement(signature, elementValue); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/cvfv/TypeAndValueBirthmarkElement.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/TypeAndValueBirthmarkElement.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/birthmarks/cvfv/TypeAndValueBirthmarkElement.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/TypeAndValueBirthmarkElement.java index 9004f53..c89dd03 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/cvfv/TypeAndValueBirthmarkElement.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/TypeAndValueBirthmarkElement.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.birthmarks.cvfv; +package jp.sourceforge.stigmata.birthmarks.cvfv; /* * $Id$ @@ -8,7 +8,7 @@ import java.io.IOException; import java.io.ObjectInputStream; import java.io.Serializable; -import jp.naist.se.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkElement; /** * diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java similarity index 82% rename from src/main/java/jp/naist/se/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java index ab66dd4..d970885 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java @@ -1,65 +1,65 @@ -package jp.naist.se.stigmata.birthmarks.extractors; - -/* - * $Id$ - */ - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.Locale; - -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.spi.AbstractServiceProvider; -import jp.naist.se.stigmata.spi.BirthmarkExtractorSpi; -import jp.naist.se.stigmata.spi.BirthmarkSpi; -import jp.naist.se.stigmata.utils.LocalizedDescriptionManager; - -/** - * Birthmark Service Provider Interface. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -abstract class AbstractBirthmarkExtractorService extends AbstractServiceProvider implements BirthmarkExtractorSpi{ - /** - * returns a type of the birthmark this service provides. - */ - public abstract String getType(); - - /** - * returns a localized description of the birthmark this service provides. - */ - public String getDescription(Locale locale){ - return LocalizedDescriptionManager.getInstance().getDescription( - locale, getType(), LocalizedDescriptionManager.ServiceCategory.extractor - ); - } - - /** - * returns a localized description of the birthmark in default locale. - */ - public String getDescription(){ - return getDescription(Locale.getDefault()); - } - - public abstract String getExtractorClassName(); - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkExtractor getExtractor(BirthmarkSpi service){ - try{ - Class c = Class.forName(getExtractorClassName()); - Class clazz = c.asSubclass(BirthmarkExtractor.class); - Constructor constructor = clazz.getConstructor(BirthmarkSpi.class); - return constructor.newInstance(service); - } catch(NoSuchMethodException e){ - } catch(InstantiationException e){ - } catch(InvocationTargetException e){ - } catch(ClassNotFoundException e){ - } catch(IllegalAccessException e){ - } - return null; - } -} - +package jp.sourceforge.stigmata.birthmarks.extractors; + +/* + * $Id$ + */ + +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.Locale; + +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.spi.AbstractServiceProvider; +import jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; + +/** + * Birthmark Service Provider Interface. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +abstract class AbstractBirthmarkExtractorService extends AbstractServiceProvider implements BirthmarkExtractorSpi{ + /** + * returns a type of the birthmark this service provides. + */ + public abstract String getType(); + + /** + * returns a localized description of the birthmark this service provides. + */ + public String getDescription(Locale locale){ + return LocalizedDescriptionManager.getInstance().getDescription( + locale, getType(), LocalizedDescriptionManager.ServiceCategory.extractor + ); + } + + /** + * returns a localized description of the birthmark in default locale. + */ + public String getDescription(){ + return getDescription(Locale.getDefault()); + } + + public abstract String getExtractorClassName(); + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkExtractor getExtractor(BirthmarkSpi service){ + try{ + Class c = Class.forName(getExtractorClassName()); + Class clazz = c.asSubclass(BirthmarkExtractor.class); + Constructor constructor = clazz.getConstructor(BirthmarkSpi.class); + return constructor.newInstance(service); + } catch(NoSuchMethodException e){ + } catch(InstantiationException e){ + } catch(InvocationTargetException e){ + } catch(ClassNotFoundException e){ + } catch(IllegalAccessException e){ + } + return null; + } +} + diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java similarity index 87% rename from src/main/java/jp/naist/se/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java index 5d9b8a8..78b79f2 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java @@ -1,74 +1,74 @@ -package jp.naist.se.stigmata.birthmarks.extractors; - -/* - * $Id$ - */ - -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Map; - -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.ExtractorNotFoundException; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -import org.apache.commons.beanutils.BeanUtils; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class BirthmarkExtractorFactory{ - private BirthmarkEnvironment environment; - private Map extractors = new HashMap(); - - public BirthmarkExtractorFactory(BirthmarkEnvironment env){ - this.environment = env; - } - - public BirthmarkExtractor getExtractor(String name) throws ExtractorNotFoundException{ - BirthmarkExtractor extractor = extractors.get(name); - if(extractor == null){ - extractor = buildExtractor(name); - extractors.put(name, extractor); - } - return extractor; - } - - @SuppressWarnings("unchecked") - private BirthmarkExtractor buildExtractor(String birthmarkType) throws ExtractorNotFoundException{ - BirthmarkSpi spi = environment.getService(birthmarkType); - BirthmarkExtractor extractor = null; - if(spi != null){ - extractor = spi.getExtractor(); - try{ - if(extractor != null){ - Map props = BeanUtils.describe(extractor); - props.remove("class"); - props.remove("provider"); - for(Object keyObject: props.keySet()){ - String key = "extractor." + spi.getType() + "." + String.valueOf(keyObject); - if(environment.getProperty(key) != null){ - BeanUtils.setProperty( - extractor, (String)keyObject, environment.getProperty(key) - ); - } - } - } - } catch(InvocationTargetException e){ - throw new InternalError(e.getMessage()); - } catch(NoSuchMethodException e){ - throw new InternalError(e.getMessage()); - } catch(IllegalAccessException e){ - throw new InternalError(e.getMessage()); - } - } - if(extractor == null){ - throw new ExtractorNotFoundException("extractor not found: " + birthmarkType); - } - - return extractor; - } -} +package jp.sourceforge.stigmata.birthmarks.extractors; + +/* + * $Id$ + */ + +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; +import java.util.Map; + +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.ExtractorNotFoundException; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +import org.apache.commons.beanutils.BeanUtils; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class BirthmarkExtractorFactory{ + private BirthmarkEnvironment environment; + private Map extractors = new HashMap(); + + public BirthmarkExtractorFactory(BirthmarkEnvironment env){ + this.environment = env; + } + + public BirthmarkExtractor getExtractor(String name) throws ExtractorNotFoundException{ + BirthmarkExtractor extractor = extractors.get(name); + if(extractor == null){ + extractor = buildExtractor(name); + extractors.put(name, extractor); + } + return extractor; + } + + @SuppressWarnings("unchecked") + private BirthmarkExtractor buildExtractor(String birthmarkType) throws ExtractorNotFoundException{ + BirthmarkSpi spi = environment.getService(birthmarkType); + BirthmarkExtractor extractor = null; + if(spi != null){ + extractor = spi.getExtractor(); + try{ + if(extractor != null){ + Map props = BeanUtils.describe(extractor); + props.remove("class"); + props.remove("provider"); + for(Object keyObject: props.keySet()){ + String key = "extractor." + spi.getType() + "." + String.valueOf(keyObject); + if(environment.getProperty(key) != null){ + BeanUtils.setProperty( + extractor, (String)keyObject, environment.getProperty(key) + ); + } + } + } + } catch(InvocationTargetException e){ + throw new InternalError(e.getMessage()); + } catch(NoSuchMethodException e){ + throw new InternalError(e.getMessage()); + } catch(IllegalAccessException e){ + throw new InternalError(e.getMessage()); + } + } + if(extractor == null){ + throw new ExtractorNotFoundException("extractor not found: " + birthmarkType); + } + + return extractor; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java similarity index 63% rename from src/main/java/jp/naist/se/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java index 0bb8d45..71f714c 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java @@ -1,36 +1,36 @@ -package jp.naist.se.stigmata.birthmarks.extractors; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * Birthmark Service Provider Interface. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ConstantValueOfFieldVariableBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ - - /** - * returns a type of the birthmark this service provides. - */ - public String getType(){ - return "cvfv"; - } - - public String getExtractorClassName(){ - return "jp.naist.se.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor"; - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkExtractor getExtractor(BirthmarkSpi service){ - return new ConstantValueOfFieldVariableBirthmarkExtractor(service); - } +package jp.sourceforge.stigmata.birthmarks.extractors; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * Birthmark Service Provider Interface. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ConstantValueOfFieldVariableBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ + + /** + * returns a type of the birthmark this service provides. + */ + public String getType(){ + return "cvfv"; + } + + public String getExtractorClassName(){ + return "jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor"; + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkExtractor getExtractor(BirthmarkSpi service){ + return new ConstantValueOfFieldVariableBirthmarkExtractor(service); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java similarity index 63% rename from src/main/java/jp/naist/se/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java index 4c334b2..c0cd3ee 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java @@ -1,36 +1,36 @@ -package jp.naist.se.stigmata.birthmarks.extractors; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.fmc.FrequencyMethodCallBirthmarkExtractor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * Birthmark Service Provider Interface. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class FrequencyMethodCallBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ - - /** - * returns a type of the birthmark this service provides. - */ - public String getType(){ - return "fmc"; - } - - public String getExtractorClassName(){ - return "jp.naist.se.stigmata.birthmarks.fmc.FrequencyMethodCallBirthmarkExtractor"; - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkExtractor getExtractor(BirthmarkSpi service){ - return new FrequencyMethodCallBirthmarkExtractor(service); - } +package jp.sourceforge.stigmata.birthmarks.extractors; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.fmc.FrequencyMethodCallBirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * Birthmark Service Provider Interface. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class FrequencyMethodCallBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ + + /** + * returns a type of the birthmark this service provides. + */ + public String getType(){ + return "fmc"; + } + + public String getExtractorClassName(){ + return "jp.sourceforge.stigmata.birthmarks.fmc.FrequencyMethodCallBirthmarkExtractor"; + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkExtractor getExtractor(BirthmarkSpi service){ + return new FrequencyMethodCallBirthmarkExtractor(service); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java similarity index 63% rename from src/main/java/jp/naist/se/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java index 487753c..80ff83c 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java @@ -1,36 +1,36 @@ -package jp.naist.se.stigmata.birthmarks.extractors; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.fuc.FrequencyUsedClassesBirthmarkExtractor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * Birthmark Service Provider Interface. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class FrequencyUsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ - - /** - * returns a type of the birthmark this service provides. - */ - public String getType(){ - return "fuc"; - } - - public String getExtractorClassName(){ - return "jp.naist.se.stigmata.birthmarks.fuc.FrequencyUsedClassesBirthmarkExtractor"; - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkExtractor getExtractor(BirthmarkSpi service){ - return new FrequencyUsedClassesBirthmarkExtractor(service); - } +package jp.sourceforge.stigmata.birthmarks.extractors; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.fuc.FrequencyUsedClassesBirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * Birthmark Service Provider Interface. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class FrequencyUsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ + + /** + * returns a type of the birthmark this service provides. + */ + public String getType(){ + return "fuc"; + } + + public String getExtractorClassName(){ + return "jp.sourceforge.stigmata.birthmarks.fuc.FrequencyUsedClassesBirthmarkExtractor"; + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkExtractor getExtractor(BirthmarkSpi service){ + return new FrequencyUsedClassesBirthmarkExtractor(service); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java similarity index 63% rename from src/main/java/jp/naist/se/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java index d31fec4..062f3db 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java @@ -1,36 +1,36 @@ -package jp.naist.se.stigmata.birthmarks.extractors; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * Birthmark Service Provider Interface. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class InheritanceStructureBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ - - /** - * returns a type of the birthmark this service provides. - */ - public String getType(){ - return "is"; - } - - public String getExtractorClassName(){ - return "jp.naist.se.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor"; - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkExtractor getExtractor(BirthmarkSpi service){ - return new InheritanceStructureBirthmarkExtractor(service); - } +package jp.sourceforge.stigmata.birthmarks.extractors; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * Birthmark Service Provider Interface. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class InheritanceStructureBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ + + /** + * returns a type of the birthmark this service provides. + */ + public String getType(){ + return "is"; + } + + public String getExtractorClassName(){ + return "jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor"; + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkExtractor getExtractor(BirthmarkSpi service){ + return new InheritanceStructureBirthmarkExtractor(service); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java similarity index 64% rename from src/main/java/jp/naist/se/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java index e98cc63..f5e53c4 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java @@ -1,36 +1,36 @@ -package jp.naist.se.stigmata.birthmarks.extractors; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.kgram.KGramBasedBirthmarkExtractor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * Birthmark Service Provider Interface. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class KGramBasedBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ - - /** - * returns a type of the birthmark this service provides. - */ - public String getType(){ - return "kgram"; - } - - public String getExtractorClassName(){ - return "jp.naist.se.stigmata.birthmarks.kgram.KGramBasedBirthmarkExtractor"; - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkExtractor getExtractor(BirthmarkSpi service){ - return new KGramBasedBirthmarkExtractor(service); - } +package jp.sourceforge.stigmata.birthmarks.extractors; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.kgram.KGramBasedBirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * Birthmark Service Provider Interface. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class KGramBasedBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ + + /** + * returns a type of the birthmark this service provides. + */ + public String getType(){ + return "kgram"; + } + + public String getExtractorClassName(){ + return "jp.sourceforge.stigmata.birthmarks.kgram.KGramBasedBirthmarkExtractor"; + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkExtractor getExtractor(BirthmarkSpi service){ + return new KGramBasedBirthmarkExtractor(service); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java similarity index 63% rename from src/main/java/jp/naist/se/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java index b653a9d..65df33f 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java @@ -1,36 +1,36 @@ -package jp.naist.se.stigmata.birthmarks.extractors; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * Birthmark Service Provider Interface. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class SequentialMethodCallBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ - - /** - * returns a type of the birthmark this service provides. - */ - public String getType(){ - return "smc"; - } - - public String getExtractorClassName(){ - return "jp.naist.se.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor"; - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkExtractor getExtractor(BirthmarkSpi service){ - return new SequentialMethodCallBirthmarkExtractor(service); - } +package jp.sourceforge.stigmata.birthmarks.extractors; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * Birthmark Service Provider Interface. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class SequentialMethodCallBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ + + /** + * returns a type of the birthmark this service provides. + */ + public String getType(){ + return "smc"; + } + + public String getExtractorClassName(){ + return "jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor"; + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkExtractor getExtractor(BirthmarkSpi service){ + return new SequentialMethodCallBirthmarkExtractor(service); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java similarity index 64% rename from src/main/java/jp/naist/se/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java index 97bcd2c..1689a92 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java @@ -1,36 +1,36 @@ -package jp.naist.se.stigmata.birthmarks.extractors; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * Birthmark Service Provider Interface. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class UsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ - - /** - * returns a type of the birthmark this service provides. - */ - public String getType(){ - return "uc"; - } - - public String getExtractorClassName(){ - return "jp.naist.se.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor"; - } - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkExtractor getExtractor(BirthmarkSpi service){ - return new UsedClassesBirthmarkExtractor(service); - } +package jp.sourceforge.stigmata.birthmarks.extractors; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * Birthmark Service Provider Interface. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class UsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ + + /** + * returns a type of the birthmark this service provides. + */ + public String getType(){ + return "uc"; + } + + public String getExtractorClassName(){ + return "jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor"; + } + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkExtractor getExtractor(BirthmarkSpi service){ + return new UsedClassesBirthmarkExtractor(service); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractor.java similarity index 66% rename from src/main/java/jp/naist/se/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractor.java index bad43a6..f663a6e 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractor.java @@ -1,18 +1,18 @@ -package jp.naist.se.stigmata.birthmarks.fmc; +package jp.sourceforge.stigmata.birthmarks.fmc; /* * $Id$ */ -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.ExtractionUnit; -import jp.naist.se.stigmata.birthmarks.ASMBirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor; -import jp.naist.se.stigmata.birthmarks.FrequencyBirthmark; -import jp.naist.se.stigmata.birthmarks.FrequencyBirthmarkElement; -import jp.naist.se.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractVisitor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.ExtractionUnit; +import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; +import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmark; +import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmarkElement; +import jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractVisitor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; import org.objectweb.asm.ClassWriter; diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkService.java similarity index 66% rename from src/main/java/jp/naist/se/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkService.java index ca5e336..080a217 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkService.java @@ -1,54 +1,54 @@ -package jp.naist.se.stigmata.birthmarks.fmc; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.AbstractBirthmarkService; -import jp.naist.se.stigmata.birthmarks.FrequencyBirthmarkElement; -import jp.naist.se.stigmata.birthmarks.comparators.CosineSimilarityBirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class FrequencyMethodCallBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ - private BirthmarkComparator comparator = new CosineSimilarityBirthmarkComparator(this); - private BirthmarkExtractor extractor = new FrequencyMethodCallBirthmarkExtractor(this); - - public String getType(){ - return "fmc"; - } - - public String getDefaultDescription(){ - return "Frequency of method call which order is appeared in method definition."; - } - - public BirthmarkExtractor getExtractor(){ - return extractor; - } - - public BirthmarkComparator getComparator(){ - return comparator; - } - - public boolean isExpert(){ - return false; - } - - public boolean isUserDefined(){ - return false; - } - - @Override - public BirthmarkElement buildBirthmarkElement(String value) { - return new FrequencyBirthmarkElement(value); - } -} +package jp.sourceforge.stigmata.birthmarks.fmc; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService; +import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmarkElement; +import jp.sourceforge.stigmata.birthmarks.comparators.CosineSimilarityBirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class FrequencyMethodCallBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ + private BirthmarkComparator comparator = new CosineSimilarityBirthmarkComparator(this); + private BirthmarkExtractor extractor = new FrequencyMethodCallBirthmarkExtractor(this); + + public String getType(){ + return "fmc"; + } + + public String getDefaultDescription(){ + return "Frequency of method call which order is appeared in method definition."; + } + + public BirthmarkExtractor getExtractor(){ + return extractor; + } + + public BirthmarkComparator getComparator(){ + return comparator; + } + + public boolean isExpert(){ + return false; + } + + public boolean isUserDefined(){ + return false; + } + + @Override + public BirthmarkElement buildBirthmarkElement(String value) { + return new FrequencyBirthmarkElement(value); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractor.java similarity index 64% rename from src/main/java/jp/naist/se/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractor.java index 4cf7426..0ace43b 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractor.java @@ -1,17 +1,17 @@ -package jp.naist.se.stigmata.birthmarks.fuc; +package jp.sourceforge.stigmata.birthmarks.fuc; /* * $Id$ */ -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.ExtractionUnit; -import jp.naist.se.stigmata.birthmarks.ASMBirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor; -import jp.naist.se.stigmata.birthmarks.FrequencyBirthmark; -import jp.naist.se.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractVisitor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.ExtractionUnit; +import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; +import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmark; +import jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractVisitor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; import org.objectweb.asm.ClassWriter; diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkService.java similarity index 65% rename from src/main/java/jp/naist/se/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkService.java index 482bbe2..1abc1d8 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkService.java @@ -1,53 +1,53 @@ -package jp.naist.se.stigmata.birthmarks.fuc; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.AbstractBirthmarkService; -import jp.naist.se.stigmata.birthmarks.FrequencyBirthmarkElement; -import jp.naist.se.stigmata.birthmarks.comparators.CosineSimilarityBirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class FrequencyUsedClassesBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ - private BirthmarkComparator comparator = new CosineSimilarityBirthmarkComparator(this); - private BirthmarkExtractor extractor = new FrequencyUsedClassesBirthmarkExtractor(this); - - public String getType(){ - return "fuc"; - } - - public String getDefaultDescription(){ - return "Frequency of used classes in target class."; - } - - public BirthmarkExtractor getExtractor(){ - return extractor; - } - - public BirthmarkComparator getComparator(){ - return comparator; - } - - public boolean isExpert(){ - return false; - } - - public boolean isUserDefined(){ - return false; - } - - public BirthmarkElement createBirthmarkElement(String value){ - return new FrequencyBirthmarkElement(value); - } -} +package jp.sourceforge.stigmata.birthmarks.fuc; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService; +import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmarkElement; +import jp.sourceforge.stigmata.birthmarks.comparators.CosineSimilarityBirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class FrequencyUsedClassesBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ + private BirthmarkComparator comparator = new CosineSimilarityBirthmarkComparator(this); + private BirthmarkExtractor extractor = new FrequencyUsedClassesBirthmarkExtractor(this); + + public String getType(){ + return "fuc"; + } + + public String getDefaultDescription(){ + return "Frequency of used classes in target class."; + } + + public BirthmarkExtractor getExtractor(){ + return extractor; + } + + public BirthmarkComparator getComparator(){ + return comparator; + } + + public boolean isExpert(){ + return false; + } + + public boolean isUserDefined(){ + return false; + } + + public BirthmarkElement createBirthmarkElement(String value){ + return new FrequencyBirthmarkElement(value); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractVisitor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractVisitor.java similarity index 78% rename from src/main/java/jp/naist/se/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractVisitor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractVisitor.java index 225ad2b..61cc014 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractVisitor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractVisitor.java @@ -1,57 +1,57 @@ -package jp.naist.se.stigmata.birthmarks.is; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor; -import jp.naist.se.stigmata.birthmarks.NullBirthmarkElement; -import jp.naist.se.stigmata.utils.WellknownClassManager; - -import org.objectweb.asm.ClassVisitor; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class InheritanceStructureBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ - public InheritanceStructureBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkEnvironment environment){ - super(visitor, birthmark, environment); - } - - public void visit(int version, int access, String name, String signature, - String superName, String[] interfaces){ - try { - Class c = getEnvironment().getClasspathContext().findClass(name.replace('/', '.')); - if(c != null && !c.isInterface()){ - addISBirthmark(c); - } - } catch (ClassNotFoundException ex){ - addFailur(ex); - } - } - - private void addISBirthmark(Class c){ - WellknownClassManager wcm = getEnvironment().getWellknownClassManager(); - do{ - String className = c.getName(); - BirthmarkElement element = null; - if(wcm.isWellKnownClass(className)){ - element = new BirthmarkElement(className); - } - else{ - element = NullBirthmarkElement.getInstance(); - } - - addElement(element); - c = c.getSuperclass(); - } while(!c.getName().equals("java.lang.Object")); - addElement(new BirthmarkElement("java.lang.Object")); - } -} +package jp.sourceforge.stigmata.birthmarks.is; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; +import jp.sourceforge.stigmata.birthmarks.NullBirthmarkElement; +import jp.sourceforge.stigmata.utils.WellknownClassManager; + +import org.objectweb.asm.ClassVisitor; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class InheritanceStructureBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ + public InheritanceStructureBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkEnvironment environment){ + super(visitor, birthmark, environment); + } + + public void visit(int version, int access, String name, String signature, + String superName, String[] interfaces){ + try { + Class c = getEnvironment().getClasspathContext().findClass(name.replace('/', '.')); + if(c != null && !c.isInterface()){ + addISBirthmark(c); + } + } catch (ClassNotFoundException ex){ + addFailur(ex); + } + } + + private void addISBirthmark(Class c){ + WellknownClassManager wcm = getEnvironment().getWellknownClassManager(); + do{ + String className = c.getName(); + BirthmarkElement element = null; + if(wcm.isWellKnownClass(className)){ + element = new BirthmarkElement(className); + } + else{ + element = NullBirthmarkElement.getInstance(); + } + + addElement(element); + c = c.getSuperclass(); + } while(!c.getName().equals("java.lang.Object")); + addElement(new BirthmarkElement("java.lang.Object")); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractor.java similarity index 77% rename from src/main/java/jp/naist/se/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractor.java index 8186906..72ef1f9 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractor.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.birthmarks.is; +package jp.sourceforge.stigmata.birthmarks.is; /* * $Id$ @@ -7,14 +7,14 @@ package jp.naist.se.stigmata.birthmarks.is; import java.io.IOException; import java.io.InputStream; -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElementClassNotFoundException; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkExtractionFailedException; -import jp.naist.se.stigmata.ExtractionUnit; -import jp.naist.se.stigmata.birthmarks.AbstractBirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElementClassNotFoundException; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkExtractionFailedException; +import jp.sourceforge.stigmata.ExtractionUnit; +import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassWriter; diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/is/InheritanceStructureBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkService.java similarity index 69% rename from src/main/java/jp/naist/se/stigmata/birthmarks/is/InheritanceStructureBirthmarkService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkService.java index 07c0223..4530e29 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/is/InheritanceStructureBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkService.java @@ -1,47 +1,47 @@ -package jp.naist.se.stigmata.birthmarks.is; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.AbstractBirthmarkService; -import jp.naist.se.stigmata.birthmarks.comparators.PlainBirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class InheritanceStructureBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ - private BirthmarkComparator comparator = new PlainBirthmarkComparator(this); - private BirthmarkExtractor extractor = new InheritanceStructureBirthmarkExtractor(this); - - public String getType(){ - return "is"; - } - - public String getDefaultDescription(){ - return "Inheritance sequence to root class and user classes is replaced to ."; - } - - public BirthmarkExtractor getExtractor(){ - return extractor; - } - - public BirthmarkComparator getComparator(){ - return comparator; - } - - public boolean isExpert(){ - return false; - } - - public boolean isUserDefined(){ - return false; - } -} +package jp.sourceforge.stigmata.birthmarks.is; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService; +import jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class InheritanceStructureBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ + private BirthmarkComparator comparator = new PlainBirthmarkComparator(this); + private BirthmarkExtractor extractor = new InheritanceStructureBirthmarkExtractor(this); + + public String getType(){ + return "is"; + } + + public String getDefaultDescription(){ + return "Inheritance sequence to root class and user classes is replaced to ."; + } + + public BirthmarkExtractor getExtractor(){ + return extractor; + } + + public BirthmarkComparator getComparator(){ + return comparator; + } + + public boolean isExpert(){ + return false; + } + + public boolean isUserDefined(){ + return false; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGram.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGram.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java index 1974c39..e579aaa 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGram.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java @@ -1,145 +1,145 @@ -package jp.naist.se.stigmata.birthmarks.kgram; - -/* - * $Id$ - */ - -import java.io.Serializable; -import java.lang.reflect.Array; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.Set; - -/** - * This class represents k-gram of the some sequence. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class KGram implements Serializable{ - private static final long serialVersionUID = 273465874532523L; - // private List list = new ArrayList(); - private int maxLength = 4; - private T[] values; - - /** - * constructor. - * @param kvalue the number of elements of this object. - */ - public KGram(int kvalue){ - setKValue(kvalue); - } - - /** - * sets k-value. - * @param kvalue the number of elements of this object. - */ - public void setKValue(int kvalue){ - this.maxLength = kvalue; - } - - /** - * returns k-value which is the number of elements. - * @return the number of elements. - */ - public int getKValue(){ - return maxLength; - } - - /** - * returns string representation of this object. - */ - public String toString(){ - StringBuffer buffer = new StringBuffer("{ "); - for(int i = 0; i < maxLength; i++){ - if(i != 0) buffer.append(", "); - buffer.append(get(i)); - } - buffer.append(" }"); - return new String(buffer); - } - - /** - * sets a element to given index. - * @param index element index. - * @param value element value. - */ - @SuppressWarnings("unchecked") - public void set(int index, T value){ - if(index < 0 || index >= maxLength){ - throw new ArrayIndexOutOfBoundsException("expected 0-" + (maxLength - 1) + ": " + index); - } - if(value == null){ - throw new NullPointerException("null value"); - } - if(values == null){ - values = (T[])Array.newInstance(value.getClass(), getKValue()); - } - values[index] = value; - } - - /** - * returns an object of given index. - */ - public T get(int index){ - T returnValue = null; - if(index < 0 || index >= maxLength){ - throw new ArrayIndexOutOfBoundsException("expected 0-" + (maxLength - 1) + ": " + index); - } - if(values != null){ - returnValue = values[index]; - } - - return returnValue; - } - - /** - * returns an array of elements this object has. - * @return - */ - @SuppressWarnings("unchecked") - public T[] toArray(){ - if(values == null){ - throw new IllegalStateException("this object has no elements."); - } - T[] newarray = (T[])Array.newInstance(values[0].getClass(), getKValue()); - System.arraycopy(values, 0, newarray, 0, getKValue()); - return newarray; - } - - @SuppressWarnings("unchecked") - public boolean equals(Object o){ - if(o instanceof KGram){ - KGram kgram = (KGram)o; - boolean flag = getKValue() == kgram.getKValue(); - for(int i = 0; !flag && i < maxLength; i++){ - if(!get(i).equals(kgram.get(i))){ - flag = false; - } - } - return flag; - } - return false; - } - - public int hashCode(){ - return Arrays.hashCode(values); - } - - @SuppressWarnings("unchecked") - public static KGram[] buildKGram(T[] values, int kvalue){ - Set> kgrams = new LinkedHashSet>(); - - if(values.length >= kvalue){ - int max = values.length - (kvalue - 1); - for(int i = 0; i < max; i++){ - KGram kgram = new KGram(kvalue); - for(int j = 0; j < kvalue; j++){ - kgram.set(j, values[i + j]); - } - kgrams.add(kgram); - } - } - return kgrams.toArray(new KGram[kgrams.size()]); - } -} +package jp.sourceforge.stigmata.birthmarks.kgram; + +/* + * $Id$ + */ + +import java.io.Serializable; +import java.lang.reflect.Array; +import java.util.Arrays; +import java.util.LinkedHashSet; +import java.util.Set; + +/** + * This class represents k-gram of the some sequence. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class KGram implements Serializable{ + private static final long serialVersionUID = 273465874532523L; + // private List list = new ArrayList(); + private int maxLength = 4; + private T[] values; + + /** + * constructor. + * @param kvalue the number of elements of this object. + */ + public KGram(int kvalue){ + setKValue(kvalue); + } + + /** + * sets k-value. + * @param kvalue the number of elements of this object. + */ + public void setKValue(int kvalue){ + this.maxLength = kvalue; + } + + /** + * returns k-value which is the number of elements. + * @return the number of elements. + */ + public int getKValue(){ + return maxLength; + } + + /** + * returns string representation of this object. + */ + public String toString(){ + StringBuffer buffer = new StringBuffer("{ "); + for(int i = 0; i < maxLength; i++){ + if(i != 0) buffer.append(", "); + buffer.append(get(i)); + } + buffer.append(" }"); + return new String(buffer); + } + + /** + * sets a element to given index. + * @param index element index. + * @param value element value. + */ + @SuppressWarnings("unchecked") + public void set(int index, T value){ + if(index < 0 || index >= maxLength){ + throw new ArrayIndexOutOfBoundsException("expected 0-" + (maxLength - 1) + ": " + index); + } + if(value == null){ + throw new NullPointerException("null value"); + } + if(values == null){ + values = (T[])Array.newInstance(value.getClass(), getKValue()); + } + values[index] = value; + } + + /** + * returns an object of given index. + */ + public T get(int index){ + T returnValue = null; + if(index < 0 || index >= maxLength){ + throw new ArrayIndexOutOfBoundsException("expected 0-" + (maxLength - 1) + ": " + index); + } + if(values != null){ + returnValue = values[index]; + } + + return returnValue; + } + + /** + * returns an array of elements this object has. + * @return + */ + @SuppressWarnings("unchecked") + public T[] toArray(){ + if(values == null){ + throw new IllegalStateException("this object has no elements."); + } + T[] newarray = (T[])Array.newInstance(values[0].getClass(), getKValue()); + System.arraycopy(values, 0, newarray, 0, getKValue()); + return newarray; + } + + @SuppressWarnings("unchecked") + public boolean equals(Object o){ + if(o instanceof KGram){ + KGram kgram = (KGram)o; + boolean flag = getKValue() == kgram.getKValue(); + for(int i = 0; !flag && i < maxLength; i++){ + if(!get(i).equals(kgram.get(i))){ + flag = false; + } + } + return flag; + } + return false; + } + + public int hashCode(){ + return Arrays.hashCode(values); + } + + @SuppressWarnings("unchecked") + public static KGram[] buildKGram(T[] values, int kvalue){ + Set> kgrams = new LinkedHashSet>(); + + if(values.length >= kvalue){ + int max = values.length - (kvalue - 1); + for(int i = 0; i < max; i++){ + KGram kgram = new KGram(kvalue); + for(int j = 0; j < kvalue; j++){ + kgram.set(j, values[i + j]); + } + kgrams.add(kgram); + } + } + return kgrams.toArray(new KGram[kgrams.size()]); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java similarity index 84% rename from src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java index 2a34e36..b7c51d4 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java @@ -1,35 +1,35 @@ -package jp.naist.se.stigmata.birthmarks.kgram; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkElement; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class KGramBasedBirthmarkElement extends BirthmarkElement{ - private static final long serialVersionUID = 28546543857543634L; - - private KGram kgram; - - public KGramBasedBirthmarkElement(KGram kgram){ - super(kgram.toString()); - this.kgram = kgram; - } - - @SuppressWarnings("unchecked") - public boolean equals(Object o){ - return o instanceof KGramBasedBirthmarkElement && - kgram.equals(((KGramBasedBirthmarkElement)o).kgram); - } - - public int hashCode(){ - int v = kgram.hashCode(); - - return (v & 0xff << 24) | (v >> 8); - } -} +package jp.sourceforge.stigmata.birthmarks.kgram; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkElement; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class KGramBasedBirthmarkElement extends BirthmarkElement{ + private static final long serialVersionUID = 28546543857543634L; + + private KGram kgram; + + public KGramBasedBirthmarkElement(KGram kgram){ + super(kgram.toString()); + this.kgram = kgram; + } + + @SuppressWarnings("unchecked") + public boolean equals(Object o){ + return o instanceof KGramBasedBirthmarkElement && + kgram.equals(((KGramBasedBirthmarkElement)o).kgram); + } + + public int hashCode(){ + int v = kgram.hashCode(); + + return (v & 0xff << 24) | (v >> 8); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java index 3877590..81a1b51 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java @@ -1,65 +1,65 @@ -package jp.naist.se.stigmata.birthmarks.kgram; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor; - -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.MethodVisitor; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class KGramBasedBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ - private int kvalue; - private List opcodes = new ArrayList(); - - public KGramBasedBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkEnvironment environment){ - super(visitor, birthmark, environment); - } - - public int getKValue(){ - return kvalue; - } - - public void setKValue(int kvalue){ - this.kvalue = kvalue; - } - - public void visitEnd(){ - Set> kgrams = new HashSet>(); - if(opcodes.size() >= getKValue()){ - int kvalue = getKValue(); - int max = opcodes.size() - (kvalue - 1); - for(int i = 0; i < max; i++){ - KGram kgram = new KGram(kvalue); - for(int j = 0; j < kvalue; j++){ - kgram.set(j, opcodes.get(i + j)); - } - kgrams.add(kgram); - } - } - for(KGram kgram: kgrams){ - addElement(new KGramBasedBirthmarkElement(kgram)); - } - } - - @Override - public MethodVisitor visitMethod(int arg0, String arg1, String arg2, String arg3, String[] arg4){ - MethodVisitor visitor = super.visitMethod(arg0, arg1, arg2, arg3, arg4); - MethodVisitor opcodeVisitor = new OpcodeExtractionMethodVisitor(visitor, opcodes); - - return opcodeVisitor; - } -} +package jp.sourceforge.stigmata.birthmarks.kgram; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; + +import org.objectweb.asm.ClassVisitor; +import org.objectweb.asm.MethodVisitor; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class KGramBasedBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ + private int kvalue; + private List opcodes = new ArrayList(); + + public KGramBasedBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkEnvironment environment){ + super(visitor, birthmark, environment); + } + + public int getKValue(){ + return kvalue; + } + + public void setKValue(int kvalue){ + this.kvalue = kvalue; + } + + public void visitEnd(){ + Set> kgrams = new HashSet>(); + if(opcodes.size() >= getKValue()){ + int kvalue = getKValue(); + int max = opcodes.size() - (kvalue - 1); + for(int i = 0; i < max; i++){ + KGram kgram = new KGram(kvalue); + for(int j = 0; j < kvalue; j++){ + kgram.set(j, opcodes.get(i + j)); + } + kgrams.add(kgram); + } + } + for(KGram kgram: kgrams){ + addElement(new KGramBasedBirthmarkElement(kgram)); + } + } + + @Override + public MethodVisitor visitMethod(int arg0, String arg1, String arg2, String arg3, String[] arg4){ + MethodVisitor visitor = super.visitMethod(arg0, arg1, arg2, arg3, arg4); + MethodVisitor opcodeVisitor = new OpcodeExtractionMethodVisitor(visitor, opcodes); + + return opcodeVisitor; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java similarity index 73% rename from src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java index 9febe80..daad861 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java @@ -1,15 +1,15 @@ -package jp.naist.se.stigmata.birthmarks.kgram; +package jp.sourceforge.stigmata.birthmarks.kgram; /* * $Id$ */ -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.ExtractionUnit; -import jp.naist.se.stigmata.birthmarks.ASMBirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.ExtractionUnit; +import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; import org.objectweb.asm.ClassWriter; diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java similarity index 73% rename from src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java index 04bc645..fe4587a 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java @@ -1,62 +1,62 @@ -package jp.naist.se.stigmata.birthmarks.kgram; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.AbstractBirthmarkService; -import jp.naist.se.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class KGramBasedBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ - private BirthmarkComparator comparator = new LogicalAndBirthmarkComparator(this); - private BirthmarkExtractor extractor = new KGramBasedBirthmarkExtractor(this); - - public String getType(){ - return "kgram"; - } - - public String getDefaultDescription(){ - return "k-gram based birthmark."; - } - - public BirthmarkExtractor getExtractor(){ - return extractor; - } - - public BirthmarkComparator getComparator(){ - return comparator; - } - - public boolean isExpert(){ - return false; - } - - public boolean isUserDefined(){ - return false; - } - - @Override - public BirthmarkElement buildBirthmarkElement(String value) { - value = value.trim(); - if(value.startsWith("{") && value.endsWith("}")){ - String[] param = value.substring(1, value.length() - 1).split(", *"); - KGram kgram = new KGram(param.length); - for(int i = 0; i < param.length; i++){ - kgram.set(i, new Integer(param[i].trim())); - } - return new KGramBasedBirthmarkElement(kgram); - } - return null; - } -} +package jp.sourceforge.stigmata.birthmarks.kgram; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService; +import jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class KGramBasedBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ + private BirthmarkComparator comparator = new LogicalAndBirthmarkComparator(this); + private BirthmarkExtractor extractor = new KGramBasedBirthmarkExtractor(this); + + public String getType(){ + return "kgram"; + } + + public String getDefaultDescription(){ + return "k-gram based birthmark."; + } + + public BirthmarkExtractor getExtractor(){ + return extractor; + } + + public BirthmarkComparator getComparator(){ + return comparator; + } + + public boolean isExpert(){ + return false; + } + + public boolean isUserDefined(){ + return false; + } + + @Override + public BirthmarkElement buildBirthmarkElement(String value) { + value = value.trim(); + if(value.startsWith("{") && value.endsWith("}")){ + String[] param = value.substring(1, value.length() - 1).split(", *"); + KGram kgram = new KGram(param.length); + for(int i = 0; i < param.length; i++){ + kgram.set(i, new Integer(param[i].trim())); + } + return new KGramBasedBirthmarkElement(kgram); + } + return null; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java index adcf092..954d566 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java @@ -1,99 +1,99 @@ -package jp.naist.se.stigmata.birthmarks.kgram; - -/* - * $Id$ - */ - -import java.util.List; - -import org.objectweb.asm.Label; -import org.objectweb.asm.MethodAdapter; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class OpcodeExtractionMethodVisitor extends MethodAdapter{ - private List opcodes; - - public OpcodeExtractionMethodVisitor(MethodVisitor visitor, List opcodes){ - super(visitor); - this.opcodes = opcodes; - } - - @Override - public void visitFieldInsn(int opcode, String owner, String name, String desc){ - opcodes.add(opcode); - super.visitFieldInsn(opcode, owner, name, desc); - } - - @Override - public void visitIincInsn(int var, int increment){ - opcodes.add(Opcodes.IINC); - super.visitIincInsn(var, increment); - } - - @Override - public void visitInsn(int opcode){ - opcodes.add(opcode); - super.visitInsn(opcode); - } - - @Override - public void visitIntInsn(int opcode, int operand){ - opcodes.add(opcode); - super.visitIntInsn(opcode, operand); - } - - @Override - public void visitJumpInsn(int opcode, Label label){ - opcodes.add(opcode); - super.visitJumpInsn(opcode, label); - } - - @Override - public void visitLdcInsn(Object value){ - opcodes.add(Opcodes.LDC); - super.visitLdcInsn(value); - } - - @Override - public void visitLookupSwitchInsn(Label defaultHandle, int[] keys, Label[] labels){ - opcodes.add(Opcodes.LOOKUPSWITCH); - super.visitLookupSwitchInsn(defaultHandle, keys, labels); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc){ - opcodes.add(opcode); - super.visitMethodInsn(opcode, owner, name, desc); - } - - @Override - public void visitMultiANewArrayInsn(String desc, int dims){ - opcodes.add(Opcodes.MULTIANEWARRAY); - super.visitMultiANewArrayInsn(desc, dims); - } - - @Override - public void visitTableSwitchInsn(int min, int max, Label defaultLabel, Label[] labels){ - opcodes.add(Opcodes.TABLESWITCH); - super.visitTableSwitchInsn(min, max, defaultLabel, labels); - } - - @Override - public void visitTypeInsn(int opcode, String desc){ - opcodes.add(opcode); - super.visitTypeInsn(opcode, desc); - } - - @Override - public void visitVarInsn(int opcode, int var){ - opcodes.add(opcode); - super.visitVarInsn(opcode, var); - } - -} +package jp.sourceforge.stigmata.birthmarks.kgram; + +/* + * $Id$ + */ + +import java.util.List; + +import org.objectweb.asm.Label; +import org.objectweb.asm.MethodAdapter; +import org.objectweb.asm.MethodVisitor; +import org.objectweb.asm.Opcodes; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class OpcodeExtractionMethodVisitor extends MethodAdapter{ + private List opcodes; + + public OpcodeExtractionMethodVisitor(MethodVisitor visitor, List opcodes){ + super(visitor); + this.opcodes = opcodes; + } + + @Override + public void visitFieldInsn(int opcode, String owner, String name, String desc){ + opcodes.add(opcode); + super.visitFieldInsn(opcode, owner, name, desc); + } + + @Override + public void visitIincInsn(int var, int increment){ + opcodes.add(Opcodes.IINC); + super.visitIincInsn(var, increment); + } + + @Override + public void visitInsn(int opcode){ + opcodes.add(opcode); + super.visitInsn(opcode); + } + + @Override + public void visitIntInsn(int opcode, int operand){ + opcodes.add(opcode); + super.visitIntInsn(opcode, operand); + } + + @Override + public void visitJumpInsn(int opcode, Label label){ + opcodes.add(opcode); + super.visitJumpInsn(opcode, label); + } + + @Override + public void visitLdcInsn(Object value){ + opcodes.add(Opcodes.LDC); + super.visitLdcInsn(value); + } + + @Override + public void visitLookupSwitchInsn(Label defaultHandle, int[] keys, Label[] labels){ + opcodes.add(Opcodes.LOOKUPSWITCH); + super.visitLookupSwitchInsn(defaultHandle, keys, labels); + } + + @Override + public void visitMethodInsn(int opcode, String owner, String name, String desc){ + opcodes.add(opcode); + super.visitMethodInsn(opcode, owner, name, desc); + } + + @Override + public void visitMultiANewArrayInsn(String desc, int dims){ + opcodes.add(Opcodes.MULTIANEWARRAY); + super.visitMultiANewArrayInsn(desc, dims); + } + + @Override + public void visitTableSwitchInsn(int min, int max, Label defaultLabel, Label[] labels){ + opcodes.add(Opcodes.TABLESWITCH); + super.visitTableSwitchInsn(min, max, defaultLabel, labels); + } + + @Override + public void visitTypeInsn(int opcode, String desc){ + opcodes.add(opcode); + super.visitTypeInsn(opcode, desc); + } + + @Override + public void visitVarInsn(int opcode, int var){ + opcodes.add(opcode); + super.visitVarInsn(opcode, var); + } + +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/smc/MethodCallBirthmarkElement.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/MethodCallBirthmarkElement.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/birthmarks/smc/MethodCallBirthmarkElement.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/smc/MethodCallBirthmarkElement.java index be8a663..4a35716 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/smc/MethodCallBirthmarkElement.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/MethodCallBirthmarkElement.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.birthmarks.smc; +package jp.sourceforge.stigmata.birthmarks.smc; /* * $Id$ @@ -6,7 +6,7 @@ package jp.naist.se.stigmata.birthmarks.smc; import java.io.Serializable; -import jp.naist.se.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkElement; /** * diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractVisitor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractVisitor.java similarity index 85% rename from src/main/java/jp/naist/se/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractVisitor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractVisitor.java index 13cafc1..374d00d 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractVisitor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractVisitor.java @@ -1,46 +1,46 @@ -package jp.naist.se.stigmata.birthmarks.smc; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor; - -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.MethodAdapter; -import org.objectweb.asm.MethodVisitor; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class SequentialMethodCallBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ - public SequentialMethodCallBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkEnvironment environment){ - super(visitor, birthmark, environment); - } - - public MethodVisitor visitMethod(int access, String name, String desc, - String signature, String[] exceptions){ - - MethodVisitor visitor = super.visitMethod(access, name, desc, signature, exceptions); - - return new MethodAdapter(visitor){ - public void visitMethodInsn(int opcode, String owner, String name, String desc){ - String className = owner.replace('/', '.'); - if(getEnvironment().getWellknownClassManager().isWellKnownClass(className)){ - addElement(className, name, desc); - } - super.visitMethodInsn(opcode, owner, name, desc); - } - }; - } - - protected void addElement(String className, String methodName, String description){ - addElement(new MethodCallBirthmarkElement(className, methodName, description)); - } -} +package jp.sourceforge.stigmata.birthmarks.smc; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; + +import org.objectweb.asm.ClassVisitor; +import org.objectweb.asm.MethodAdapter; +import org.objectweb.asm.MethodVisitor; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class SequentialMethodCallBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ + public SequentialMethodCallBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkEnvironment environment){ + super(visitor, birthmark, environment); + } + + public MethodVisitor visitMethod(int access, String name, String desc, + String signature, String[] exceptions){ + + MethodVisitor visitor = super.visitMethod(access, name, desc, signature, exceptions); + + return new MethodAdapter(visitor){ + public void visitMethodInsn(int opcode, String owner, String name, String desc){ + String className = owner.replace('/', '.'); + if(getEnvironment().getWellknownClassManager().isWellKnownClass(className)){ + addElement(className, name, desc); + } + super.visitMethodInsn(opcode, owner, name, desc); + } + }; + } + + protected void addElement(String className, String methodName, String description){ + addElement(new MethodCallBirthmarkElement(className, methodName, description)); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractor.java similarity index 68% rename from src/main/java/jp/naist/se/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractor.java index b756099..e3f2617 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractor.java @@ -1,15 +1,15 @@ -package jp.naist.se.stigmata.birthmarks.smc; +package jp.sourceforge.stigmata.birthmarks.smc; /* * $Id$ */ -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.ExtractionUnit; -import jp.naist.se.stigmata.birthmarks.ASMBirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.ExtractionUnit; +import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; import org.objectweb.asm.ClassWriter; diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkService.java similarity index 73% rename from src/main/java/jp/naist/se/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkService.java index f69fabe..341b388 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkService.java @@ -1,57 +1,57 @@ -package jp.naist.se.stigmata.birthmarks.smc; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.AbstractBirthmarkService; -import jp.naist.se.stigmata.birthmarks.comparators.PlainBirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class SequentialMethodCallBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ - private BirthmarkComparator comparator = new PlainBirthmarkComparator(this); - private BirthmarkExtractor extractor = new SequentialMethodCallBirthmarkExtractor(this); - - public String getType(){ - return "smc"; - } - - public String getDefaultDescription(){ - return "Sequence of method call which order is appeared in method definition."; - } - - public BirthmarkExtractor getExtractor(){ - return extractor; - } - - public BirthmarkComparator getComparator(){ - return comparator; - } - - public boolean isExpert(){ - return false; - } - - public boolean isUserDefined(){ - return false; - } - - @Override - public BirthmarkElement buildBirthmarkElement(String value) { - String className = value.substring(0, value.indexOf('#')); - String methodName = value.substring(value.indexOf('#') + 1, value.lastIndexOf('!')); - String signature = value.substring(value.lastIndexOf('!') + 1); - - return new MethodCallBirthmarkElement(className, methodName, signature); - } -} +package jp.sourceforge.stigmata.birthmarks.smc; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService; +import jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class SequentialMethodCallBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ + private BirthmarkComparator comparator = new PlainBirthmarkComparator(this); + private BirthmarkExtractor extractor = new SequentialMethodCallBirthmarkExtractor(this); + + public String getType(){ + return "smc"; + } + + public String getDefaultDescription(){ + return "Sequence of method call which order is appeared in method definition."; + } + + public BirthmarkExtractor getExtractor(){ + return extractor; + } + + public BirthmarkComparator getComparator(){ + return comparator; + } + + public boolean isExpert(){ + return false; + } + + public boolean isUserDefined(){ + return false; + } + + @Override + public BirthmarkElement buildBirthmarkElement(String value) { + String className = value.substring(0, value.indexOf('#')); + String methodName = value.substring(value.indexOf('#') + 1, value.lastIndexOf('!')); + String signature = value.substring(value.lastIndexOf('!') + 1); + + return new MethodCallBirthmarkElement(className, methodName, signature); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/uc/UsedClassesBirthmark.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmark.java similarity index 84% rename from src/main/java/jp/naist/se/stigmata/birthmarks/uc/UsedClassesBirthmark.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmark.java index 7ebfb22..615a349 100755 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/uc/UsedClassesBirthmark.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmark.java @@ -1,47 +1,47 @@ -package jp.naist.se.stigmata.birthmarks.uc; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.birthmarks.PlainBirthmark; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -class UsedClassesBirthmark extends PlainBirthmark{ - private static final long serialVersionUID = -1043130948373105655L; - - public UsedClassesBirthmark(String type){ - super(type); - } - - @Override - public synchronized void addElement(BirthmarkElement element){ - int c = getElementCount(); - String s = (String)element.getValue(); - boolean addFlag = false; - for(int i = 0; i < c; i++){ - BirthmarkElement e = getElement(i); - String v = (String)e.getValue(); - if(s.equals(v)){ - addFlag = true; - break; - } - } - if(!addFlag){ - for(int i = 0; i < c; i++){ - if(s.compareTo((String)getElement(i).getValue()) < 0){ - super.addElement(i, element); - break; - } - } - } - if(!addFlag && c == getElementCount()){ - super.addElement(element); - } - } -} +package jp.sourceforge.stigmata.birthmarks.uc; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.birthmarks.PlainBirthmark; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +class UsedClassesBirthmark extends PlainBirthmark{ + private static final long serialVersionUID = -1043130948373105655L; + + public UsedClassesBirthmark(String type){ + super(type); + } + + @Override + public synchronized void addElement(BirthmarkElement element){ + int c = getElementCount(); + String s = (String)element.getValue(); + boolean addFlag = false; + for(int i = 0; i < c; i++){ + BirthmarkElement e = getElement(i); + String v = (String)e.getValue(); + if(s.equals(v)){ + addFlag = true; + break; + } + } + if(!addFlag){ + for(int i = 0; i < c; i++){ + if(s.compareTo((String)getElement(i).getValue()) < 0){ + super.addElement(i, element); + break; + } + } + } + if(!addFlag && c == getElementCount()){ + super.addElement(element); + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractVisitor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractVisitor.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractVisitor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractVisitor.java index 1c61700..7124a5c 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractVisitor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractVisitor.java @@ -1,199 +1,199 @@ -package jp.naist.se.stigmata.birthmarks.uc; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor; - -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.FieldVisitor; -import org.objectweb.asm.Label; -import org.objectweb.asm.MethodAdapter; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Type; -import org.objectweb.asm.signature.SignatureReader; -import org.objectweb.asm.signature.SignatureWriter; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ - public UsedClassesBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, - BirthmarkEnvironment environment){ - super(visitor, birthmark, environment); - } - - public void visit(int version, int access, String name, String signature, - String superName, String[] interfaces){ - addSignatureClass(signature); - - if(getEnvironment().getWellknownClassManager().isWellKnownClass(superName)){ - add(superName); - } - for(String i: interfaces){ - if(getEnvironment().getWellknownClassManager().isWellKnownClass(i)){ - add(i); - } - } - } - - public FieldVisitor visitField(int access, String name, String desc, - String signature, Object value){ - FieldVisitor visitor = super.visitField(access, name, desc, signature, value); - - addDescriptor(desc); - addSignatureClass(signature); - - return visitor; - } - - public MethodVisitor visitMethod(int access, String name, String desc, - String signature, String[] exceptions){ - if(exceptions != null){ - for(String exception: exceptions){ - if(getEnvironment().getWellknownClassManager().isWellKnownClass(exception)){ - add(exception); - } - } - } - addMethodDescriptor(desc); - addSignatureClass(signature); - - MethodVisitor visitor = super.visitMethod(access, name, desc, signature, exceptions); - - return new MethodAdapter(visitor){ - public void visitTypeInsn(int opcode, String desc){ - Type type = Type.getType("L" + desc + ";"); - if(checkType(type)){ - add(desc); - } - super.visitTypeInsn(opcode, desc); - } - - public void visitTryCatchBlock(Label start, Label end, Label handle, String desc){ - Type type = Type.getType("L" + desc + ";"); - if(checkType(type)){ - add(getType(type)); - } - super.visitTryCatchBlock(start, end, handle, desc); - } - - public void visitMultiANewArrayInsn(String desc, int dims){ - Type type = Type.getType(desc); - if(checkType(type)){ - add(getType(type)); - } - super.visitMultiANewArrayInsn(desc, dims); - } - - public void visitLocalVariable(String name, String desc, String signature, - Label start, Label end, int index){ - if(checkType(Type.getType(desc))){ - add(desc); - } - addSignatureClass(signature); - - super.visitLocalVariable(name, desc, signature, start, end, index); - } - - public void visitFieldInsn(int opcode, String owner, String name, String desc){ - if(getEnvironment().getWellknownClassManager().isWellKnownClass(owner)){ - add(owner); - } - addDescriptor(desc); - super.visitFieldInsn(opcode, owner, name, desc); - } - public void visitMethodInsn(int opcode, String owner, String name, String desc){ - String className = normalize(owner); - if(getEnvironment().getWellknownClassManager().isWellKnownClass(className)){ - add(className); - } - addMethodDescriptor(desc); - super.visitMethodInsn(opcode, owner, name, desc); - } - }; - } - - private void addSignatureClass(String signature){ - if(signature != null){ - SignatureReader in = new SignatureReader(signature); - SignatureWriter writer = new SignatureWriter(){ - public void visitClassType(String classType){ - if(getEnvironment().getWellknownClassManager().isWellKnownClass(classType)){ - add(classType); - } - } - }; - in.accept(writer); - } - } - - private void addMethodDescriptor(String desc){ - Type returnType = Type.getReturnType(desc); - Type[] args = Type.getArgumentTypes(desc); - if(checkType(returnType)){ - add(getType(returnType)); - } - for(Type arg: args){ - if(checkType(arg)){ - add(getType(arg)); - } - } - } - - private void addDescriptor(String desc){ - Type type = Type.getType(desc); - if(checkType(type)){ - add(desc); - } - } - - private String getType(Type type){ - if(type.getSort() == Type.ARRAY){ - while(type.getSort() != Type.ARRAY){ - type = type.getElementType(); - } - } - - if(type.getSort() == Type.OBJECT){ - return normalize(type.getClassName()); - } - - return null; - } - - private boolean checkType(Type type){ - if(type.getSort() == Type.ARRAY){ - while(type.getSort() != Type.ARRAY){ - type = type.getElementType(); - } - } - - if(type.getSort() == Type.OBJECT){ - String className = type.getClassName(); - if(getEnvironment().getWellknownClassManager().isWellKnownClass(className)){ - return true; - } - } - return false; - } - - private String normalize(String name){ - if(name.startsWith("L") && name.endsWith(";")){ - name = name.substring(1, name.length() - 1); - } - name = name.replace('/', '.'); - - return name; - } - - private void add(String name){ - addElement(new BirthmarkElement(normalize(name))); - } -} +package jp.sourceforge.stigmata.birthmarks.uc; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; + +import org.objectweb.asm.ClassVisitor; +import org.objectweb.asm.FieldVisitor; +import org.objectweb.asm.Label; +import org.objectweb.asm.MethodAdapter; +import org.objectweb.asm.MethodVisitor; +import org.objectweb.asm.Type; +import org.objectweb.asm.signature.SignatureReader; +import org.objectweb.asm.signature.SignatureWriter; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ + public UsedClassesBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, + BirthmarkEnvironment environment){ + super(visitor, birthmark, environment); + } + + public void visit(int version, int access, String name, String signature, + String superName, String[] interfaces){ + addSignatureClass(signature); + + if(getEnvironment().getWellknownClassManager().isWellKnownClass(superName)){ + add(superName); + } + for(String i: interfaces){ + if(getEnvironment().getWellknownClassManager().isWellKnownClass(i)){ + add(i); + } + } + } + + public FieldVisitor visitField(int access, String name, String desc, + String signature, Object value){ + FieldVisitor visitor = super.visitField(access, name, desc, signature, value); + + addDescriptor(desc); + addSignatureClass(signature); + + return visitor; + } + + public MethodVisitor visitMethod(int access, String name, String desc, + String signature, String[] exceptions){ + if(exceptions != null){ + for(String exception: exceptions){ + if(getEnvironment().getWellknownClassManager().isWellKnownClass(exception)){ + add(exception); + } + } + } + addMethodDescriptor(desc); + addSignatureClass(signature); + + MethodVisitor visitor = super.visitMethod(access, name, desc, signature, exceptions); + + return new MethodAdapter(visitor){ + public void visitTypeInsn(int opcode, String desc){ + Type type = Type.getType("L" + desc + ";"); + if(checkType(type)){ + add(desc); + } + super.visitTypeInsn(opcode, desc); + } + + public void visitTryCatchBlock(Label start, Label end, Label handle, String desc){ + Type type = Type.getType("L" + desc + ";"); + if(checkType(type)){ + add(getType(type)); + } + super.visitTryCatchBlock(start, end, handle, desc); + } + + public void visitMultiANewArrayInsn(String desc, int dims){ + Type type = Type.getType(desc); + if(checkType(type)){ + add(getType(type)); + } + super.visitMultiANewArrayInsn(desc, dims); + } + + public void visitLocalVariable(String name, String desc, String signature, + Label start, Label end, int index){ + if(checkType(Type.getType(desc))){ + add(desc); + } + addSignatureClass(signature); + + super.visitLocalVariable(name, desc, signature, start, end, index); + } + + public void visitFieldInsn(int opcode, String owner, String name, String desc){ + if(getEnvironment().getWellknownClassManager().isWellKnownClass(owner)){ + add(owner); + } + addDescriptor(desc); + super.visitFieldInsn(opcode, owner, name, desc); + } + public void visitMethodInsn(int opcode, String owner, String name, String desc){ + String className = normalize(owner); + if(getEnvironment().getWellknownClassManager().isWellKnownClass(className)){ + add(className); + } + addMethodDescriptor(desc); + super.visitMethodInsn(opcode, owner, name, desc); + } + }; + } + + private void addSignatureClass(String signature){ + if(signature != null){ + SignatureReader in = new SignatureReader(signature); + SignatureWriter writer = new SignatureWriter(){ + public void visitClassType(String classType){ + if(getEnvironment().getWellknownClassManager().isWellKnownClass(classType)){ + add(classType); + } + } + }; + in.accept(writer); + } + } + + private void addMethodDescriptor(String desc){ + Type returnType = Type.getReturnType(desc); + Type[] args = Type.getArgumentTypes(desc); + if(checkType(returnType)){ + add(getType(returnType)); + } + for(Type arg: args){ + if(checkType(arg)){ + add(getType(arg)); + } + } + } + + private void addDescriptor(String desc){ + Type type = Type.getType(desc); + if(checkType(type)){ + add(desc); + } + } + + private String getType(Type type){ + if(type.getSort() == Type.ARRAY){ + while(type.getSort() != Type.ARRAY){ + type = type.getElementType(); + } + } + + if(type.getSort() == Type.OBJECT){ + return normalize(type.getClassName()); + } + + return null; + } + + private boolean checkType(Type type){ + if(type.getSort() == Type.ARRAY){ + while(type.getSort() != Type.ARRAY){ + type = type.getElementType(); + } + } + + if(type.getSort() == Type.OBJECT){ + String className = type.getClassName(); + if(getEnvironment().getWellknownClassManager().isWellKnownClass(className)){ + return true; + } + } + return false; + } + + private String normalize(String name){ + if(name.startsWith("L") && name.endsWith(";")){ + name = name.substring(1, name.length() - 1); + } + name = name.replace('/', '.'); + + return name; + } + + private void add(String name){ + addElement(new BirthmarkElement(normalize(name))); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractor.java similarity index 71% rename from src/main/java/jp/naist/se/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractor.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractor.java index f9700b3..dae536d 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractor.java @@ -1,15 +1,15 @@ -package jp.naist.se.stigmata.birthmarks.uc; +package jp.sourceforge.stigmata.birthmarks.uc; /* * $Id$ */ -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.ExtractionUnit; -import jp.naist.se.stigmata.birthmarks.ASMBirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor; -import jp.naist.se.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.ExtractionUnit; +import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; import org.objectweb.asm.ClassWriter; diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java similarity index 68% rename from src/main/java/jp/naist/se/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java index 0ddf00a..ce402a6 100644 --- a/src/main/java/jp/naist/se/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java @@ -1,47 +1,47 @@ -package jp.naist.se.stigmata.birthmarks.uc; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.BirthmarkExtractor; -import jp.naist.se.stigmata.birthmarks.AbstractBirthmarkService; -import jp.naist.se.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class UsedClassesBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ - private BirthmarkComparator comparator = new LogicalAndBirthmarkComparator(this); - private BirthmarkExtractor extractor = new UsedClassesBirthmarkExtractor(this); - - public String getType(){ - return "uc"; - } - - public String getDefaultDescription(){ - return "Set of used classes in target class."; - } - - public BirthmarkExtractor getExtractor(){ - return extractor; - } - - public BirthmarkComparator getComparator(){ - return comparator; - } - - public boolean isExpert(){ - return false; - } - - public boolean isUserDefined(){ - return false; - } -} +package jp.sourceforge.stigmata.birthmarks.uc; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService; +import jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class UsedClassesBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{ + private BirthmarkComparator comparator = new LogicalAndBirthmarkComparator(this); + private BirthmarkExtractor extractor = new UsedClassesBirthmarkExtractor(this); + + public String getType(){ + return "uc"; + } + + public String getDefaultDescription(){ + return "Set of used classes in target class."; + } + + public BirthmarkExtractor getExtractor(){ + return extractor; + } + + public BirthmarkComparator getComparator(){ + return comparator; + } + + public boolean isExpert(){ + return false; + } + + public boolean isUserDefined(){ + return false; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/event/BirthmarkEngineAdapter.java b/src/main/java/jp/sourceforge/stigmata/event/BirthmarkEngineAdapter.java similarity index 87% rename from src/main/java/jp/naist/se/stigmata/event/BirthmarkEngineAdapter.java rename to src/main/java/jp/sourceforge/stigmata/event/BirthmarkEngineAdapter.java index 530dd35..b32fd3a 100755 --- a/src/main/java/jp/naist/se/stigmata/event/BirthmarkEngineAdapter.java +++ b/src/main/java/jp/sourceforge/stigmata/event/BirthmarkEngineAdapter.java @@ -1,24 +1,24 @@ -package jp.naist.se.stigmata.event; - -/* - * $Id$ - */ - -/** - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class BirthmarkEngineAdapter implements BirthmarkEngineListener{ - - public void operationDone(BirthmarkEngineEvent e){ - } - - public void operationStart(BirthmarkEngineEvent e){ - } - - public void subOperationDone(BirthmarkEngineEvent e){ - } - - public void subOperationStart(BirthmarkEngineEvent e){ - } -} +package jp.sourceforge.stigmata.event; + +/* + * $Id$ + */ + +/** + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class BirthmarkEngineAdapter implements BirthmarkEngineListener{ + + public void operationDone(BirthmarkEngineEvent e){ + } + + public void operationStart(BirthmarkEngineEvent e){ + } + + public void subOperationDone(BirthmarkEngineEvent e){ + } + + public void subOperationStart(BirthmarkEngineEvent e){ + } +} diff --git a/src/main/java/jp/naist/se/stigmata/event/BirthmarkEngineEvent.java b/src/main/java/jp/sourceforge/stigmata/event/BirthmarkEngineEvent.java similarity index 91% rename from src/main/java/jp/naist/se/stigmata/event/BirthmarkEngineEvent.java rename to src/main/java/jp/sourceforge/stigmata/event/BirthmarkEngineEvent.java index 37c0869..a568f2e 100755 --- a/src/main/java/jp/naist/se/stigmata/event/BirthmarkEngineEvent.java +++ b/src/main/java/jp/sourceforge/stigmata/event/BirthmarkEngineEvent.java @@ -1,39 +1,39 @@ -package jp.naist.se.stigmata.event; - -/* - * $Id$ - */ - -import java.util.EventObject; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class BirthmarkEngineEvent extends EventObject{ - private static final long serialVersionUID = -1260793588721638917L; - - private OperationType type; - private OperationStage stage; - private WarningMessages message; - - public BirthmarkEngineEvent(OperationStage stage, OperationType type, WarningMessages message){ - super(type.ordinal()); - this.type = type; - this.stage = stage; - this.message = message; - } - - public OperationStage getStage(){ - return stage; - } - - public OperationType getType(){ - return type; - } - - public WarningMessages getMessage(){ - return message; - } -} +package jp.sourceforge.stigmata.event; + +/* + * $Id$ + */ + +import java.util.EventObject; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class BirthmarkEngineEvent extends EventObject{ + private static final long serialVersionUID = -1260793588721638917L; + + private OperationType type; + private OperationStage stage; + private WarningMessages message; + + public BirthmarkEngineEvent(OperationStage stage, OperationType type, WarningMessages message){ + super(type.ordinal()); + this.type = type; + this.stage = stage; + this.message = message; + } + + public OperationStage getStage(){ + return stage; + } + + public OperationType getType(){ + return type; + } + + public WarningMessages getMessage(){ + return message; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/event/BirthmarkEngineListener.java b/src/main/java/jp/sourceforge/stigmata/event/BirthmarkEngineListener.java similarity index 87% rename from src/main/java/jp/naist/se/stigmata/event/BirthmarkEngineListener.java rename to src/main/java/jp/sourceforge/stigmata/event/BirthmarkEngineListener.java index b5ad51e..932b86b 100755 --- a/src/main/java/jp/naist/se/stigmata/event/BirthmarkEngineListener.java +++ b/src/main/java/jp/sourceforge/stigmata/event/BirthmarkEngineListener.java @@ -1,22 +1,22 @@ -package jp.naist.se.stigmata.event; - -/* - * $Id$ - */ - -import java.util.EventListener; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public interface BirthmarkEngineListener extends EventListener{ - public void operationStart(BirthmarkEngineEvent e); - - public void subOperationStart(BirthmarkEngineEvent e); - - public void subOperationDone(BirthmarkEngineEvent e); - - public void operationDone(BirthmarkEngineEvent e); -} +package jp.sourceforge.stigmata.event; + +/* + * $Id$ + */ + +import java.util.EventListener; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public interface BirthmarkEngineListener extends EventListener{ + public void operationStart(BirthmarkEngineEvent e); + + public void subOperationStart(BirthmarkEngineEvent e); + + public void subOperationDone(BirthmarkEngineEvent e); + + public void operationDone(BirthmarkEngineEvent e); +} diff --git a/src/main/java/jp/naist/se/stigmata/event/OperationStage.java b/src/main/java/jp/sourceforge/stigmata/event/OperationStage.java similarity index 73% rename from src/main/java/jp/naist/se/stigmata/event/OperationStage.java rename to src/main/java/jp/sourceforge/stigmata/event/OperationStage.java index 845d423..b2c1595 100755 --- a/src/main/java/jp/naist/se/stigmata/event/OperationStage.java +++ b/src/main/java/jp/sourceforge/stigmata/event/OperationStage.java @@ -1,8 +1,8 @@ -package jp.naist.se.stigmata.event; - -public enum OperationStage{ - OPERATION_START, - SUB_OPERATION_START, - SUB_OPERATION_DONE, - OPERATION_DONE, -} +package jp.sourceforge.stigmata.event; + +public enum OperationStage{ + OPERATION_START, + SUB_OPERATION_START, + SUB_OPERATION_DONE, + OPERATION_DONE, +} diff --git a/src/main/java/jp/naist/se/stigmata/event/OperationType.java b/src/main/java/jp/sourceforge/stigmata/event/OperationType.java similarity index 82% rename from src/main/java/jp/naist/se/stigmata/event/OperationType.java rename to src/main/java/jp/sourceforge/stigmata/event/OperationType.java index aba112c..cbaf621 100755 --- a/src/main/java/jp/naist/se/stigmata/event/OperationType.java +++ b/src/main/java/jp/sourceforge/stigmata/event/OperationType.java @@ -1,19 +1,19 @@ -package jp.naist.se.stigmata.event; - -/* - * $Id$ - */ - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public enum OperationType{ - CONFIGURATION, - EXTRACT_BIRTHMARKS, - COMPARE_BIRTHMARKS, - COMPARE_DETAIL_BIRTHMARKS, - FILTER_BIRTHMARKS, - CREATE_ENVIRONMENT, -} +package jp.sourceforge.stigmata.event; + +/* + * $Id$ + */ + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public enum OperationType{ + CONFIGURATION, + EXTRACT_BIRTHMARKS, + COMPARE_BIRTHMARKS, + COMPARE_DETAIL_BIRTHMARKS, + FILTER_BIRTHMARKS, + CREATE_ENVIRONMENT, +} diff --git a/src/main/java/jp/naist/se/stigmata/event/WarningMessages.java b/src/main/java/jp/sourceforge/stigmata/event/WarningMessages.java similarity index 91% rename from src/main/java/jp/naist/se/stigmata/event/WarningMessages.java rename to src/main/java/jp/sourceforge/stigmata/event/WarningMessages.java index 5413cf4..fea6177 100755 --- a/src/main/java/jp/naist/se/stigmata/event/WarningMessages.java +++ b/src/main/java/jp/sourceforge/stigmata/event/WarningMessages.java @@ -1,47 +1,47 @@ -package jp.naist.se.stigmata.event; - -/* - * $Id$ - */ - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class WarningMessages{ - private OperationType type; - private Map messages = new HashMap(); - - public WarningMessages(OperationType type){ - this.type = type; - } - - public void addMessage(Exception e, String string){ - messages.put(e, string); - } - - public Iterator exceptions(){ - return messages.keySet().iterator(); - } - - public String getString(Exception e){ - return messages.get(e); - } - - public OperationType getType(){ - return type; - } - - public void setType(OperationType type){ - this.type = type; - } - - public int getWarningCount(){ - return messages.size(); - } -} +package jp.sourceforge.stigmata.event; + +/* + * $Id$ + */ + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class WarningMessages{ + private OperationType type; + private Map messages = new HashMap(); + + public WarningMessages(OperationType type){ + this.type = type; + } + + public void addMessage(Exception e, String string){ + messages.put(e, string); + } + + public Iterator exceptions(){ + return messages.keySet().iterator(); + } + + public String getString(Exception e){ + return messages.get(e); + } + + public OperationType getType(){ + return type; + } + + public void setType(OperationType type){ + this.type = type; + } + + public int getWarningCount(){ + return messages.size(); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/filter/AbstractComparisonPairFilter.java b/src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilter.java similarity index 85% rename from src/main/java/jp/naist/se/stigmata/filter/AbstractComparisonPairFilter.java rename to src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilter.java index f453b36..e23b696 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/AbstractComparisonPairFilter.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilter.java @@ -1,48 +1,48 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public abstract class AbstractComparisonPairFilter implements ComparisonPairFilter{ - private ComparisonPairFilterSpi service; - private Criterion criterion = Criterion.EQUALS_AS; - - public AbstractComparisonPairFilter(ComparisonPairFilterSpi service){ - this.service = service; - } - - public ComparisonPairFilterSpi getService(){ - return service; - } - - public Criterion getCriterion(){ - return criterion; - } - - public void setCriterion(Criterion criterion){ - if(!isAcceptable(criterion)){ - throw new IllegalArgumentException("illegal criterion: " - + criterion + ": accepts only " + getAcceptableCriteria()); - } - this.criterion = criterion; - } - - public boolean isAcceptable(Criterion criterion){ - Criterion[] criteria = getAcceptableCriteria(); - for(int i = 0; i < criteria.length; i++){ - if(criteria[i] == criterion){ - return true; - } - } - return false; - } -} +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public abstract class AbstractComparisonPairFilter implements ComparisonPairFilter{ + private ComparisonPairFilterSpi service; + private Criterion criterion = Criterion.EQUALS_AS; + + public AbstractComparisonPairFilter(ComparisonPairFilterSpi service){ + this.service = service; + } + + public ComparisonPairFilterSpi getService(){ + return service; + } + + public Criterion getCriterion(){ + return criterion; + } + + public void setCriterion(Criterion criterion){ + if(!isAcceptable(criterion)){ + throw new IllegalArgumentException("illegal criterion: " + + criterion + ": accepts only " + getAcceptableCriteria()); + } + this.criterion = criterion; + } + + public boolean isAcceptable(Criterion criterion){ + Criterion[] criteria = getAcceptableCriteria(); + for(int i = 0; i < criteria.length; i++){ + if(criteria[i] == criterion){ + return true; + } + } + return false; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/filter/AbstractComparisonPairFilterService.java b/src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilterService.java similarity index 76% rename from src/main/java/jp/naist/se/stigmata/filter/AbstractComparisonPairFilterService.java rename to src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilterService.java index d383e22..1c73ec0 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/AbstractComparisonPairFilterService.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilterService.java @@ -1,34 +1,34 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - -import java.util.Locale; - -import jp.naist.se.stigmata.spi.AbstractServiceProvider; -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; -import jp.naist.se.stigmata.utils.LocalizedDescriptionManager; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -abstract class AbstractComparisonPairFilterService extends AbstractServiceProvider implements ComparisonPairFilterSpi{ - public String getDescription(Locale locale){ - return LocalizedDescriptionManager.getInstance().getDescription( - locale, getFilterName(), LocalizedDescriptionManager.ServiceCategory.filter - ); - } - - public String getDisplayFilterName(){ - return getDisplayFilterName(Locale.getDefault()); - } - - public String getDisplayFilterName(Locale locale){ - return LocalizedDescriptionManager.getInstance().getDisplayType( - locale, getFilterName(), LocalizedDescriptionManager.ServiceCategory.filter - ); - } -} +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + +import java.util.Locale; + +import jp.sourceforge.stigmata.spi.AbstractServiceProvider; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +abstract class AbstractComparisonPairFilterService extends AbstractServiceProvider implements ComparisonPairFilterSpi{ + public String getDescription(Locale locale){ + return LocalizedDescriptionManager.getInstance().getDescription( + locale, getFilterName(), LocalizedDescriptionManager.ServiceCategory.filter + ); + } + + public String getDisplayFilterName(){ + return getDisplayFilterName(Locale.getDefault()); + } + + public String getDisplayFilterName(Locale locale){ + return LocalizedDescriptionManager.getInstance().getDisplayType( + locale, getFilterName(), LocalizedDescriptionManager.ServiceCategory.filter + ); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/filter/BirthmarkElementCountComparisonPairFilter.java b/src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilter.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/filter/BirthmarkElementCountComparisonPairFilter.java rename to src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilter.java index 119fab9..47d4ab6 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/BirthmarkElementCountComparisonPairFilter.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilter.java @@ -1,178 +1,178 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.List; - -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkElementCountComparisonPairFilter extends AbstractComparisonPairFilter{ - private static final List CRITERIA = new ArrayList(); - - private int threshold = 0; - private FilterTarget target; - private String birthmarkType; - - static{ - CRITERIA.add(Criterion.GREATER_EQUALS); - CRITERIA.add(Criterion.GREATER_THAN); - CRITERIA.add(Criterion.LESS_EQUALS); - CRITERIA.add(Criterion.LESS_THAN); - CRITERIA.add(Criterion.EQUALS_AS); - CRITERIA.add(Criterion.NOT_EQUALS_AS); - } - - public BirthmarkElementCountComparisonPairFilter(ComparisonPairFilterSpi service){ - super(service); - } - - public String getBirthmarkType(){ - return birthmarkType; - } - - public void setBirthmarkType(String birthmarkType){ - this.birthmarkType = birthmarkType; - } - - public static Criterion[] getValidCriteria(){ - return CRITERIA.toArray(new Criterion[CRITERIA.size()]); - } - - public Criterion[] getAcceptableCriteria(){ - return getValidCriteria(); - } - - private boolean isFilteredTwo(ComparisonPair pair){ - boolean flag = false; - - String type = getBirthmarkType(); - if(pair.getTarget1().hasBirthmark(type) && pair.getTarget2().hasBirthmark(type)){ - int elem1 = pair.getTarget1().getBirthmark(type).getElementCount(); - int elem2 = pair.getTarget2().getBirthmark(type).getElementCount(); - - switch(getCriterion()){ - case GREATER_EQUALS: - flag = (target == FilterTarget.BOTH_TARGETS && elem1 >= threshold && elem2 >= threshold) || - (target == FilterTarget.ONE_OF_TARGETS && (elem1 >= threshold || elem2 >= threshold)); - break; - case GREATER_THAN: - flag = (target == FilterTarget.BOTH_TARGETS && elem1 > threshold && elem2 > threshold) || - (target == FilterTarget.ONE_OF_TARGETS && (elem1 > threshold || elem2 > threshold)); - break; - case LESS_EQUALS: - flag = (target == FilterTarget.BOTH_TARGETS && elem1 <= threshold && elem2 <= threshold) || - (target == FilterTarget.ONE_OF_TARGETS && (elem1 <= threshold || elem2 <= threshold)); - break; - case LESS_THAN: - flag = (target == FilterTarget.BOTH_TARGETS && elem1 < threshold && elem2 < threshold) || - (target == FilterTarget.ONE_OF_TARGETS && (elem1 < threshold || elem2 < threshold)); - break; - case EQUALS_AS: - flag = (target == FilterTarget.BOTH_TARGETS && elem1 == threshold && elem2 == threshold) || - (target == FilterTarget.ONE_OF_TARGETS && (elem1 == threshold || elem2 == threshold)); - break; - case NOT_EQUALS_AS: - flag = (target == FilterTarget.BOTH_TARGETS && elem1 != threshold && elem2 != threshold) || - (target == FilterTarget.ONE_OF_TARGETS && (elem1 != threshold || elem2 != threshold)); - break; - default: - flag = false; - break; - } - } - return flag; - } - - public boolean isFiltered(ComparisonPair pair){ - if(target == FilterTarget.BOTH_TARGETS || target == FilterTarget.ONE_OF_TARGETS){ - return isFilteredTwo(pair); - } - boolean flag = false; - String type = getBirthmarkType(); - if(pair.getTarget1().hasBirthmark(type) && pair.getTarget2().hasBirthmark(type)){ - int total = 0; - int threshold = getThreshold(); - if(target == FilterTarget.TARGET_1){ - total = pair.getTarget1().getBirthmark(type).getElementCount(); - } - if(target == FilterTarget.TARGET_2){ - total = pair.getTarget2().getBirthmark(type).getElementCount(); - } - switch(getCriterion()){ - case GREATER_EQUALS: - flag = total >= threshold; - break; - case GREATER_THAN: - flag = total > threshold; - break; - case LESS_EQUALS: - flag = total <= threshold; - break; - case LESS_THAN: - flag = total < threshold; - break; - case EQUALS_AS: - flag = total == threshold; - break; - case NOT_EQUALS_AS: - flag = total != threshold; - break; - default: - flag = false; - break; - } - } - return flag; - } - - public int getThreshold(){ - return threshold; - } - - public void setThreshold(int threshold){ - if(threshold < 0){ - throw new IllegalArgumentException("threshold must be positive value: " + threshold); - } - this.threshold = threshold; - } - - public FilterTarget getTarget(){ - return target; - } - - public void setTarget(FilterTarget target){ - this.target = target; - } - - public String toString(){ - StringBuilder sb = new StringBuilder(); - switch(getTarget()){ - case TARGET_1: sb.append("target1"); break; - case TARGET_2: sb.append("target2"); break; - case BOTH_TARGETS: sb.append("(target1&target2)"); break; - case ONE_OF_TARGETS: sb.append("(target1|target2)"); - } - sb.append(".").append(birthmarkType); - sb.append(".size"); - switch(getCriterion()){ - case GREATER_EQUALS: sb.append(" >= "); break; - case GREATER_THAN: sb.append(" > "); break; - case LESS_EQUALS: sb.append(" <= "); break; - case LESS_THAN: sb.append(" < "); break; - case EQUALS_AS: sb.append(" == "); break; - case NOT_EQUALS_AS: sb.append(" != "); break; - } - sb.append(Integer.toString(getThreshold())); - - return new String(sb); - } -} +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.List; + +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkElementCountComparisonPairFilter extends AbstractComparisonPairFilter{ + private static final List CRITERIA = new ArrayList(); + + private int threshold = 0; + private FilterTarget target; + private String birthmarkType; + + static{ + CRITERIA.add(Criterion.GREATER_EQUALS); + CRITERIA.add(Criterion.GREATER_THAN); + CRITERIA.add(Criterion.LESS_EQUALS); + CRITERIA.add(Criterion.LESS_THAN); + CRITERIA.add(Criterion.EQUALS_AS); + CRITERIA.add(Criterion.NOT_EQUALS_AS); + } + + public BirthmarkElementCountComparisonPairFilter(ComparisonPairFilterSpi service){ + super(service); + } + + public String getBirthmarkType(){ + return birthmarkType; + } + + public void setBirthmarkType(String birthmarkType){ + this.birthmarkType = birthmarkType; + } + + public static Criterion[] getValidCriteria(){ + return CRITERIA.toArray(new Criterion[CRITERIA.size()]); + } + + public Criterion[] getAcceptableCriteria(){ + return getValidCriteria(); + } + + private boolean isFilteredTwo(ComparisonPair pair){ + boolean flag = false; + + String type = getBirthmarkType(); + if(pair.getTarget1().hasBirthmark(type) && pair.getTarget2().hasBirthmark(type)){ + int elem1 = pair.getTarget1().getBirthmark(type).getElementCount(); + int elem2 = pair.getTarget2().getBirthmark(type).getElementCount(); + + switch(getCriterion()){ + case GREATER_EQUALS: + flag = (target == FilterTarget.BOTH_TARGETS && elem1 >= threshold && elem2 >= threshold) || + (target == FilterTarget.ONE_OF_TARGETS && (elem1 >= threshold || elem2 >= threshold)); + break; + case GREATER_THAN: + flag = (target == FilterTarget.BOTH_TARGETS && elem1 > threshold && elem2 > threshold) || + (target == FilterTarget.ONE_OF_TARGETS && (elem1 > threshold || elem2 > threshold)); + break; + case LESS_EQUALS: + flag = (target == FilterTarget.BOTH_TARGETS && elem1 <= threshold && elem2 <= threshold) || + (target == FilterTarget.ONE_OF_TARGETS && (elem1 <= threshold || elem2 <= threshold)); + break; + case LESS_THAN: + flag = (target == FilterTarget.BOTH_TARGETS && elem1 < threshold && elem2 < threshold) || + (target == FilterTarget.ONE_OF_TARGETS && (elem1 < threshold || elem2 < threshold)); + break; + case EQUALS_AS: + flag = (target == FilterTarget.BOTH_TARGETS && elem1 == threshold && elem2 == threshold) || + (target == FilterTarget.ONE_OF_TARGETS && (elem1 == threshold || elem2 == threshold)); + break; + case NOT_EQUALS_AS: + flag = (target == FilterTarget.BOTH_TARGETS && elem1 != threshold && elem2 != threshold) || + (target == FilterTarget.ONE_OF_TARGETS && (elem1 != threshold || elem2 != threshold)); + break; + default: + flag = false; + break; + } + } + return flag; + } + + public boolean isFiltered(ComparisonPair pair){ + if(target == FilterTarget.BOTH_TARGETS || target == FilterTarget.ONE_OF_TARGETS){ + return isFilteredTwo(pair); + } + boolean flag = false; + String type = getBirthmarkType(); + if(pair.getTarget1().hasBirthmark(type) && pair.getTarget2().hasBirthmark(type)){ + int total = 0; + int threshold = getThreshold(); + if(target == FilterTarget.TARGET_1){ + total = pair.getTarget1().getBirthmark(type).getElementCount(); + } + if(target == FilterTarget.TARGET_2){ + total = pair.getTarget2().getBirthmark(type).getElementCount(); + } + switch(getCriterion()){ + case GREATER_EQUALS: + flag = total >= threshold; + break; + case GREATER_THAN: + flag = total > threshold; + break; + case LESS_EQUALS: + flag = total <= threshold; + break; + case LESS_THAN: + flag = total < threshold; + break; + case EQUALS_AS: + flag = total == threshold; + break; + case NOT_EQUALS_AS: + flag = total != threshold; + break; + default: + flag = false; + break; + } + } + return flag; + } + + public int getThreshold(){ + return threshold; + } + + public void setThreshold(int threshold){ + if(threshold < 0){ + throw new IllegalArgumentException("threshold must be positive value: " + threshold); + } + this.threshold = threshold; + } + + public FilterTarget getTarget(){ + return target; + } + + public void setTarget(FilterTarget target){ + this.target = target; + } + + public String toString(){ + StringBuilder sb = new StringBuilder(); + switch(getTarget()){ + case TARGET_1: sb.append("target1"); break; + case TARGET_2: sb.append("target2"); break; + case BOTH_TARGETS: sb.append("(target1&target2)"); break; + case ONE_OF_TARGETS: sb.append("(target1|target2)"); + } + sb.append(".").append(birthmarkType); + sb.append(".size"); + switch(getCriterion()){ + case GREATER_EQUALS: sb.append(" >= "); break; + case GREATER_THAN: sb.append(" > "); break; + case LESS_EQUALS: sb.append(" <= "); break; + case LESS_THAN: sb.append(" < "); break; + case EQUALS_AS: sb.append(" == "); break; + case NOT_EQUALS_AS: sb.append(" != "); break; + } + sb.append(Integer.toString(getThreshold())); + + return new String(sb); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/filter/BirthmarkElementCountComparisonPairFilterService.java b/src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilterService.java similarity index 81% rename from src/main/java/jp/naist/se/stigmata/filter/BirthmarkElementCountComparisonPairFilterService.java rename to src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilterService.java index 04c08c3..6a652b2 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/BirthmarkElementCountComparisonPairFilterService.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilterService.java @@ -1,27 +1,27 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.ComparisonPairFilter; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkElementCountComparisonPairFilterService extends AbstractComparisonPairFilterService{ - - public ComparisonPairFilter getFilter(){ - return new BirthmarkElementCountComparisonPairFilter(this); - } - - public String getFilterClassName(){ - return BirthmarkElementCountComparisonPairFilter.class.getName(); - } - - public String getFilterName(){ - return "elementcount"; - } -} +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.ComparisonPairFilter; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkElementCountComparisonPairFilterService extends AbstractComparisonPairFilterService{ + + public ComparisonPairFilter getFilter(){ + return new BirthmarkElementCountComparisonPairFilter(this); + } + + public String getFilterClassName(){ + return BirthmarkElementCountComparisonPairFilter.class.getName(); + } + + public String getFilterName(){ + return "elementcount"; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/filter/ComparisonPairFilterManager.java b/src/main/java/jp/sourceforge/stigmata/filter/ComparisonPairFilterManager.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/filter/ComparisonPairFilterManager.java rename to src/main/java/jp/sourceforge/stigmata/filter/ComparisonPairFilterManager.java index 8be8464..32f0359 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/ComparisonPairFilterManager.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/ComparisonPairFilterManager.java @@ -1,158 +1,158 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.ComparisonPairFilterSet; -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; - -import org.apache.commons.beanutils.BeanUtils; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ComparisonPairFilterManager{ - private Map services = new HashMap(); - private Map filters = new HashMap(); - private ComparisonPairFilterManager parent; - - public ComparisonPairFilterManager(BirthmarkEnvironment env, ComparisonPairFilterManager parent){ - this.parent = parent; - for(Iterator i = env.lookupProviders(ComparisonPairFilterSpi.class); i.hasNext(); ){ - ComparisonPairFilterSpi service = i.next(); - if(getService(service.getFilterName()) != null){ - services.put(service.getFilterName(), service); - } - } - } - - public ComparisonPairFilterManager(BirthmarkEnvironment env){ - for(Iterator i = env.lookupProviders(ComparisonPairFilterSpi.class); i.hasNext(); ){ - ComparisonPairFilterSpi service = i.next(); - services.put(service.getFilterName(), service); - } - } - - public synchronized ComparisonPairFilterSet[] getFilterSets(){ - List list = new ArrayList(); - if(parent != null){ - for(ComparisonPairFilterSet fs: parent.getFilterSets()){ - if(filters.get(fs.getName()) == null){ - list.add(fs); - } - } - } - list.addAll(filters.values()); - return list.toArray(new ComparisonPairFilterSet[list.size()]); - } - - public synchronized ComparisonPairFilterSet[] getFilterSets(String[] names){ - List list = new ArrayList(); - for(int i = 0; i < names.length; i++){ - list.add(getFilterSet(names[i])); - } - return list.toArray(new ComparisonPairFilterSet[list.size()]); - } - - public void addFilterSet(ComparisonPairFilterSet filterset){ - filters.put(filterset.getName(), filterset); - } - - public void removeFilterSet(String filterSetName){ - if(filters.get(filterSetName) != null){ - filters.remove(filterSetName); - } - else{ - if(parent != null && parent.getFilterSet(filterSetName) != null){ - filters.remove(filterSetName); - } - } - } - - public ComparisonPairFilterSet getFilterSet(String filterSetName){ - ComparisonPairFilterSet filter = filters.get(filterSetName); - if(filter == null && parent != null){ - filter = parent.getFilterSet(filterSetName); - } - return filter; - } - - public ComparisonPairFilter buildFilter(String filterName, String criterion, Map values){ - Criterion c = Criterion.valueOf(criterion); - if(c != null){ - return buildFilter(filterName, c, values); - } - throw new IllegalArgumentException("criterion not found: " + criterion); - } - - public ComparisonPairFilter buildFilter(String filterName, Criterion criterion, Map values){ - ComparisonPairFilter filter = createFilter(filterName); - if(filter != null){ - filter.setCriterion(criterion); - for(Map.Entry entry: values.entrySet()){ - try{ - Object value = entry.getValue(); - if(entry.getKey().equals("target")){ - value = FilterTarget.valueOf(String.valueOf(value)); - } - BeanUtils.setProperty(filter, entry.getKey(), value); - }catch(IllegalAccessException e){ - e.printStackTrace(); - filter = null; - }catch(InvocationTargetException e){ - e.printStackTrace(); - filter = null; - } - } - } - return filter; - } - - public ComparisonPairFilter createFilter(String filterName){ - if(hasService(filterName)){ - return getService(filterName).getFilter(); - } - return null; - } - - public ComparisonPairFilterSpi removeService(String name){ - if(parent != null && parent.hasService(name)){ - parent.removeService(name); - } - return services.remove(name); - } - - public void addService(ComparisonPairFilterSpi service){ - if(parent == null || parent.getService(service.getFilterName()) == null){ - services.put(service.getFilterName(), service); - } - } - - public boolean hasService(String name){ - return (parent != null && parent.hasService(name)) || services.get(name) != null; - } - - public ComparisonPairFilterSpi getService(String name){ - ComparisonPairFilterSpi service = null; - if(parent != null){ - service = parent.getService(name); - } - if(service == null){ - service = services.get(name); - } - return service; - } - -} +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.ComparisonPairFilterSet; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; + +import org.apache.commons.beanutils.BeanUtils; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ComparisonPairFilterManager{ + private Map services = new HashMap(); + private Map filters = new HashMap(); + private ComparisonPairFilterManager parent; + + public ComparisonPairFilterManager(BirthmarkEnvironment env, ComparisonPairFilterManager parent){ + this.parent = parent; + for(Iterator i = env.lookupProviders(ComparisonPairFilterSpi.class); i.hasNext(); ){ + ComparisonPairFilterSpi service = i.next(); + if(getService(service.getFilterName()) != null){ + services.put(service.getFilterName(), service); + } + } + } + + public ComparisonPairFilterManager(BirthmarkEnvironment env){ + for(Iterator i = env.lookupProviders(ComparisonPairFilterSpi.class); i.hasNext(); ){ + ComparisonPairFilterSpi service = i.next(); + services.put(service.getFilterName(), service); + } + } + + public synchronized ComparisonPairFilterSet[] getFilterSets(){ + List list = new ArrayList(); + if(parent != null){ + for(ComparisonPairFilterSet fs: parent.getFilterSets()){ + if(filters.get(fs.getName()) == null){ + list.add(fs); + } + } + } + list.addAll(filters.values()); + return list.toArray(new ComparisonPairFilterSet[list.size()]); + } + + public synchronized ComparisonPairFilterSet[] getFilterSets(String[] names){ + List list = new ArrayList(); + for(int i = 0; i < names.length; i++){ + list.add(getFilterSet(names[i])); + } + return list.toArray(new ComparisonPairFilterSet[list.size()]); + } + + public void addFilterSet(ComparisonPairFilterSet filterset){ + filters.put(filterset.getName(), filterset); + } + + public void removeFilterSet(String filterSetName){ + if(filters.get(filterSetName) != null){ + filters.remove(filterSetName); + } + else{ + if(parent != null && parent.getFilterSet(filterSetName) != null){ + filters.remove(filterSetName); + } + } + } + + public ComparisonPairFilterSet getFilterSet(String filterSetName){ + ComparisonPairFilterSet filter = filters.get(filterSetName); + if(filter == null && parent != null){ + filter = parent.getFilterSet(filterSetName); + } + return filter; + } + + public ComparisonPairFilter buildFilter(String filterName, String criterion, Map values){ + Criterion c = Criterion.valueOf(criterion); + if(c != null){ + return buildFilter(filterName, c, values); + } + throw new IllegalArgumentException("criterion not found: " + criterion); + } + + public ComparisonPairFilter buildFilter(String filterName, Criterion criterion, Map values){ + ComparisonPairFilter filter = createFilter(filterName); + if(filter != null){ + filter.setCriterion(criterion); + for(Map.Entry entry: values.entrySet()){ + try{ + Object value = entry.getValue(); + if(entry.getKey().equals("target")){ + value = FilterTarget.valueOf(String.valueOf(value)); + } + BeanUtils.setProperty(filter, entry.getKey(), value); + }catch(IllegalAccessException e){ + e.printStackTrace(); + filter = null; + }catch(InvocationTargetException e){ + e.printStackTrace(); + filter = null; + } + } + } + return filter; + } + + public ComparisonPairFilter createFilter(String filterName){ + if(hasService(filterName)){ + return getService(filterName).getFilter(); + } + return null; + } + + public ComparisonPairFilterSpi removeService(String name){ + if(parent != null && parent.hasService(name)){ + parent.removeService(name); + } + return services.remove(name); + } + + public void addService(ComparisonPairFilterSpi service){ + if(parent == null || parent.getService(service.getFilterName()) == null){ + services.put(service.getFilterName(), service); + } + } + + public boolean hasService(String name){ + return (parent != null && parent.hasService(name)) || services.get(name) != null; + } + + public ComparisonPairFilterSpi getService(String name){ + ComparisonPairFilterSpi service = null; + if(parent != null){ + service = parent.getService(name); + } + if(service == null){ + service = services.get(name); + } + return service; + } + +} diff --git a/src/main/java/jp/naist/se/stigmata/filter/Criterion.java b/src/main/java/jp/sourceforge/stigmata/filter/Criterion.java similarity index 83% rename from src/main/java/jp/naist/se/stigmata/filter/Criterion.java rename to src/main/java/jp/sourceforge/stigmata/filter/Criterion.java index 6cbe53d..89b6972 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/Criterion.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/Criterion.java @@ -1,25 +1,25 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public enum Criterion{ - LESS_THAN, - LESS_EQUALS, - GREATER_THAN, - GREATER_EQUALS, - EQUALS_AS, - NOT_EQUALS_AS, - STARTS_WITH, - NOT_STARTS_WITH, - ENDS_WITH, - NOT_ENDS_WITH, - MATCH, - NOT_MATCH; -} +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public enum Criterion{ + LESS_THAN, + LESS_EQUALS, + GREATER_THAN, + GREATER_EQUALS, + EQUALS_AS, + NOT_EQUALS_AS, + STARTS_WITH, + NOT_STARTS_WITH, + ENDS_WITH, + NOT_ENDS_WITH, + MATCH, + NOT_MATCH; +} diff --git a/src/main/java/jp/naist/se/stigmata/filter/FilterTarget.java b/src/main/java/jp/sourceforge/stigmata/filter/FilterTarget.java similarity index 79% rename from src/main/java/jp/naist/se/stigmata/filter/FilterTarget.java rename to src/main/java/jp/sourceforge/stigmata/filter/FilterTarget.java index 5a3f477..18f9ffe 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/FilterTarget.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/FilterTarget.java @@ -1,15 +1,15 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - -/** - * This enum represents filter target. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public enum FilterTarget{ - TARGET_1, TARGET_2, BOTH_TARGETS, ONE_OF_TARGETS, +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + +/** + * This enum represents filter target. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public enum FilterTarget{ + TARGET_1, TARGET_2, BOTH_TARGETS, ONE_OF_TARGETS, } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/filter/FilteredComparisonResultSet.java b/src/main/java/jp/sourceforge/stigmata/filter/FilteredComparisonResultSet.java similarity index 89% rename from src/main/java/jp/naist/se/stigmata/filter/FilteredComparisonResultSet.java rename to src/main/java/jp/sourceforge/stigmata/filter/FilteredComparisonResultSet.java index 22eb19a..e3404fc 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/FilteredComparisonResultSet.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/FilteredComparisonResultSet.java @@ -1,157 +1,157 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.ComparisonPairFilterSet; -import jp.naist.se.stigmata.ComparisonResultSet; - -/** - * Filtering {@link ComparisonResultSet ComparisonResultSet}. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class FilteredComparisonResultSet implements ComparisonResultSet{ - private ComparisonResultSet resultset; - private List filters = new ArrayList(); - - /** - * constructor. - * - * @param resultset filtering target - */ - public FilteredComparisonResultSet(ComparisonResultSet resultset){ - this.resultset = resultset; - } - - /** - * constructor. - * @param resultset filtering target - * @param filters filtering rule - */ - public FilteredComparisonResultSet(ComparisonResultSet resultset, ComparisonPairFilterSet[] filters){ - this.resultset = resultset; - for(int i = 0; i < filters.length; i++){ - addFilterSet(filters[i]); - } - } - - public void addFilterSet(ComparisonPairFilterSet filter){ - filters.add(filter); - } - - public void removeFilterSet(ComparisonPairFilterSet filter){ - filters.remove(filter); - } - - public ComparisonPair getPairAt(int index){ - int currentIndex = 0; - for(Iterator i = iterator(); i.hasNext(); ){ - ComparisonPair pair = i.next(); - if(currentIndex == index){ - return pair; - } - currentIndex++; - } - return null; - } - - public ComparisonPair[] getPairs(){ - List list = new ArrayList(); - for(Iterator i = iterator(); i.hasNext(); ){ - list.add(i.next()); - } - return list.toArray(new ComparisonPair[list.size()]); - } - - public int getPairCount(){ - return resultset.getPairCount(); - } - - public BirthmarkContext getContext(){ - return resultset.getContext(); - } - - public BirthmarkEnvironment getEnvironment(){ - return resultset.getEnvironment(); - } - - public Iterator iterator(){ - return new FilteredIterator(resultset.iterator()); - } - - public synchronized BirthmarkSet[] getPairSources(){ - List list = new ArrayList(); - for(Iterator i = pairSources(); i.hasNext(); ){ - list.add(i.next()); - } - return list.toArray(new BirthmarkSet[list.size()]); - } - - public Iterator pairSources(){ - return resultset.pairSources(); - } - - private class FilteredIterator implements Iterator{ - private Iterator iterator; - private ComparisonPair next; - - public FilteredIterator(Iterator iterator){ - this.iterator = iterator; - - next = findNext(); - } - - public boolean hasNext(){ - return next != null; - } - - public ComparisonPair next(){ - ComparisonPair returnValue = next; - next = findNext(); - return returnValue; - } - - public void remove(){ - throw new InternalError("not implemented"); - } - - private ComparisonPair findNext(){ - boolean nowFinding = true; - while(nowFinding && iterator.hasNext()){ - ComparisonPair nextPair = iterator.next(); - // return the pair which the all filters is passed - if(isAllFilterPassed(nextPair)){ - nowFinding = false; // found next value! - next = nextPair; - } - } - if(nowFinding && !iterator.hasNext()){ - next = null; - } - return next; - } - - private boolean isAllFilterPassed(ComparisonPair pair){ - boolean flag = true; - for(Iterator i = filters.iterator(); i.hasNext(); ){ - ComparisonPairFilterSet filter = i.next(); - if(!filter.isFiltered(pair)){ - flag = false; - break; - } - } - return flag; - } - }; -} +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.ComparisonPairFilterSet; +import jp.sourceforge.stigmata.ComparisonResultSet; + +/** + * Filtering {@link ComparisonResultSet ComparisonResultSet}. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class FilteredComparisonResultSet implements ComparisonResultSet{ + private ComparisonResultSet resultset; + private List filters = new ArrayList(); + + /** + * constructor. + * + * @param resultset filtering target + */ + public FilteredComparisonResultSet(ComparisonResultSet resultset){ + this.resultset = resultset; + } + + /** + * constructor. + * @param resultset filtering target + * @param filters filtering rule + */ + public FilteredComparisonResultSet(ComparisonResultSet resultset, ComparisonPairFilterSet[] filters){ + this.resultset = resultset; + for(int i = 0; i < filters.length; i++){ + addFilterSet(filters[i]); + } + } + + public void addFilterSet(ComparisonPairFilterSet filter){ + filters.add(filter); + } + + public void removeFilterSet(ComparisonPairFilterSet filter){ + filters.remove(filter); + } + + public ComparisonPair getPairAt(int index){ + int currentIndex = 0; + for(Iterator i = iterator(); i.hasNext(); ){ + ComparisonPair pair = i.next(); + if(currentIndex == index){ + return pair; + } + currentIndex++; + } + return null; + } + + public ComparisonPair[] getPairs(){ + List list = new ArrayList(); + for(Iterator i = iterator(); i.hasNext(); ){ + list.add(i.next()); + } + return list.toArray(new ComparisonPair[list.size()]); + } + + public int getPairCount(){ + return resultset.getPairCount(); + } + + public BirthmarkContext getContext(){ + return resultset.getContext(); + } + + public BirthmarkEnvironment getEnvironment(){ + return resultset.getEnvironment(); + } + + public Iterator iterator(){ + return new FilteredIterator(resultset.iterator()); + } + + public synchronized BirthmarkSet[] getPairSources(){ + List list = new ArrayList(); + for(Iterator i = pairSources(); i.hasNext(); ){ + list.add(i.next()); + } + return list.toArray(new BirthmarkSet[list.size()]); + } + + public Iterator pairSources(){ + return resultset.pairSources(); + } + + private class FilteredIterator implements Iterator{ + private Iterator iterator; + private ComparisonPair next; + + public FilteredIterator(Iterator iterator){ + this.iterator = iterator; + + next = findNext(); + } + + public boolean hasNext(){ + return next != null; + } + + public ComparisonPair next(){ + ComparisonPair returnValue = next; + next = findNext(); + return returnValue; + } + + public void remove(){ + throw new InternalError("not implemented"); + } + + private ComparisonPair findNext(){ + boolean nowFinding = true; + while(nowFinding && iterator.hasNext()){ + ComparisonPair nextPair = iterator.next(); + // return the pair which the all filters is passed + if(isAllFilterPassed(nextPair)){ + nowFinding = false; // found next value! + next = nextPair; + } + } + if(nowFinding && !iterator.hasNext()){ + next = null; + } + return next; + } + + private boolean isAllFilterPassed(ComparisonPair pair){ + boolean flag = true; + for(Iterator i = filters.iterator(); i.hasNext(); ){ + ComparisonPairFilterSet filter = i.next(); + if(!filter.isFiltered(pair)){ + flag = false; + break; + } + } + return flag; + } + }; +} diff --git a/src/main/java/jp/naist/se/stigmata/filter/SimilarityComparisonPairFilter.java b/src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilter.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/filter/SimilarityComparisonPairFilter.java rename to src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilter.java index be7c134..1bc5081 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/SimilarityComparisonPairFilter.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilter.java @@ -1,100 +1,100 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.List; - -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class SimilarityComparisonPairFilter extends AbstractComparisonPairFilter{ - private static final double EQUALS_THRESHOLD = 5E-5; - - private static List CRITERIA = new ArrayList(); - static{ - CRITERIA.add(Criterion.GREATER_EQUALS); - CRITERIA.add(Criterion.GREATER_THAN); - CRITERIA.add(Criterion.LESS_EQUALS); - CRITERIA.add(Criterion.LESS_THAN); - CRITERIA.add(Criterion.EQUALS_AS); - CRITERIA.add(Criterion.NOT_EQUALS_AS); - }; - - private double threshold; - - public SimilarityComparisonPairFilter(ComparisonPairFilterSpi service){ - super(service); - setThreshold(0.8d); - } - - public boolean isFiltered(ComparisonPair pair){ - double similarity = pair.calculateSimilarity(); - boolean flag; - switch(getCriterion()){ - case GREATER_EQUALS: - flag = similarity >= getThreshold(); - break; - case GREATER_THAN: - flag = similarity > getThreshold(); - break; - case LESS_EQUALS: - flag = similarity <= getThreshold(); - break; - case LESS_THAN: - flag = similarity < getThreshold(); - break; - case EQUALS_AS: - flag = (similarity - getThreshold()) <= EQUALS_THRESHOLD; - break; - case NOT_EQUALS_AS: - flag = (similarity - getThreshold()) > EQUALS_THRESHOLD; - break; - default: - flag = false; - break; - } - return flag; - } - - public static Criterion[] getValidCriteria(){ - return CRITERIA.toArray(new Criterion[CRITERIA.size()]); - } - - public Criterion[] getAcceptableCriteria(){ - return getValidCriteria(); - } - - public double getThreshold(){ - return threshold; - } - - public void setThreshold(double threshold){ - if(threshold < 0d || threshold >= 1.0d){ - throw new IllegalArgumentException("threshold must be 0.0-1.0"); - } - this.threshold = threshold; - } - - public String toString(){ - StringBuffer sb = new StringBuffer(); - sb.append("similarity"); - switch(getCriterion()){ - case GREATER_EQUALS: sb.append(" >= "); break; - case GREATER_THAN: sb.append(" > "); break; - case LESS_EQUALS: sb.append(" <= "); break; - case LESS_THAN: sb.append(" < "); break; - case EQUALS_AS: sb.append(" == "); break; - case NOT_EQUALS_AS: sb.append(" != "); break; - } - sb.append(getThreshold()); - return new String(sb); - } -} +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.List; + +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class SimilarityComparisonPairFilter extends AbstractComparisonPairFilter{ + private static final double EQUALS_THRESHOLD = 5E-5; + + private static List CRITERIA = new ArrayList(); + static{ + CRITERIA.add(Criterion.GREATER_EQUALS); + CRITERIA.add(Criterion.GREATER_THAN); + CRITERIA.add(Criterion.LESS_EQUALS); + CRITERIA.add(Criterion.LESS_THAN); + CRITERIA.add(Criterion.EQUALS_AS); + CRITERIA.add(Criterion.NOT_EQUALS_AS); + }; + + private double threshold; + + public SimilarityComparisonPairFilter(ComparisonPairFilterSpi service){ + super(service); + setThreshold(0.8d); + } + + public boolean isFiltered(ComparisonPair pair){ + double similarity = pair.calculateSimilarity(); + boolean flag; + switch(getCriterion()){ + case GREATER_EQUALS: + flag = similarity >= getThreshold(); + break; + case GREATER_THAN: + flag = similarity > getThreshold(); + break; + case LESS_EQUALS: + flag = similarity <= getThreshold(); + break; + case LESS_THAN: + flag = similarity < getThreshold(); + break; + case EQUALS_AS: + flag = (similarity - getThreshold()) <= EQUALS_THRESHOLD; + break; + case NOT_EQUALS_AS: + flag = (similarity - getThreshold()) > EQUALS_THRESHOLD; + break; + default: + flag = false; + break; + } + return flag; + } + + public static Criterion[] getValidCriteria(){ + return CRITERIA.toArray(new Criterion[CRITERIA.size()]); + } + + public Criterion[] getAcceptableCriteria(){ + return getValidCriteria(); + } + + public double getThreshold(){ + return threshold; + } + + public void setThreshold(double threshold){ + if(threshold < 0d || threshold >= 1.0d){ + throw new IllegalArgumentException("threshold must be 0.0-1.0"); + } + this.threshold = threshold; + } + + public String toString(){ + StringBuffer sb = new StringBuffer(); + sb.append("similarity"); + switch(getCriterion()){ + case GREATER_EQUALS: sb.append(" >= "); break; + case GREATER_THAN: sb.append(" > "); break; + case LESS_EQUALS: sb.append(" <= "); break; + case LESS_THAN: sb.append(" < "); break; + case EQUALS_AS: sb.append(" == "); break; + case NOT_EQUALS_AS: sb.append(" != "); break; + } + sb.append(getThreshold()); + return new String(sb); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/filter/SimilarityComparisonPairFilterService.java b/src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilterService.java similarity index 80% rename from src/main/java/jp/naist/se/stigmata/filter/SimilarityComparisonPairFilterService.java rename to src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilterService.java index df91852..2f88808 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/SimilarityComparisonPairFilterService.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilterService.java @@ -1,26 +1,26 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.ComparisonPairFilter; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class SimilarityComparisonPairFilterService extends AbstractComparisonPairFilterService{ - public ComparisonPairFilter getFilter(){ - return new SimilarityComparisonPairFilter(this); - } - - public String getFilterClassName(){ - return SimilarityComparisonPairFilter.class.getName(); - } - - public String getFilterName(){ - return "similarity"; - } -} +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.ComparisonPairFilter; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class SimilarityComparisonPairFilterService extends AbstractComparisonPairFilterService{ + public ComparisonPairFilter getFilter(){ + return new SimilarityComparisonPairFilter(this); + } + + public String getFilterClassName(){ + return SimilarityComparisonPairFilter.class.getName(); + } + + public String getFilterName(){ + return "similarity"; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/filter/TargetNameComparisonPairFilter.java b/src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilter.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/filter/TargetNameComparisonPairFilter.java rename to src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilter.java index ce45936..364ba64 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/TargetNameComparisonPairFilter.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilter.java @@ -1,169 +1,169 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.List; - -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class TargetNameComparisonPairFilter extends AbstractComparisonPairFilter{ - private static final List CRITERIA = new ArrayList(); - - static{ - CRITERIA.add(Criterion.STARTS_WITH); - CRITERIA.add(Criterion.NOT_STARTS_WITH); - CRITERIA.add(Criterion.ENDS_WITH); - CRITERIA.add(Criterion.NOT_ENDS_WITH); - CRITERIA.add(Criterion.EQUALS_AS); - CRITERIA.add(Criterion.NOT_EQUALS_AS); - CRITERIA.add(Criterion.MATCH); - CRITERIA.add(Criterion.NOT_MATCH); - }; - private FilterTarget target = FilterTarget.BOTH_TARGETS; - private String value; - - public TargetNameComparisonPairFilter(ComparisonPairFilterSpi service){ - super(service); - } - - public Criterion[] getAcceptableCriteria(){ - return getValidCriteria(); - } - - public static Criterion[] getValidCriteria(){ - return CRITERIA.toArray(new Criterion[CRITERIA.size()]); - } - - public boolean isFiltered(ComparisonPair pair){ - String v = value; - if(v == null) v = ""; - boolean flag; - if(getTarget() == FilterTarget.TARGET_1){ - flag = checkMatch(pair.getTarget1().getName(), v); - } - else if(getTarget() == FilterTarget.TARGET_2){ - flag = checkMatch(pair.getTarget2().getName(), v); - } - else{ - flag = checkMatch(pair.getTarget1().getName(), pair.getTarget2().getName(), v); - } - return flag; - } - - public String getValue(){ - return value; - } - - public void setValue(String value){ - this.value = value; - } - - public FilterTarget getTarget(){ - return target; - } - - public void setTarget(FilterTarget target){ - this.target = target; - } - - private boolean checkMatch(String name1, String name2, String value){ - boolean flag1; - boolean flag2; - switch(getCriterion()){ - case STARTS_WITH: - flag1 = name1.startsWith(value); - flag2 = name2.startsWith(value); - break; - case ENDS_WITH: - flag1 = name1.endsWith(value); - flag2 = name2.endsWith(value); - break; - case EQUALS_AS: - flag1 = name1.equals(value); - flag2 = name2.equals(value); - break; - case NOT_EQUALS_AS: - flag1 = !name1.equals(value); - flag2 = !name2.equals(value); - break; - case MATCH: - flag1 = name1.equals(name2); - flag2 = flag1; - break; - case NOT_MATCH: - flag1 = !name1.equals(name2); - flag2 = flag1; - break; - default: - flag1 = false; - flag2 = false; - break; - } - - boolean flag; - if(getTarget() == FilterTarget.BOTH_TARGETS){ - flag = flag1 && flag2; - } - else{ - flag = flag1 || flag2; - } - return flag; - } - - private boolean checkMatch(String name, String value){ - boolean flag; - switch(getCriterion()){ - case STARTS_WITH: - flag = name.startsWith(value); - break; - case ENDS_WITH: - flag = name.endsWith(value); - break; - case EQUALS_AS: - flag = name.equals(value); - break; - case NOT_EQUALS_AS: - flag = !name.equals(value); - break; - default: - flag = false; - break; - } - return flag; - } - - public String toString(){ - if(getCriterion() == Criterion.MATCH || getCriterion() == Criterion.NOT_MATCH){ - String value = " match "; - if(getCriterion() == Criterion.NOT_MATCH) value = " not match "; - return "target1.name" + value + "target2.name"; - } - StringBuilder sb = new StringBuilder(); - switch(getTarget()){ - case TARGET_1: sb.append("target1.name"); break; - case TARGET_2: sb.append("target2.name"); break; - case BOTH_TARGETS: sb.append("(target1&target2).name"); break; - case ONE_OF_TARGETS: sb.append("(target1|target2).name"); break; - } - switch(getCriterion()){ - case STARTS_WITH: sb.append(" starts with "); break; - case NOT_STARTS_WITH: sb.append(" not starts with "); break; - case ENDS_WITH: sb.append(" ends with "); break; - case NOT_ENDS_WITH: sb.append(" not ends with "); break; - case EQUALS_AS: sb.append(" equals as "); break; - case NOT_EQUALS_AS: sb.append(" not equals as "); break; - } - sb.append(getValue()); - - return new String(sb); - } -} +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.List; + +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class TargetNameComparisonPairFilter extends AbstractComparisonPairFilter{ + private static final List CRITERIA = new ArrayList(); + + static{ + CRITERIA.add(Criterion.STARTS_WITH); + CRITERIA.add(Criterion.NOT_STARTS_WITH); + CRITERIA.add(Criterion.ENDS_WITH); + CRITERIA.add(Criterion.NOT_ENDS_WITH); + CRITERIA.add(Criterion.EQUALS_AS); + CRITERIA.add(Criterion.NOT_EQUALS_AS); + CRITERIA.add(Criterion.MATCH); + CRITERIA.add(Criterion.NOT_MATCH); + }; + private FilterTarget target = FilterTarget.BOTH_TARGETS; + private String value; + + public TargetNameComparisonPairFilter(ComparisonPairFilterSpi service){ + super(service); + } + + public Criterion[] getAcceptableCriteria(){ + return getValidCriteria(); + } + + public static Criterion[] getValidCriteria(){ + return CRITERIA.toArray(new Criterion[CRITERIA.size()]); + } + + public boolean isFiltered(ComparisonPair pair){ + String v = value; + if(v == null) v = ""; + boolean flag; + if(getTarget() == FilterTarget.TARGET_1){ + flag = checkMatch(pair.getTarget1().getName(), v); + } + else if(getTarget() == FilterTarget.TARGET_2){ + flag = checkMatch(pair.getTarget2().getName(), v); + } + else{ + flag = checkMatch(pair.getTarget1().getName(), pair.getTarget2().getName(), v); + } + return flag; + } + + public String getValue(){ + return value; + } + + public void setValue(String value){ + this.value = value; + } + + public FilterTarget getTarget(){ + return target; + } + + public void setTarget(FilterTarget target){ + this.target = target; + } + + private boolean checkMatch(String name1, String name2, String value){ + boolean flag1; + boolean flag2; + switch(getCriterion()){ + case STARTS_WITH: + flag1 = name1.startsWith(value); + flag2 = name2.startsWith(value); + break; + case ENDS_WITH: + flag1 = name1.endsWith(value); + flag2 = name2.endsWith(value); + break; + case EQUALS_AS: + flag1 = name1.equals(value); + flag2 = name2.equals(value); + break; + case NOT_EQUALS_AS: + flag1 = !name1.equals(value); + flag2 = !name2.equals(value); + break; + case MATCH: + flag1 = name1.equals(name2); + flag2 = flag1; + break; + case NOT_MATCH: + flag1 = !name1.equals(name2); + flag2 = flag1; + break; + default: + flag1 = false; + flag2 = false; + break; + } + + boolean flag; + if(getTarget() == FilterTarget.BOTH_TARGETS){ + flag = flag1 && flag2; + } + else{ + flag = flag1 || flag2; + } + return flag; + } + + private boolean checkMatch(String name, String value){ + boolean flag; + switch(getCriterion()){ + case STARTS_WITH: + flag = name.startsWith(value); + break; + case ENDS_WITH: + flag = name.endsWith(value); + break; + case EQUALS_AS: + flag = name.equals(value); + break; + case NOT_EQUALS_AS: + flag = !name.equals(value); + break; + default: + flag = false; + break; + } + return flag; + } + + public String toString(){ + if(getCriterion() == Criterion.MATCH || getCriterion() == Criterion.NOT_MATCH){ + String value = " match "; + if(getCriterion() == Criterion.NOT_MATCH) value = " not match "; + return "target1.name" + value + "target2.name"; + } + StringBuilder sb = new StringBuilder(); + switch(getTarget()){ + case TARGET_1: sb.append("target1.name"); break; + case TARGET_2: sb.append("target2.name"); break; + case BOTH_TARGETS: sb.append("(target1&target2).name"); break; + case ONE_OF_TARGETS: sb.append("(target1|target2).name"); break; + } + switch(getCriterion()){ + case STARTS_WITH: sb.append(" starts with "); break; + case NOT_STARTS_WITH: sb.append(" not starts with "); break; + case ENDS_WITH: sb.append(" ends with "); break; + case NOT_ENDS_WITH: sb.append(" not ends with "); break; + case EQUALS_AS: sb.append(" equals as "); break; + case NOT_EQUALS_AS: sb.append(" not equals as "); break; + } + sb.append(getValue()); + + return new String(sb); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/filter/TargetNameComparisonPairFilterService.java b/src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilterService.java similarity index 80% rename from src/main/java/jp/naist/se/stigmata/filter/TargetNameComparisonPairFilterService.java rename to src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilterService.java index 841a5f4..0fa665a 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/TargetNameComparisonPairFilterService.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilterService.java @@ -1,27 +1,27 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.ComparisonPairFilter; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class TargetNameComparisonPairFilterService extends AbstractComparisonPairFilterService{ - - public ComparisonPairFilter getFilter(){ - return new TargetNameComparisonPairFilter(this); - } - - public String getFilterClassName(){ - return TargetNameComparisonPairFilter.class.getName(); - } - - public String getFilterName(){ - return "name"; - } -} +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.ComparisonPairFilter; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class TargetNameComparisonPairFilterService extends AbstractComparisonPairFilterService{ + + public ComparisonPairFilter getFilter(){ + return new TargetNameComparisonPairFilter(this); + } + + public String getFilterClassName(){ + return TargetNameComparisonPairFilter.class.getName(); + } + + public String getFilterName(){ + return "name"; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/filter/TotalElementCountComparisonPairFilter.java b/src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilter.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/filter/TotalElementCountComparisonPairFilter.java rename to src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilter.java index b40f7da..2fca79e 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/TotalElementCountComparisonPairFilter.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilter.java @@ -1,166 +1,166 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.List; - -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class TotalElementCountComparisonPairFilter extends AbstractComparisonPairFilter{ - private static final List CRITERIA = new ArrayList(); - static{ - CRITERIA.add(Criterion.GREATER_EQUALS); - CRITERIA.add(Criterion.GREATER_THAN); - CRITERIA.add(Criterion.LESS_EQUALS); - CRITERIA.add(Criterion.LESS_THAN); - CRITERIA.add(Criterion.EQUALS_AS); - CRITERIA.add(Criterion.NOT_EQUALS_AS); - CRITERIA.add(Criterion.MATCH); - CRITERIA.add(Criterion.NOT_MATCH); - }; - - private int threshold = 0; - private FilterTarget target; - - public TotalElementCountComparisonPairFilter(ComparisonPairFilterSpi service){ - super(service); - } - - public Criterion[] getAcceptableCriteria(){ - return getValidCriteria(); - } - - public static Criterion[] getValidCriteria(){ - return CRITERIA.toArray(new Criterion[CRITERIA.size()]); - } - - public boolean isFiltered(ComparisonPair pair){ - boolean flag; - if(getTarget() == FilterTarget.TARGET_1){ - flag = checkFiltered(pair.getTarget1().getSumOfElementCount()); - } - else if(getTarget() == FilterTarget.TARGET_2){ - flag = checkFiltered(pair.getTarget2().getSumOfElementCount()); - } - else{ - flag = checkFiltered(pair.getTarget1().getSumOfElementCount(), pair.getTarget2().getSumOfElementCount()); - } - return flag; - } - - private boolean checkFiltered(int e1, int e2){ - boolean flag1; - boolean flag2; - int t = getThreshold(); - switch(getCriterion()){ - case GREATER_EQUALS: - flag1 = e1 >= t; flag2 = e2 >= t; - break; - case GREATER_THAN: - flag1 = e1 > t; flag2 = e2 > t; - break; - case LESS_EQUALS: - flag1 = e1 <= t; flag2 = e2 <= t; - break; - case LESS_THAN: - flag1 = e1 < t; flag2 = e2 < t; - break; - case EQUALS_AS: - flag1 = e1 == t; flag2 = e2 == t; - break; - case NOT_EQUALS_AS: - flag1 = e1 != t; flag2 = e2 != t; - break; - case MATCH: - flag1 = e1 == e2; flag2 = flag1; - break; - case NOT_MATCH: - flag1 = e1 != e2; flag2 = flag1; - break; - default: - flag1 = false; - flag2 = false; - break; - } - return (getTarget() == FilterTarget.BOTH_TARGETS && flag1 && flag2) || - (getTarget() == FilterTarget.ONE_OF_TARGETS && (flag1 || flag2)); - } - - private boolean checkFiltered(int total){ - boolean flag = false; - switch(getCriterion()){ - case GREATER_EQUALS: - flag = total >= getThreshold(); - break; - case GREATER_THAN: - flag = total > getThreshold(); - break; - case LESS_EQUALS: - flag = total <= getThreshold(); - break; - case LESS_THAN: - flag = total < getThreshold(); - break; - case EQUALS_AS: - flag = total == getThreshold(); - break; - case NOT_EQUALS_AS: - flag = total != getThreshold(); - break; - default: - flag = false; - break; - } - return flag; - } - - public int getThreshold(){ - return threshold; - } - - public void setThreshold(int threshold){ - if(threshold < 0){ - throw new IllegalArgumentException("threshold must be positive value: " + threshold); - } - this.threshold = threshold; - } - - public FilterTarget getTarget(){ - return target; - } - - public void setTarget(FilterTarget target){ - this.target = target; - } - - public String toString(){ - StringBuilder sb = new StringBuilder(); - switch(getTarget()){ - case TARGET_1: sb.append("target1"); break; - case TARGET_2: sb.append("target2"); break; - case BOTH_TARGETS: sb.append("(target1&target2)"); break; - case ONE_OF_TARGETS: sb.append("(target1|target2)"); break; - } - sb.append(".element"); - switch(getCriterion()){ - case GREATER_EQUALS: sb.append(" >= "); break; - case GREATER_THAN: sb.append(" > "); break; - case LESS_EQUALS: sb.append(" <= "); break; - case LESS_THAN: sb.append(" < "); break; - case EQUALS_AS: sb.append(" == "); break; - case NOT_EQUALS_AS: sb.append(" != "); break; - } - sb.append(Integer.toString(getThreshold())); - - return new String(sb); - } -} +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.List; + +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class TotalElementCountComparisonPairFilter extends AbstractComparisonPairFilter{ + private static final List CRITERIA = new ArrayList(); + static{ + CRITERIA.add(Criterion.GREATER_EQUALS); + CRITERIA.add(Criterion.GREATER_THAN); + CRITERIA.add(Criterion.LESS_EQUALS); + CRITERIA.add(Criterion.LESS_THAN); + CRITERIA.add(Criterion.EQUALS_AS); + CRITERIA.add(Criterion.NOT_EQUALS_AS); + CRITERIA.add(Criterion.MATCH); + CRITERIA.add(Criterion.NOT_MATCH); + }; + + private int threshold = 0; + private FilterTarget target; + + public TotalElementCountComparisonPairFilter(ComparisonPairFilterSpi service){ + super(service); + } + + public Criterion[] getAcceptableCriteria(){ + return getValidCriteria(); + } + + public static Criterion[] getValidCriteria(){ + return CRITERIA.toArray(new Criterion[CRITERIA.size()]); + } + + public boolean isFiltered(ComparisonPair pair){ + boolean flag; + if(getTarget() == FilterTarget.TARGET_1){ + flag = checkFiltered(pair.getTarget1().getSumOfElementCount()); + } + else if(getTarget() == FilterTarget.TARGET_2){ + flag = checkFiltered(pair.getTarget2().getSumOfElementCount()); + } + else{ + flag = checkFiltered(pair.getTarget1().getSumOfElementCount(), pair.getTarget2().getSumOfElementCount()); + } + return flag; + } + + private boolean checkFiltered(int e1, int e2){ + boolean flag1; + boolean flag2; + int t = getThreshold(); + switch(getCriterion()){ + case GREATER_EQUALS: + flag1 = e1 >= t; flag2 = e2 >= t; + break; + case GREATER_THAN: + flag1 = e1 > t; flag2 = e2 > t; + break; + case LESS_EQUALS: + flag1 = e1 <= t; flag2 = e2 <= t; + break; + case LESS_THAN: + flag1 = e1 < t; flag2 = e2 < t; + break; + case EQUALS_AS: + flag1 = e1 == t; flag2 = e2 == t; + break; + case NOT_EQUALS_AS: + flag1 = e1 != t; flag2 = e2 != t; + break; + case MATCH: + flag1 = e1 == e2; flag2 = flag1; + break; + case NOT_MATCH: + flag1 = e1 != e2; flag2 = flag1; + break; + default: + flag1 = false; + flag2 = false; + break; + } + return (getTarget() == FilterTarget.BOTH_TARGETS && flag1 && flag2) || + (getTarget() == FilterTarget.ONE_OF_TARGETS && (flag1 || flag2)); + } + + private boolean checkFiltered(int total){ + boolean flag = false; + switch(getCriterion()){ + case GREATER_EQUALS: + flag = total >= getThreshold(); + break; + case GREATER_THAN: + flag = total > getThreshold(); + break; + case LESS_EQUALS: + flag = total <= getThreshold(); + break; + case LESS_THAN: + flag = total < getThreshold(); + break; + case EQUALS_AS: + flag = total == getThreshold(); + break; + case NOT_EQUALS_AS: + flag = total != getThreshold(); + break; + default: + flag = false; + break; + } + return flag; + } + + public int getThreshold(){ + return threshold; + } + + public void setThreshold(int threshold){ + if(threshold < 0){ + throw new IllegalArgumentException("threshold must be positive value: " + threshold); + } + this.threshold = threshold; + } + + public FilterTarget getTarget(){ + return target; + } + + public void setTarget(FilterTarget target){ + this.target = target; + } + + public String toString(){ + StringBuilder sb = new StringBuilder(); + switch(getTarget()){ + case TARGET_1: sb.append("target1"); break; + case TARGET_2: sb.append("target2"); break; + case BOTH_TARGETS: sb.append("(target1&target2)"); break; + case ONE_OF_TARGETS: sb.append("(target1|target2)"); break; + } + sb.append(".element"); + switch(getCriterion()){ + case GREATER_EQUALS: sb.append(" >= "); break; + case GREATER_THAN: sb.append(" > "); break; + case LESS_EQUALS: sb.append(" <= "); break; + case LESS_THAN: sb.append(" < "); break; + case EQUALS_AS: sb.append(" == "); break; + case NOT_EQUALS_AS: sb.append(" != "); break; + } + sb.append(Integer.toString(getThreshold())); + + return new String(sb); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/filter/TotalElementCountComparisonPairFilterService.java b/src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilterService.java similarity index 81% rename from src/main/java/jp/naist/se/stigmata/filter/TotalElementCountComparisonPairFilterService.java rename to src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilterService.java index b7c130b..6f14669 100644 --- a/src/main/java/jp/naist/se/stigmata/filter/TotalElementCountComparisonPairFilterService.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilterService.java @@ -1,27 +1,27 @@ -package jp.naist.se.stigmata.filter; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.ComparisonPairFilter; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class TotalElementCountComparisonPairFilterService extends AbstractComparisonPairFilterService{ - - public ComparisonPairFilter getFilter(){ - return new TotalElementCountComparisonPairFilter(this); - } - - public String getFilterClassName(){ - return TotalElementCountComparisonPairFilter.class.getName(); - } - - public String getFilterName(){ - return "totalelementcount"; - } -} +package jp.sourceforge.stigmata.filter; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.ComparisonPairFilter; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class TotalElementCountComparisonPairFilterService extends AbstractComparisonPairFilterService{ + + public ComparisonPairFilter getFilter(){ + return new TotalElementCountComparisonPairFilter(this); + } + + public String getFilterClassName(){ + return TotalElementCountComparisonPairFilter.class.getName(); + } + + public String getFilterName(){ + return "totalelementcount"; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/hook/AbstractStigmataHookService.java b/src/main/java/jp/sourceforge/stigmata/hook/AbstractStigmataHookService.java similarity index 89% rename from src/main/java/jp/naist/se/stigmata/hook/AbstractStigmataHookService.java rename to src/main/java/jp/sourceforge/stigmata/hook/AbstractStigmataHookService.java index 68e0f25..2a2a916 100755 --- a/src/main/java/jp/naist/se/stigmata/hook/AbstractStigmataHookService.java +++ b/src/main/java/jp/sourceforge/stigmata/hook/AbstractStigmataHookService.java @@ -1,10 +1,10 @@ -package jp.naist.se.stigmata.hook; +package jp.sourceforge.stigmata.hook; /* * $Id$ */ -import jp.naist.se.stigmata.spi.StigmataHookSpi; +import jp.sourceforge.stigmata.spi.StigmataHookSpi; /** * diff --git a/src/main/java/jp/naist/se/stigmata/hook/MultipleStigmataHook.java b/src/main/java/jp/sourceforge/stigmata/hook/MultipleStigmataHook.java similarity index 88% rename from src/main/java/jp/naist/se/stigmata/hook/MultipleStigmataHook.java rename to src/main/java/jp/sourceforge/stigmata/hook/MultipleStigmataHook.java index 25d7530..4ed7216 100755 --- a/src/main/java/jp/naist/se/stigmata/hook/MultipleStigmataHook.java +++ b/src/main/java/jp/sourceforge/stigmata/hook/MultipleStigmataHook.java @@ -1,69 +1,69 @@ -package jp.naist.se.stigmata.hook; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.List; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkEnvironment; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class MultipleStigmataHook implements StigmataHook, StigmataRuntimeHook{ - private List hooks = new ArrayList(); - private List runtimeHooks = new ArrayList(); - - public void onHook(Phase phase, BirthmarkContext context){ - for(StigmataRuntimeHook hook: runtimeHooks){ - if(hook != null){ - hook.onHook(phase, context); - } - } - } - - public void onHook(Phase phase, BirthmarkEnvironment env){ - for(StigmataHook hook: hooks){ - if(hook != null){ - hook.onHook(phase, env); - } - } - } - - public void addHook(StigmataHook hook){ - hooks.add(hook); - } - - public void removeHook(StigmataHook hook){ - hooks.remove(hook); - } - - public int getHookCount(){ - return hooks.size(); - } - - public StigmataHook getHook(int index){ - return hooks.get(index); - } - - public void addRuntimeHook(StigmataRuntimeHook hook){ - runtimeHooks.add(hook); - } - - public void removeRuntimeHook(StigmataRuntimeHook hook){ - runtimeHooks.remove(hook); - } - - public int getRuntimeHookCount(){ - return runtimeHooks.size(); - } - - public StigmataRuntimeHook getRuntimeHook(int index){ - return runtimeHooks.get(index); - } +package jp.sourceforge.stigmata.hook; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.List; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEnvironment; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class MultipleStigmataHook implements StigmataHook, StigmataRuntimeHook{ + private List hooks = new ArrayList(); + private List runtimeHooks = new ArrayList(); + + public void onHook(Phase phase, BirthmarkContext context){ + for(StigmataRuntimeHook hook: runtimeHooks){ + if(hook != null){ + hook.onHook(phase, context); + } + } + } + + public void onHook(Phase phase, BirthmarkEnvironment env){ + for(StigmataHook hook: hooks){ + if(hook != null){ + hook.onHook(phase, env); + } + } + } + + public void addHook(StigmataHook hook){ + hooks.add(hook); + } + + public void removeHook(StigmataHook hook){ + hooks.remove(hook); + } + + public int getHookCount(){ + return hooks.size(); + } + + public StigmataHook getHook(int index){ + return hooks.get(index); + } + + public void addRuntimeHook(StigmataRuntimeHook hook){ + runtimeHooks.add(hook); + } + + public void removeRuntimeHook(StigmataRuntimeHook hook){ + runtimeHooks.remove(hook); + } + + public int getRuntimeHookCount(){ + return runtimeHooks.size(); + } + + public StigmataRuntimeHook getRuntimeHook(int index){ + return runtimeHooks.get(index); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/hook/Phase.java b/src/main/java/jp/sourceforge/stigmata/hook/Phase.java similarity index 82% rename from src/main/java/jp/naist/se/stigmata/hook/Phase.java rename to src/main/java/jp/sourceforge/stigmata/hook/Phase.java index cd528f2..3fd691a 100755 --- a/src/main/java/jp/naist/se/stigmata/hook/Phase.java +++ b/src/main/java/jp/sourceforge/stigmata/hook/Phase.java @@ -1,21 +1,21 @@ -package jp.naist.se.stigmata.hook; - -/* - * $Id$ - */ - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public enum Phase{ - SETUP, - TEAR_DOWN, - BEFORE_EXTRACTION, - AFTER_EXTRACTION, - BEFORE_COMPARISON, - AFTER_COMPARISON, - BEFORE_FILTERING, - AFTER_FILTERING, +package jp.sourceforge.stigmata.hook; + +/* + * $Id$ + */ + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public enum Phase{ + SETUP, + TEAR_DOWN, + BEFORE_EXTRACTION, + AFTER_EXTRACTION, + BEFORE_COMPARISON, + AFTER_COMPARISON, + BEFORE_FILTERING, + AFTER_FILTERING, } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/hook/StigmataHook.java b/src/main/java/jp/sourceforge/stigmata/hook/StigmataHook.java similarity index 63% rename from src/main/java/jp/naist/se/stigmata/hook/StigmataHook.java rename to src/main/java/jp/sourceforge/stigmata/hook/StigmataHook.java index b9e7558..64d55de 100755 --- a/src/main/java/jp/naist/se/stigmata/hook/StigmataHook.java +++ b/src/main/java/jp/sourceforge/stigmata/hook/StigmataHook.java @@ -1,16 +1,16 @@ -package jp.naist.se.stigmata.hook; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkEnvironment; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date - */ -public interface StigmataHook{ - public void onHook(Phase phase, BirthmarkEnvironment env); +package jp.sourceforge.stigmata.hook; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkEnvironment; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date + */ +public interface StigmataHook{ + public void onHook(Phase phase, BirthmarkEnvironment env); } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/hook/StigmataHookManager.java b/src/main/java/jp/sourceforge/stigmata/hook/StigmataHookManager.java similarity index 89% rename from src/main/java/jp/naist/se/stigmata/hook/StigmataHookManager.java rename to src/main/java/jp/sourceforge/stigmata/hook/StigmataHookManager.java index a38ee1f..4531147 100755 --- a/src/main/java/jp/naist/se/stigmata/hook/StigmataHookManager.java +++ b/src/main/java/jp/sourceforge/stigmata/hook/StigmataHookManager.java @@ -1,78 +1,78 @@ -package jp.naist.se.stigmata.hook; - -/* - * $Id$ - */ - -import java.util.Iterator; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.spi.StigmataHookSpi; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date - */ -public class StigmataHookManager{ - private static final StigmataHookManager manager = new StigmataHookManager(); - - /** - * private constructor for singleton pattern. - */ - private StigmataHookManager(){ - } - - public static StigmataHookManager getInstance(){ - return manager; - } - - public void runHook(Phase phase, BirthmarkContext context){ - StigmataRuntimeHook hook = buildHook(phase, context.getEnvironment()); - hook.onHook(phase, context); - } - - public void runHook(Phase phase, BirthmarkEnvironment env){ - StigmataHook hook = buildHook(phase, env); - hook.onHook(phase, env); - } - - private MultipleStigmataHook buildHook(Phase phase, BirthmarkEnvironment env){ - MultipleStigmataHook hooks = new MultipleStigmataHook(); - - for(Iterator i = env.lookupProviders(StigmataHookSpi.class); i.hasNext(); ){ - StigmataHookSpi service = i.next(); - - switch(phase){ - case SETUP: - hooks.addHook(service.onSetup()); - break; - case TEAR_DOWN: - hooks.addHook(service.onTearDown()); - break; - case BEFORE_EXTRACTION: - hooks.addRuntimeHook(service.beforeExtraction()); - break; - case AFTER_EXTRACTION: - hooks.addRuntimeHook(service.afterExtraction()); - break; - case BEFORE_COMPARISON: - hooks.addRuntimeHook(service.beforeComparison()); - break; - case AFTER_COMPARISON: - hooks.addRuntimeHook(service.afterComparison()); - break; - case BEFORE_FILTERING: - hooks.addRuntimeHook(service.beforeFiltering()); - break; - case AFTER_FILTERING: - hooks.addRuntimeHook(service.afterFiltering()); - break; - default: - throw new InternalError("invalid phase: " + phase); - } - } - return hooks; - } +package jp.sourceforge.stigmata.hook; + +/* + * $Id$ + */ + +import java.util.Iterator; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.spi.StigmataHookSpi; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date + */ +public class StigmataHookManager{ + private static final StigmataHookManager manager = new StigmataHookManager(); + + /** + * private constructor for singleton pattern. + */ + private StigmataHookManager(){ + } + + public static StigmataHookManager getInstance(){ + return manager; + } + + public void runHook(Phase phase, BirthmarkContext context){ + StigmataRuntimeHook hook = buildHook(phase, context.getEnvironment()); + hook.onHook(phase, context); + } + + public void runHook(Phase phase, BirthmarkEnvironment env){ + StigmataHook hook = buildHook(phase, env); + hook.onHook(phase, env); + } + + private MultipleStigmataHook buildHook(Phase phase, BirthmarkEnvironment env){ + MultipleStigmataHook hooks = new MultipleStigmataHook(); + + for(Iterator i = env.lookupProviders(StigmataHookSpi.class); i.hasNext(); ){ + StigmataHookSpi service = i.next(); + + switch(phase){ + case SETUP: + hooks.addHook(service.onSetup()); + break; + case TEAR_DOWN: + hooks.addHook(service.onTearDown()); + break; + case BEFORE_EXTRACTION: + hooks.addRuntimeHook(service.beforeExtraction()); + break; + case AFTER_EXTRACTION: + hooks.addRuntimeHook(service.afterExtraction()); + break; + case BEFORE_COMPARISON: + hooks.addRuntimeHook(service.beforeComparison()); + break; + case AFTER_COMPARISON: + hooks.addRuntimeHook(service.afterComparison()); + break; + case BEFORE_FILTERING: + hooks.addRuntimeHook(service.beforeFiltering()); + break; + case AFTER_FILTERING: + hooks.addRuntimeHook(service.afterFiltering()); + break; + default: + throw new InternalError("invalid phase: " + phase); + } + } + return hooks; + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/hook/StigmataRuntimeHook.java b/src/main/java/jp/sourceforge/stigmata/hook/StigmataRuntimeHook.java similarity index 64% rename from src/main/java/jp/naist/se/stigmata/hook/StigmataRuntimeHook.java rename to src/main/java/jp/sourceforge/stigmata/hook/StigmataRuntimeHook.java index 0528104..ab861a6 100755 --- a/src/main/java/jp/naist/se/stigmata/hook/StigmataRuntimeHook.java +++ b/src/main/java/jp/sourceforge/stigmata/hook/StigmataRuntimeHook.java @@ -1,12 +1,12 @@ -package jp.naist.se.stigmata.hook; - -import jp.naist.se.stigmata.BirthmarkContext; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date - */ -public interface StigmataRuntimeHook{ - public void onHook(Phase phase, BirthmarkContext context); +package jp.sourceforge.stigmata.hook; + +import jp.sourceforge.stigmata.BirthmarkContext; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date + */ +public interface StigmataRuntimeHook{ + public void onHook(Phase phase, BirthmarkContext context); } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/printer/AbstractBirthmarkServicePrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/AbstractBirthmarkServicePrinter.java similarity index 85% rename from src/main/java/jp/naist/se/stigmata/printer/AbstractBirthmarkServicePrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/AbstractBirthmarkServicePrinter.java index c8fa623..ea60fcc 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/AbstractBirthmarkServicePrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/AbstractBirthmarkServicePrinter.java @@ -1,38 +1,38 @@ -package jp.naist.se.stigmata.printer; - -/* - * $Id$ - */ - -import java.io.PrintWriter; -import java.io.StringWriter; - -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public abstract class AbstractBirthmarkServicePrinter implements BirthmarkServicePrinter, Printer{ - public abstract void printResult(PrintWriter out, BirthmarkSpi[] spilist); - - public String getResult(BirthmarkSpi[] spilist){ - StringWriter writer = new StringWriter(); - PrintWriter out = new PrintWriter(writer); - - printResult(out, spilist); - - out.close(); - return writer.toString(); - } - - public void printHeader(PrintWriter out){ - } - - public void printFooter(PrintWriter out){ - out.flush(); - } -} +package jp.sourceforge.stigmata.printer; + +/* + * $Id$ + */ + +import java.io.PrintWriter; +import java.io.StringWriter; + +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public abstract class AbstractBirthmarkServicePrinter implements BirthmarkServicePrinter, Printer{ + public abstract void printResult(PrintWriter out, BirthmarkSpi[] spilist); + + public String getResult(BirthmarkSpi[] spilist){ + StringWriter writer = new StringWriter(); + PrintWriter out = new PrintWriter(writer); + + printResult(out, spilist); + + out.close(); + return writer.toString(); + } + + public void printHeader(PrintWriter out){ + } + + public void printFooter(PrintWriter out){ + out.flush(); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/AbstractComparisonPairPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/AbstractComparisonPairPrinter.java similarity index 85% rename from src/main/java/jp/naist/se/stigmata/printer/AbstractComparisonPairPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/AbstractComparisonPairPrinter.java index 0095ed6..4a4e766 100755 --- a/src/main/java/jp/naist/se/stigmata/printer/AbstractComparisonPairPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/AbstractComparisonPairPrinter.java @@ -1,37 +1,37 @@ -package jp.naist.se.stigmata.printer; - -/* - * $Id$ - */ - -import java.io.PrintWriter; -import java.io.StringWriter; - -import jp.naist.se.stigmata.ComparisonPair; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public abstract class AbstractComparisonPairPrinter implements ComparisonPairPrinter, Printer{ - - public abstract void printResult(PrintWriter out, ComparisonPair pair); - - public void printFooter(PrintWriter out){ - out.flush(); - } - - public void printHeader(PrintWriter out){ - } - - public String getResult(ComparisonPair pair){ - StringWriter writer = new StringWriter(); - PrintWriter out = new PrintWriter(writer); - - printResult(out, pair); - - out.close(); - return writer.toString(); - } -} +package jp.sourceforge.stigmata.printer; + +/* + * $Id$ + */ + +import java.io.PrintWriter; +import java.io.StringWriter; + +import jp.sourceforge.stigmata.ComparisonPair; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public abstract class AbstractComparisonPairPrinter implements ComparisonPairPrinter, Printer{ + + public abstract void printResult(PrintWriter out, ComparisonPair pair); + + public void printFooter(PrintWriter out){ + out.flush(); + } + + public void printHeader(PrintWriter out){ + } + + public String getResult(ComparisonPair pair){ + StringWriter writer = new StringWriter(); + PrintWriter out = new PrintWriter(writer); + + printResult(out, pair); + + out.close(); + return writer.toString(); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/AbstractComparisonResultSetPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/AbstractComparisonResultSetPrinter.java similarity index 85% rename from src/main/java/jp/naist/se/stigmata/printer/AbstractComparisonResultSetPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/AbstractComparisonResultSetPrinter.java index c5c2445..1f3ca91 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/AbstractComparisonResultSetPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/AbstractComparisonResultSetPrinter.java @@ -1,38 +1,38 @@ -package jp.naist.se.stigmata.printer; - -/* - * $Id$ - */ - -import java.io.PrintWriter; -import java.io.StringWriter; - -import jp.naist.se.stigmata.ComparisonResultSet; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public abstract class AbstractComparisonResultSetPrinter implements ComparisonResultSetPrinter, Printer{ - public abstract void printResult(PrintWriter out, ComparisonResultSet resultset); - - public void printHeader(PrintWriter out){ - } - - public void printFooter(PrintWriter out){ - out.flush(); - } - - public String getResult(ComparisonResultSet resultset){ - StringWriter writer = new StringWriter(); - PrintWriter out = new PrintWriter(writer); - - printResult(out, resultset); - - out.close(); - return writer.toString(); - } -} +package jp.sourceforge.stigmata.printer; + +/* + * $Id$ + */ + +import java.io.PrintWriter; +import java.io.StringWriter; + +import jp.sourceforge.stigmata.ComparisonResultSet; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public abstract class AbstractComparisonResultSetPrinter implements ComparisonResultSetPrinter, Printer{ + public abstract void printResult(PrintWriter out, ComparisonResultSet resultset); + + public void printHeader(PrintWriter out){ + } + + public void printFooter(PrintWriter out){ + out.flush(); + } + + public String getResult(ComparisonResultSet resultset){ + StringWriter writer = new StringWriter(); + PrintWriter out = new PrintWriter(writer); + + printResult(out, resultset); + + out.close(); + return writer.toString(); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/AbstractExtractionResultSetPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/AbstractExtractionResultSetPrinter.java similarity index 84% rename from src/main/java/jp/naist/se/stigmata/printer/AbstractExtractionResultSetPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/AbstractExtractionResultSetPrinter.java index fa57acc..d6ca671 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/AbstractExtractionResultSetPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/AbstractExtractionResultSetPrinter.java @@ -1,38 +1,38 @@ -package jp.naist.se.stigmata.printer; - -/* - * $Id$ - */ - -import java.io.PrintWriter; -import java.io.StringWriter; - -import jp.naist.se.stigmata.ExtractionResultSet; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public abstract class AbstractExtractionResultSetPrinter implements ExtractionResultSetPrinter{ - public abstract void printResult(PrintWriter out, ExtractionResultSet ers); - - public void printHeader(PrintWriter out){ - } - - public void printFooter(PrintWriter out){ - out.flush(); - } - - public String getResult(ExtractionResultSet ers){ - StringWriter writer = new StringWriter(); - PrintWriter out = new PrintWriter(writer); - - printResult(out, ers); - - out.close(); - return writer.toString(); - } -} +package jp.sourceforge.stigmata.printer; + +/* + * $Id$ + */ + +import java.io.PrintWriter; +import java.io.StringWriter; + +import jp.sourceforge.stigmata.ExtractionResultSet; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public abstract class AbstractExtractionResultSetPrinter implements ExtractionResultSetPrinter{ + public abstract void printResult(PrintWriter out, ExtractionResultSet ers); + + public void printHeader(PrintWriter out){ + } + + public void printFooter(PrintWriter out){ + out.flush(); + } + + public String getResult(ExtractionResultSet ers){ + StringWriter writer = new StringWriter(); + PrintWriter out = new PrintWriter(writer); + + printResult(out, ers); + + out.close(); + return writer.toString(); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/BirthmarkServicePrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/BirthmarkServicePrinter.java similarity index 75% rename from src/main/java/jp/naist/se/stigmata/printer/BirthmarkServicePrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/BirthmarkServicePrinter.java index 789b63e..b8688c1 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/BirthmarkServicePrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/BirthmarkServicePrinter.java @@ -1,23 +1,23 @@ -package jp.naist.se.stigmata.printer; - -/* - * $Id$ - */ - -import java.io.IOException; -import java.io.PrintWriter; - -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface BirthmarkServicePrinter{ - public void printResult(PrintWriter out, BirthmarkSpi[] spilist) throws IOException; - - public String getResult(BirthmarkSpi[] spilist); -} +package jp.sourceforge.stigmata.printer; + +/* + * $Id$ + */ + +import java.io.IOException; +import java.io.PrintWriter; + +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface BirthmarkServicePrinter{ + public void printResult(PrintWriter out, BirthmarkSpi[] spilist) throws IOException; + + public String getResult(BirthmarkSpi[] spilist); +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/ComparisonPairPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/ComparisonPairPrinter.java similarity index 72% rename from src/main/java/jp/naist/se/stigmata/printer/ComparisonPairPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/ComparisonPairPrinter.java index 6714202..d8baaaa 100755 --- a/src/main/java/jp/naist/se/stigmata/printer/ComparisonPairPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/ComparisonPairPrinter.java @@ -1,20 +1,20 @@ -package jp.naist.se.stigmata.printer; - -/* - * $Id$ - */ - -import java.io.PrintWriter; - -import jp.naist.se.stigmata.ComparisonPair; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public interface ComparisonPairPrinter{ - public String getResult(ComparisonPair pair); - - public void printResult(PrintWriter out, ComparisonPair pair); -} +package jp.sourceforge.stigmata.printer; + +/* + * $Id$ + */ + +import java.io.PrintWriter; + +import jp.sourceforge.stigmata.ComparisonPair; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public interface ComparisonPairPrinter{ + public String getResult(ComparisonPair pair); + + public void printResult(PrintWriter out, ComparisonPair pair); +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/ComparisonResultSetPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/ComparisonResultSetPrinter.java similarity index 73% rename from src/main/java/jp/naist/se/stigmata/printer/ComparisonResultSetPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/ComparisonResultSetPrinter.java index dd64526..a284ced 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/ComparisonResultSetPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/ComparisonResultSetPrinter.java @@ -1,22 +1,22 @@ -package jp.naist.se.stigmata.printer; - -/* - * $Id$ - */ - -import java.io.PrintWriter; - -import jp.naist.se.stigmata.ComparisonResultSet; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface ComparisonResultSetPrinter{ - public void printResult(PrintWriter out, ComparisonResultSet resultset); - - public String getResult(ComparisonResultSet resultset); -} +package jp.sourceforge.stigmata.printer; + +/* + * $Id$ + */ + +import java.io.PrintWriter; + +import jp.sourceforge.stigmata.ComparisonResultSet; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface ComparisonResultSetPrinter{ + public void printResult(PrintWriter out, ComparisonResultSet resultset); + + public String getResult(ComparisonResultSet resultset); +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/ExtractionResultSetPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/ExtractionResultSetPrinter.java similarity index 73% rename from src/main/java/jp/naist/se/stigmata/printer/ExtractionResultSetPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/ExtractionResultSetPrinter.java index 497e5f7..c2b3ab0 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/ExtractionResultSetPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/ExtractionResultSetPrinter.java @@ -1,22 +1,22 @@ -package jp.naist.se.stigmata.printer; - -/* - * $Id$ - */ - -import java.io.PrintWriter; - -import jp.naist.se.stigmata.ExtractionResultSet; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface ExtractionResultSetPrinter{ - public void printResult(PrintWriter out, ExtractionResultSet ers); - - public String getResult(ExtractionResultSet ers); -} +package jp.sourceforge.stigmata.printer; + +/* + * $Id$ + */ + +import java.io.PrintWriter; + +import jp.sourceforge.stigmata.ExtractionResultSet; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface ExtractionResultSetPrinter{ + public void printResult(PrintWriter out, ExtractionResultSet ers); + + public String getResult(ExtractionResultSet ers); +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/Printer.java b/src/main/java/jp/sourceforge/stigmata/printer/Printer.java similarity index 75% rename from src/main/java/jp/naist/se/stigmata/printer/Printer.java rename to src/main/java/jp/sourceforge/stigmata/printer/Printer.java index 1bc0483..ad4d024 100755 --- a/src/main/java/jp/naist/se/stigmata/printer/Printer.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/Printer.java @@ -1,9 +1,9 @@ -package jp.naist.se.stigmata.printer; - -import java.io.PrintWriter; - -interface Printer{ - public void printHeader(PrintWriter out); - - public void printFooter(PrintWriter out); -} +package jp.sourceforge.stigmata.printer; + +import java.io.PrintWriter; + +interface Printer{ + public void printHeader(PrintWriter out); + + public void printFooter(PrintWriter out); +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/PrinterManager.java b/src/main/java/jp/sourceforge/stigmata/printer/PrinterManager.java similarity index 84% rename from src/main/java/jp/naist/se/stigmata/printer/PrinterManager.java rename to src/main/java/jp/sourceforge/stigmata/printer/PrinterManager.java index 00fe492..eb08c97 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/PrinterManager.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/PrinterManager.java @@ -1,57 +1,57 @@ -package jp.naist.se.stigmata.printer; - -/* - * $Id$ - */ - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import javax.imageio.spi.ServiceRegistry; - -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.printer.csv.CsvResultPrinterService; -import jp.naist.se.stigmata.spi.ResultPrinterSpi; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class PrinterManager{ - private static final PrinterManager manager = new PrinterManager(); - - private Map formats = new HashMap(); - - private PrinterManager(){ - for(Iterator i = ServiceRegistry.lookupProviders(ResultPrinterSpi.class); i.hasNext(); ){ - ResultPrinterSpi spi = i.next(); - addService(spi); - } - } - - public static void updateServices(BirthmarkEnvironment environment){ - PrinterManager instance = getInstance(); - for(Iterator i = environment.lookupProviders(ResultPrinterSpi.class); i.hasNext(); ){ - ResultPrinterSpi spi = i.next(); - instance.addService(spi); - } - } - - public static ResultPrinterSpi getDefaultFormatService(){ - return new CsvResultPrinterService(); - } - - public static PrinterManager getInstance(){ - return manager; - } - - public ResultPrinterSpi getService(String format){ - return formats.get(format); - } - - private void addService(ResultPrinterSpi service){ - formats.put(service.getFormat(), service); - } -} +package jp.sourceforge.stigmata.printer; + +/* + * $Id$ + */ + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import javax.imageio.spi.ServiceRegistry; + +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.printer.csv.CsvResultPrinterService; +import jp.sourceforge.stigmata.spi.ResultPrinterSpi; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class PrinterManager{ + private static final PrinterManager manager = new PrinterManager(); + + private Map formats = new HashMap(); + + private PrinterManager(){ + for(Iterator i = ServiceRegistry.lookupProviders(ResultPrinterSpi.class); i.hasNext(); ){ + ResultPrinterSpi spi = i.next(); + addService(spi); + } + } + + public static void updateServices(BirthmarkEnvironment environment){ + PrinterManager instance = getInstance(); + for(Iterator i = environment.lookupProviders(ResultPrinterSpi.class); i.hasNext(); ){ + ResultPrinterSpi spi = i.next(); + instance.addService(spi); + } + } + + public static ResultPrinterSpi getDefaultFormatService(){ + return new CsvResultPrinterService(); + } + + public static PrinterManager getInstance(){ + return manager; + } + + public ResultPrinterSpi getService(String format){ + return formats.get(format); + } + + private void addService(ResultPrinterSpi service){ + formats.put(service.getFormat(), service); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/csv/BirthmarkServiceCsvPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/csv/BirthmarkServiceCsvPrinter.java similarity index 77% rename from src/main/java/jp/naist/se/stigmata/printer/csv/BirthmarkServiceCsvPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/csv/BirthmarkServiceCsvPrinter.java index befd4a5..cbf5d15 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/csv/BirthmarkServiceCsvPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/csv/BirthmarkServiceCsvPrinter.java @@ -1,34 +1,34 @@ -package jp.naist.se.stigmata.printer.csv; - -/* - * $Id$ - */ - -import java.io.PrintWriter; - -import jp.naist.se.stigmata.printer.AbstractBirthmarkServicePrinter; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkServiceCsvPrinter extends AbstractBirthmarkServicePrinter{ - public void printResult(PrintWriter out, BirthmarkSpi[] spilist){ - printHeader(out); - for(BirthmarkSpi spi: spilist){ - out.print(spi.getType()); - out.print(","); - out.print(spi.getDisplayType()); - out.print(","); - out.print(spi.getClass().getName()); - out.print(","); - out.print(spi.getDescription()); - out.println(); - } - printFooter(out); - } -} +package jp.sourceforge.stigmata.printer.csv; + +/* + * $Id$ + */ + +import java.io.PrintWriter; + +import jp.sourceforge.stigmata.printer.AbstractBirthmarkServicePrinter; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkServiceCsvPrinter extends AbstractBirthmarkServicePrinter{ + public void printResult(PrintWriter out, BirthmarkSpi[] spilist){ + printHeader(out); + for(BirthmarkSpi spi: spilist){ + out.print(spi.getType()); + out.print(","); + out.print(spi.getDisplayType()); + out.print(","); + out.print(spi.getClass().getName()); + out.print(","); + out.print(spi.getDescription()); + out.println(); + } + printFooter(out); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/csv/ComparisonPairCsvPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/csv/ComparisonPairCsvPrinter.java similarity index 75% rename from src/main/java/jp/naist/se/stigmata/printer/csv/ComparisonPairCsvPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/csv/ComparisonPairCsvPrinter.java index b36bfc7..04facdd 100755 --- a/src/main/java/jp/naist/se/stigmata/printer/csv/ComparisonPairCsvPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/csv/ComparisonPairCsvPrinter.java @@ -1,29 +1,29 @@ -package jp.naist.se.stigmata.printer.csv; - -import java.io.PrintWriter; - -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.ComparisonPairElement; -import jp.naist.se.stigmata.printer.AbstractComparisonPairPrinter; - -public class ComparisonPairCsvPrinter extends AbstractComparisonPairPrinter{ - private ExtractionResultSetCsvPrinter list; - - public ComparisonPairCsvPrinter(ExtractionResultSetCsvPrinter list){ - this.list = list; - } - - @Override - public void printResult(PrintWriter out, ComparisonPair pair){ - list.printBirthmarkSet(out, pair.getTarget1()); - list.printBirthmarkSet(out, pair.getTarget2()); - - for(ComparisonPairElement element: pair){ - out.print("compare,"); - out.print(element.getType()); - out.print(","); - out.println(element.getSimilarity()); - } - out.flush(); - } -} +package jp.sourceforge.stigmata.printer.csv; + +import java.io.PrintWriter; + +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.ComparisonPairElement; +import jp.sourceforge.stigmata.printer.AbstractComparisonPairPrinter; + +public class ComparisonPairCsvPrinter extends AbstractComparisonPairPrinter{ + private ExtractionResultSetCsvPrinter list; + + public ComparisonPairCsvPrinter(ExtractionResultSetCsvPrinter list){ + this.list = list; + } + + @Override + public void printResult(PrintWriter out, ComparisonPair pair){ + list.printBirthmarkSet(out, pair.getTarget1()); + list.printBirthmarkSet(out, pair.getTarget2()); + + for(ComparisonPairElement element: pair){ + out.print("compare,"); + out.print(element.getType()); + out.print(","); + out.println(element.getSimilarity()); + } + out.flush(); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/csv/ComparisonResultSetCsvPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/csv/ComparisonResultSetCsvPrinter.java similarity index 87% rename from src/main/java/jp/naist/se/stigmata/printer/csv/ComparisonResultSetCsvPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/csv/ComparisonResultSetCsvPrinter.java index 5b58067..281d7a8 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/csv/ComparisonResultSetCsvPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/csv/ComparisonResultSetCsvPrinter.java @@ -1,85 +1,85 @@ -package jp.naist.se.stigmata.printer.csv; - -/* - * $Id$ - */ - -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.ComparisonResultSet; -import jp.naist.se.stigmata.printer.AbstractComparisonResultSetPrinter; -import jp.naist.se.stigmata.result.CertainPairComparisonResultSet; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ComparisonResultSetCsvPrinter extends AbstractComparisonResultSetPrinter{ - public ComparisonResultSetCsvPrinter(){ - } - - @Override - public void printResult(PrintWriter out, ComparisonResultSet resultset){ - if(resultset instanceof CertainPairComparisonResultSet){ - printResultImpl(out, (CertainPairComparisonResultSet)resultset); - } - else{ - printResultImpl(out, resultset); - } - } - - private void printResultImpl(PrintWriter out, CertainPairComparisonResultSet resultset){ - for(ComparisonPair pair: resultset){ - out.print(pair.getTarget1().getName()); - out.print(","); - out.print(pair.getTarget1().getName()); - out.print(","); - out.println(pair.calculateSimilarity()); - } - } - - private void printResultImpl(PrintWriter out, ComparisonResultSet resultset){ - Map> map = new LinkedHashMap>(); - List names = new ArrayList(); - - for(ComparisonPair pair: resultset){ - Map val = map.get(pair.getTarget1().getName()); - if(val == null){ - val = new HashMap(); - } - val.put(pair.getTarget2().getName(), new Double(pair.calculateSimilarity())); - if(!names.contains(pair.getTarget2().getName())){ - names.add(pair.getTarget2().getName()); - } - map.put(pair.getTarget1().getName(), val); - } - - for(String name: names){ - out.print(","); - out.print(name); - } - out.println(); - for(Map.Entry> entry: map.entrySet()){ - out.print(entry.getKey()); - Map element = entry.getValue(); - for(String name: names){ - out.print(","); - Double v = element.get(name); - if(v != null){ - out.print(v.doubleValue()); - } - } - out.println(); - } - out.flush(); - } -} +package jp.sourceforge.stigmata.printer.csv; + +/* + * $Id$ + */ + +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.ComparisonResultSet; +import jp.sourceforge.stigmata.printer.AbstractComparisonResultSetPrinter; +import jp.sourceforge.stigmata.result.CertainPairComparisonResultSet; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ComparisonResultSetCsvPrinter extends AbstractComparisonResultSetPrinter{ + public ComparisonResultSetCsvPrinter(){ + } + + @Override + public void printResult(PrintWriter out, ComparisonResultSet resultset){ + if(resultset instanceof CertainPairComparisonResultSet){ + printResultImpl(out, (CertainPairComparisonResultSet)resultset); + } + else{ + printResultImpl(out, resultset); + } + } + + private void printResultImpl(PrintWriter out, CertainPairComparisonResultSet resultset){ + for(ComparisonPair pair: resultset){ + out.print(pair.getTarget1().getName()); + out.print(","); + out.print(pair.getTarget1().getName()); + out.print(","); + out.println(pair.calculateSimilarity()); + } + } + + private void printResultImpl(PrintWriter out, ComparisonResultSet resultset){ + Map> map = new LinkedHashMap>(); + List names = new ArrayList(); + + for(ComparisonPair pair: resultset){ + Map val = map.get(pair.getTarget1().getName()); + if(val == null){ + val = new HashMap(); + } + val.put(pair.getTarget2().getName(), new Double(pair.calculateSimilarity())); + if(!names.contains(pair.getTarget2().getName())){ + names.add(pair.getTarget2().getName()); + } + map.put(pair.getTarget1().getName(), val); + } + + for(String name: names){ + out.print(","); + out.print(name); + } + out.println(); + for(Map.Entry> entry: map.entrySet()){ + out.print(entry.getKey()); + Map element = entry.getValue(); + for(String name: names){ + out.print(","); + Double v = element.get(name); + if(v != null){ + out.print(v.doubleValue()); + } + } + out.println(); + } + out.flush(); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/csv/CsvResultPrinterService.java b/src/main/java/jp/sourceforge/stigmata/printer/csv/CsvResultPrinterService.java similarity index 72% rename from src/main/java/jp/naist/se/stigmata/printer/csv/CsvResultPrinterService.java rename to src/main/java/jp/sourceforge/stigmata/printer/csv/CsvResultPrinterService.java index d59f8e8..7d9ec0b 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/csv/CsvResultPrinterService.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/csv/CsvResultPrinterService.java @@ -1,58 +1,58 @@ -package jp.naist.se.stigmata.printer.csv; - -/* - * $Id$ - */ - -import java.util.Locale; - -import jp.naist.se.stigmata.printer.BirthmarkServicePrinter; -import jp.naist.se.stigmata.printer.ComparisonPairPrinter; -import jp.naist.se.stigmata.printer.ComparisonResultSetPrinter; -import jp.naist.se.stigmata.printer.ExtractionResultSetPrinter; -import jp.naist.se.stigmata.spi.AbstractServiceProvider; -import jp.naist.se.stigmata.spi.ResultPrinterSpi; -import jp.naist.se.stigmata.utils.LocalizedDescriptionManager; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class CsvResultPrinterService extends AbstractServiceProvider implements ResultPrinterSpi{ - private BirthmarkServiceCsvPrinter serviceList = new BirthmarkServiceCsvPrinter(); - private ExtractionResultSetCsvPrinter list = new ExtractionResultSetCsvPrinter(); - private ComparisonPairCsvPrinter pairPrinter = new ComparisonPairCsvPrinter(list); - private ComparisonResultSetCsvPrinter compare = new ComparisonResultSetCsvPrinter(); - - /** - * returns a localized description of the birthmark this service provides. - */ - public String getDescription(Locale locale){ - return LocalizedDescriptionManager.getInstance().getDescription( - locale, getFormat(), LocalizedDescriptionManager.ServiceCategory.formatter - ); - } - - public String getFormat(){ - return "csv"; - } - - public ComparisonResultSetPrinter getComparisonResultSetPrinter() { - return compare; - } - - public ExtractionResultSetPrinter getExtractionResultSetPrinter() { - return list; - } - - public BirthmarkServicePrinter getBirthmarkServicePrinter() { - return serviceList; - } - - public ComparisonPairPrinter getComparisonPairPrinter(){ - return pairPrinter; - } -} +package jp.sourceforge.stigmata.printer.csv; + +/* + * $Id$ + */ + +import java.util.Locale; + +import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter; +import jp.sourceforge.stigmata.printer.ComparisonPairPrinter; +import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter; +import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter; +import jp.sourceforge.stigmata.spi.AbstractServiceProvider; +import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class CsvResultPrinterService extends AbstractServiceProvider implements ResultPrinterSpi{ + private BirthmarkServiceCsvPrinter serviceList = new BirthmarkServiceCsvPrinter(); + private ExtractionResultSetCsvPrinter list = new ExtractionResultSetCsvPrinter(); + private ComparisonPairCsvPrinter pairPrinter = new ComparisonPairCsvPrinter(list); + private ComparisonResultSetCsvPrinter compare = new ComparisonResultSetCsvPrinter(); + + /** + * returns a localized description of the birthmark this service provides. + */ + public String getDescription(Locale locale){ + return LocalizedDescriptionManager.getInstance().getDescription( + locale, getFormat(), LocalizedDescriptionManager.ServiceCategory.formatter + ); + } + + public String getFormat(){ + return "csv"; + } + + public ComparisonResultSetPrinter getComparisonResultSetPrinter() { + return compare; + } + + public ExtractionResultSetPrinter getExtractionResultSetPrinter() { + return list; + } + + public BirthmarkServicePrinter getBirthmarkServicePrinter() { + return serviceList; + } + + public ComparisonPairPrinter getComparisonPairPrinter(){ + return pairPrinter; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/csv/ExtractionResultSetCsvPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/csv/ExtractionResultSetCsvPrinter.java similarity index 74% rename from src/main/java/jp/naist/se/stigmata/printer/csv/ExtractionResultSetCsvPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/csv/ExtractionResultSetCsvPrinter.java index 4b29c20..122c7dd 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/csv/ExtractionResultSetCsvPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/csv/ExtractionResultSetCsvPrinter.java @@ -1,49 +1,49 @@ -package jp.naist.se.stigmata.printer.csv; - -/* - * $Id$ - */ - -import java.io.PrintWriter; -import java.util.Iterator; - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.ExtractionTarget; -import jp.naist.se.stigmata.printer.AbstractExtractionResultSetPrinter; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ExtractionResultSetCsvPrinter extends AbstractExtractionResultSetPrinter{ - public void printResult(PrintWriter out, ExtractionResultSet ers){ - printHeader(out); - for(Iterator i = ers.birthmarkSets(ExtractionTarget.TARGET_BOTH); i.hasNext(); ){ - printBirthmarkSet(out, i.next()); - } - printFooter(out); - } - - protected void printBirthmarkSet(PrintWriter out, BirthmarkSet holder){ - for(String type: holder.getBirthmarkTypes()){ - out.print(holder.getName()); - out.print(","); - out.print(holder.getLocation()); - - Birthmark birthmark = holder.getBirthmark(type); - out.print(","); - out.print(birthmark.getType()); - for(Iterator elements = birthmark.iterator(); elements.hasNext(); ){ - out.print(","); - out.print(elements.next()); - } - out.println(); - } - } -} +package jp.sourceforge.stigmata.printer.csv; + +/* + * $Id$ + */ + +import java.io.PrintWriter; +import java.util.Iterator; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.ExtractionTarget; +import jp.sourceforge.stigmata.printer.AbstractExtractionResultSetPrinter; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ExtractionResultSetCsvPrinter extends AbstractExtractionResultSetPrinter{ + public void printResult(PrintWriter out, ExtractionResultSet ers){ + printHeader(out); + for(Iterator i = ers.birthmarkSets(ExtractionTarget.TARGET_BOTH); i.hasNext(); ){ + printBirthmarkSet(out, i.next()); + } + printFooter(out); + } + + protected void printBirthmarkSet(PrintWriter out, BirthmarkSet holder){ + for(String type: holder.getBirthmarkTypes()){ + out.print(holder.getName()); + out.print(","); + out.print(holder.getLocation()); + + Birthmark birthmark = holder.getBirthmark(type); + out.print(","); + out.print(birthmark.getType()); + for(Iterator elements = birthmark.iterator(); elements.hasNext(); ){ + out.print(","); + out.print(elements.next()); + } + out.println(); + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/xml/BirthmarkServiceXmlPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/xml/BirthmarkServiceXmlPrinter.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/printer/xml/BirthmarkServiceXmlPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/xml/BirthmarkServiceXmlPrinter.java index 36ba9ba..212267f 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/xml/BirthmarkServiceXmlPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/xml/BirthmarkServiceXmlPrinter.java @@ -1,39 +1,39 @@ -package jp.naist.se.stigmata.printer.xml; - -/* - * $Id$ - */ - -import java.io.PrintWriter; - -import jp.naist.se.stigmata.printer.AbstractBirthmarkServicePrinter; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkServiceXmlPrinter extends AbstractBirthmarkServicePrinter{ - public void printResult(PrintWriter out, BirthmarkSpi[] spilist){ - out.println(""); - out.println(""); - out.println(" "); - for(BirthmarkSpi spi: spilist){ - out.println(" "); - out.printf(" %s%n", spi.getType()); - out.printf(" %s%n", spi.getDisplayType()); - out.printf(" %s%n", spi.getDescription()); - out.printf(" %s%n", spi.getClass().getName()); - out.printf(" %s%n", spi.getExtractorClassName()); - out.printf(" %s%n", spi.getComparatorClassName()); - out.println(" "); - } - out.println(" "); - out.println(""); - - out.flush(); - } -} +package jp.sourceforge.stigmata.printer.xml; + +/* + * $Id$ + */ + +import java.io.PrintWriter; + +import jp.sourceforge.stigmata.printer.AbstractBirthmarkServicePrinter; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkServiceXmlPrinter extends AbstractBirthmarkServicePrinter{ + public void printResult(PrintWriter out, BirthmarkSpi[] spilist){ + out.println(""); + out.println(""); + out.println(" "); + for(BirthmarkSpi spi: spilist){ + out.println(" "); + out.printf(" %s%n", spi.getType()); + out.printf(" %s%n", spi.getDisplayType()); + out.printf(" %s%n", spi.getDescription()); + out.printf(" %s%n", spi.getClass().getName()); + out.printf(" %s%n", spi.getExtractorClassName()); + out.printf(" %s%n", spi.getComparatorClassName()); + out.println(" "); + } + out.println(" "); + out.println(""); + + out.flush(); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/xml/ComparisonPairXmlPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/xml/ComparisonPairXmlPrinter.java similarity index 88% rename from src/main/java/jp/naist/se/stigmata/printer/xml/ComparisonPairXmlPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/xml/ComparisonPairXmlPrinter.java index c88f795..95923c9 100755 --- a/src/main/java/jp/naist/se/stigmata/printer/xml/ComparisonPairXmlPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/xml/ComparisonPairXmlPrinter.java @@ -1,68 +1,68 @@ -package jp.naist.se.stigmata.printer.xml; - -import java.io.PrintWriter; - -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.ComparisonPairElement; -import jp.naist.se.stigmata.printer.AbstractComparisonPairPrinter; - -public class ComparisonPairXmlPrinter extends AbstractComparisonPairPrinter{ - private ExtractionResultSetXmlPrinter list; - - public ComparisonPairXmlPrinter(ExtractionResultSetXmlPrinter list){ - this.list = list; - } - - @Override - public void printResult(PrintWriter out, ComparisonPair pair){ - printHeader(out); - out.println(" "); - list.printBirthmarkSet(out, pair.getTarget1()); - list.printBirthmarkSet(out, pair.getTarget2()); - out.println(" "); - out.println(" "); - printComparisonPair(out, pair); - out.println(" "); - printFooter(out); - } - - @Override - public void printHeader(PrintWriter out){ - out.println(""); - out.println(""); - } - - @Override - public void printFooter(PrintWriter out){ - out.println(""); - out.flush(); - } - public void printComparisonPair(PrintWriter out, ComparisonPair pair){ - out.println(" "); - printTarget(out, pair.getTarget1(), 1); - printTarget(out, pair.getTarget2(), 2); - out.println(" "); - for(ComparisonPairElement element: pair){ - printPairElement(out, element); - } - out.println(" "); - out.print(" "); - out.print(pair.calculateSimilarity()); - out.println(""); - out.println(" "); - } - - private void printTarget(PrintWriter out, BirthmarkSet set, int index){ - out.printf(" %n", index); - out.printf(" %s%n", list.escapeToXmlString(set.getName())); - out.printf(" %s%n", list.escapeToXmlString(set.getLocation())); - out.printf(" %n", index); - } - - private void printPairElement(PrintWriter out, ComparisonPairElement e){ - out.printf(" %g%n", - e.getType(), e.getComparisonCount(), e.getSimilarity()); - - } -} +package jp.sourceforge.stigmata.printer.xml; + +import java.io.PrintWriter; + +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.ComparisonPairElement; +import jp.sourceforge.stigmata.printer.AbstractComparisonPairPrinter; + +public class ComparisonPairXmlPrinter extends AbstractComparisonPairPrinter{ + private ExtractionResultSetXmlPrinter list; + + public ComparisonPairXmlPrinter(ExtractionResultSetXmlPrinter list){ + this.list = list; + } + + @Override + public void printResult(PrintWriter out, ComparisonPair pair){ + printHeader(out); + out.println(" "); + list.printBirthmarkSet(out, pair.getTarget1()); + list.printBirthmarkSet(out, pair.getTarget2()); + out.println(" "); + out.println(" "); + printComparisonPair(out, pair); + out.println(" "); + printFooter(out); + } + + @Override + public void printHeader(PrintWriter out){ + out.println(""); + out.println(""); + } + + @Override + public void printFooter(PrintWriter out){ + out.println(""); + out.flush(); + } + public void printComparisonPair(PrintWriter out, ComparisonPair pair){ + out.println(" "); + printTarget(out, pair.getTarget1(), 1); + printTarget(out, pair.getTarget2(), 2); + out.println(" "); + for(ComparisonPairElement element: pair){ + printPairElement(out, element); + } + out.println(" "); + out.print(" "); + out.print(pair.calculateSimilarity()); + out.println(""); + out.println(" "); + } + + private void printTarget(PrintWriter out, BirthmarkSet set, int index){ + out.printf(" %n", index); + out.printf(" %s%n", list.escapeToXmlString(set.getName())); + out.printf(" %s%n", list.escapeToXmlString(set.getLocation())); + out.printf(" %n", index); + } + + private void printPairElement(PrintWriter out, ComparisonPairElement e){ + out.printf(" %g%n", + e.getType(), e.getComparisonCount(), e.getSimilarity()); + + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/xml/ComparisonResultSetXmlPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/xml/ComparisonResultSetXmlPrinter.java similarity index 80% rename from src/main/java/jp/naist/se/stigmata/printer/xml/ComparisonResultSetXmlPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/xml/ComparisonResultSetXmlPrinter.java index ef411a0..b48f0b1 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/xml/ComparisonResultSetXmlPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/xml/ComparisonResultSetXmlPrinter.java @@ -1,49 +1,49 @@ -package jp.naist.se.stigmata.printer.xml; - -/* - * $Id$ - */ - -import java.io.PrintWriter; - -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.ComparisonResultSet; -import jp.naist.se.stigmata.printer.AbstractComparisonResultSetPrinter; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ComparisonResultSetXmlPrinter extends AbstractComparisonResultSetPrinter{ - private ComparisonPairXmlPrinter pairPrinter; - - public ComparisonResultSetXmlPrinter(ComparisonPairXmlPrinter pairPrinter){ - this.pairPrinter = pairPrinter; - } - - @Override - public void printHeader(PrintWriter out){ - out.println(""); - out.println(""); - out.println(" "); - } - - @Override - public void printFooter(PrintWriter out){ - out.println(" "); - out.println(""); - out.flush(); - } - - @Override - public void printResult(PrintWriter out, ComparisonResultSet resultset){ - printHeader(out); - for(ComparisonPair pair: resultset){ - pairPrinter.printComparisonPair(out, pair); - } - printFooter(out); - } -} +package jp.sourceforge.stigmata.printer.xml; + +/* + * $Id$ + */ + +import java.io.PrintWriter; + +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.ComparisonResultSet; +import jp.sourceforge.stigmata.printer.AbstractComparisonResultSetPrinter; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ComparisonResultSetXmlPrinter extends AbstractComparisonResultSetPrinter{ + private ComparisonPairXmlPrinter pairPrinter; + + public ComparisonResultSetXmlPrinter(ComparisonPairXmlPrinter pairPrinter){ + this.pairPrinter = pairPrinter; + } + + @Override + public void printHeader(PrintWriter out){ + out.println(""); + out.println(""); + out.println(" "); + } + + @Override + public void printFooter(PrintWriter out){ + out.println(" "); + out.println(""); + out.flush(); + } + + @Override + public void printResult(PrintWriter out, ComparisonResultSet resultset){ + printHeader(out); + for(ComparisonPair pair: resultset){ + pairPrinter.printComparisonPair(out, pair); + } + printFooter(out); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/xml/ExtractionResultSetXmlPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/xml/ExtractionResultSetXmlPrinter.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/printer/xml/ExtractionResultSetXmlPrinter.java rename to src/main/java/jp/sourceforge/stigmata/printer/xml/ExtractionResultSetXmlPrinter.java index e3c837f..2a1107a 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/xml/ExtractionResultSetXmlPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/xml/ExtractionResultSetXmlPrinter.java @@ -1,85 +1,85 @@ -package jp.naist.se.stigmata.printer.xml; - -/* - * $Id$ - */ - -import java.io.PrintWriter; -import java.util.Iterator; - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.ExtractionTarget; -import jp.naist.se.stigmata.printer.AbstractExtractionResultSetPrinter; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -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()); - } - printFooter(out); - } - - public void printHeader(PrintWriter out){ - out.println(""); - out.println(""); - out.println(" "); - } - - public void printFooter(PrintWriter out){ - out.println(" "); - out.println(""); - out.flush(); - } - - public void printBirthmarkSet(PrintWriter out, BirthmarkSet set){ - out.println(" "); - out.printf(" %s%n", escapeToXmlString(set.getName())); - out.printf(" %s%n", escapeToXmlString(set.getLocation())); - for(Iterator i = set.birthmarkTypes(); i.hasNext(); ){ - String type = i.next(); - Birthmark birthmark = set.getBirthmark(type); - out.printf(" %n", - birthmark.getType(), birthmark.getElementCount()); - for(Iterator elements = birthmark.iterator(); elements.hasNext(); ){ - out.printf(" %s%n", - escapeToXmlString(String.valueOf(elements.next()))); - } - out.println(" "); - } - out.println(" "); - } - - public String escapeToXmlString(Object o){ - if(o != null){ - return escapeToXmlString(o.toString()); - } - return null; - } - - public String escapeToXmlString(String string){ - string = string.replaceAll("&", "&"); - string = string.replaceAll("\"", """); - string = string.replaceAll("<", "<"); - string = string.replaceAll(">", ">"); - - return string; - } -} +package jp.sourceforge.stigmata.printer.xml; + +/* + * $Id$ + */ + +import java.io.PrintWriter; +import java.util.Iterator; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.ExtractionTarget; +import jp.sourceforge.stigmata.printer.AbstractExtractionResultSetPrinter; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +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()); + } + printFooter(out); + } + + public void printHeader(PrintWriter out){ + out.println(""); + out.println(""); + out.println(" "); + } + + public void printFooter(PrintWriter out){ + out.println(" "); + out.println(""); + out.flush(); + } + + public void printBirthmarkSet(PrintWriter out, BirthmarkSet set){ + out.println(" "); + out.printf(" %s%n", escapeToXmlString(set.getName())); + out.printf(" %s%n", escapeToXmlString(set.getLocation())); + for(Iterator i = set.birthmarkTypes(); i.hasNext(); ){ + String type = i.next(); + Birthmark birthmark = set.getBirthmark(type); + out.printf(" %n", + birthmark.getType(), birthmark.getElementCount()); + for(Iterator elements = birthmark.iterator(); elements.hasNext(); ){ + out.printf(" %s%n", + escapeToXmlString(String.valueOf(elements.next()))); + } + out.println(" "); + } + out.println(" "); + } + + public String escapeToXmlString(Object o){ + if(o != null){ + return escapeToXmlString(o.toString()); + } + return null; + } + + public String escapeToXmlString(String string){ + string = string.replaceAll("&", "&"); + string = string.replaceAll("\"", """); + string = string.replaceAll("<", "<"); + string = string.replaceAll(">", ">"); + + return string; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/printer/xml/XmlResultPrinterService.java b/src/main/java/jp/sourceforge/stigmata/printer/xml/XmlResultPrinterService.java similarity index 72% rename from src/main/java/jp/naist/se/stigmata/printer/xml/XmlResultPrinterService.java rename to src/main/java/jp/sourceforge/stigmata/printer/xml/XmlResultPrinterService.java index 5288a16..845f4f5 100644 --- a/src/main/java/jp/naist/se/stigmata/printer/xml/XmlResultPrinterService.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/xml/XmlResultPrinterService.java @@ -1,58 +1,58 @@ -package jp.naist.se.stigmata.printer.xml; - -/* - * $Id$ - */ - -import java.util.Locale; - -import jp.naist.se.stigmata.printer.BirthmarkServicePrinter; -import jp.naist.se.stigmata.printer.ComparisonPairPrinter; -import jp.naist.se.stigmata.printer.ComparisonResultSetPrinter; -import jp.naist.se.stigmata.printer.ExtractionResultSetPrinter; -import jp.naist.se.stigmata.spi.AbstractServiceProvider; -import jp.naist.se.stigmata.spi.ResultPrinterSpi; -import jp.naist.se.stigmata.utils.LocalizedDescriptionManager; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class XmlResultPrinterService extends AbstractServiceProvider implements ResultPrinterSpi{ - private BirthmarkServiceXmlPrinter serviceList = new BirthmarkServiceXmlPrinter(); - private ExtractionResultSetXmlPrinter list = new ExtractionResultSetXmlPrinter(); - private ComparisonPairXmlPrinter pairPrinter = new ComparisonPairXmlPrinter(list); - private ComparisonResultSetXmlPrinter compare = new ComparisonResultSetXmlPrinter(pairPrinter); - - /** - * returns a localized description of the birthmark this service provides. - */ - public String getDescription(Locale locale){ - return LocalizedDescriptionManager.getInstance().getDescription( - locale, getFormat(), LocalizedDescriptionManager.ServiceCategory.formatter - ); - } - - public String getFormat(){ - return "xml"; - } - - public ComparisonResultSetPrinter getComparisonResultSetPrinter() { - return compare; - } - - public ExtractionResultSetPrinter getExtractionResultSetPrinter() { - return list; - } - - public BirthmarkServicePrinter getBirthmarkServicePrinter() { - return serviceList; - } - - public ComparisonPairPrinter getComparisonPairPrinter(){ - return pairPrinter; - } -} +package jp.sourceforge.stigmata.printer.xml; + +/* + * $Id$ + */ + +import java.util.Locale; + +import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter; +import jp.sourceforge.stigmata.printer.ComparisonPairPrinter; +import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter; +import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter; +import jp.sourceforge.stigmata.spi.AbstractServiceProvider; +import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class XmlResultPrinterService extends AbstractServiceProvider implements ResultPrinterSpi{ + private BirthmarkServiceXmlPrinter serviceList = new BirthmarkServiceXmlPrinter(); + private ExtractionResultSetXmlPrinter list = new ExtractionResultSetXmlPrinter(); + private ComparisonPairXmlPrinter pairPrinter = new ComparisonPairXmlPrinter(list); + private ComparisonResultSetXmlPrinter compare = new ComparisonResultSetXmlPrinter(pairPrinter); + + /** + * returns a localized description of the birthmark this service provides. + */ + public String getDescription(Locale locale){ + return LocalizedDescriptionManager.getInstance().getDescription( + locale, getFormat(), LocalizedDescriptionManager.ServiceCategory.formatter + ); + } + + public String getFormat(){ + return "xml"; + } + + public ComparisonResultSetPrinter getComparisonResultSetPrinter() { + return compare; + } + + public ExtractionResultSetPrinter getExtractionResultSetPrinter() { + return list; + } + + public BirthmarkServicePrinter getBirthmarkServicePrinter() { + return serviceList; + } + + public ComparisonPairPrinter getComparisonPairPrinter(){ + return pairPrinter; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/reader/ClassFileArchive.java b/src/main/java/jp/sourceforge/stigmata/reader/ClassFileArchive.java similarity index 90% rename from src/main/java/jp/naist/se/stigmata/reader/ClassFileArchive.java rename to src/main/java/jp/sourceforge/stigmata/reader/ClassFileArchive.java index 56fb4a4..c254765 100644 --- a/src/main/java/jp/naist/se/stigmata/reader/ClassFileArchive.java +++ b/src/main/java/jp/sourceforge/stigmata/reader/ClassFileArchive.java @@ -1,30 +1,30 @@ -package jp.naist.se.stigmata.reader; - -/* - * $Id$ - */ - -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.Iterator; - -/** - * abstract presentation of class file archive's location. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface ClassFileArchive extends Iterable{ - public URL getLocation(); - - public InputStream getInputStream(ClassFileEntry entry) throws IOException; - - public Iterator iterator(); - - public boolean hasEntry(String className); - - public ClassFileEntry getEntry(String className) throws ClassNotFoundException; - - public String getName(); -} +package jp.sourceforge.stigmata.reader; + +/* + * $Id$ + */ + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.Iterator; + +/** + * abstract presentation of class file archive's location. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface ClassFileArchive extends Iterable{ + public URL getLocation(); + + public InputStream getInputStream(ClassFileEntry entry) throws IOException; + + public Iterator iterator(); + + public boolean hasEntry(String className); + + public ClassFileEntry getEntry(String className) throws ClassNotFoundException; + + public String getName(); +} diff --git a/src/main/java/jp/naist/se/stigmata/reader/ClassFileEntry.java b/src/main/java/jp/sourceforge/stigmata/reader/ClassFileEntry.java similarity index 88% rename from src/main/java/jp/naist/se/stigmata/reader/ClassFileEntry.java rename to src/main/java/jp/sourceforge/stigmata/reader/ClassFileEntry.java index ce29d06..2978e67 100644 --- a/src/main/java/jp/naist/se/stigmata/reader/ClassFileEntry.java +++ b/src/main/java/jp/sourceforge/stigmata/reader/ClassFileEntry.java @@ -1,35 +1,35 @@ -package jp.naist.se.stigmata.reader; - -/* - * $Id$ - */ - -import java.net.URL; - -/** - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ClassFileEntry{ - private URL location; - private String className; - - public ClassFileEntry(String className, URL location){ - this.className = className; - setLocation(location); - } - - public String getClassName(){ - return className; - } - - public void setLocation(URL location){ - this.location = location; - } - - public URL getLocation(){ - return location; - } -} +package jp.sourceforge.stigmata.reader; + +/* + * $Id$ + */ + +import java.net.URL; + +/** + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ClassFileEntry{ + private URL location; + private String className; + + public ClassFileEntry(String className, URL location){ + this.className = className; + setLocation(location); + } + + public String getClassName(){ + return className; + } + + public void setLocation(URL location){ + this.location = location; + } + + public URL getLocation(){ + return location; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/reader/ClasspathContext.java b/src/main/java/jp/sourceforge/stigmata/reader/ClasspathContext.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/reader/ClasspathContext.java rename to src/main/java/jp/sourceforge/stigmata/reader/ClasspathContext.java index b164e4a..293c0e8 100644 --- a/src/main/java/jp/naist/se/stigmata/reader/ClasspathContext.java +++ b/src/main/java/jp/sourceforge/stigmata/reader/ClasspathContext.java @@ -1,177 +1,177 @@ -package jp.naist.se.stigmata.reader; - -/* - * $Id$ - */ - -import java.net.URL; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import jp.naist.se.stigmata.utils.WarClassLoader; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ClasspathContext implements Iterable{ - private static ClasspathContext DEFAULT_CONTEXT = new ClasspathContext(false); - - private ClasspathContext parent; - private List classpath = new ArrayList(); - private ClassLoader loader = null; - - /** - * private constructor for root context. - */ - private ClasspathContext(boolean flag){ - } - - public ClasspathContext(){ - this(DEFAULT_CONTEXT); - } - - /** - * constructor with parent classpath context. - */ - public ClasspathContext(ClasspathContext parent){ - this.parent = parent; - } - - /** - * returns parent classpath context. - */ - public ClasspathContext getParent(){ - return parent; - } - - /** - * returns default classpath context. - */ - public static final ClasspathContext getDefaultContext(){ - return DEFAULT_CONTEXT; - } - - /** - * adds given url to this context. If this context already has given url or - * parent context has given url, this method do nothing. - */ - public synchronized void addClasspath(URL url){ - if(!contains(url)){ - classpath.add(url); - loader = null; - } - } - - /** - * returns that this context or parent context have given url. - */ - public synchronized boolean contains(URL url){ - return (parent != null && parent.contains(url)) || classpath.contains(url); - } - - /** - * returns a size of classpath list, which this context and parent context have. - */ - public int getClasspathSize(){ - int count = classpath.size(); - if(parent != null){ - count += parent.getClasspathSize(); - } - return count; - } - - /** - * returns an array of all of classpathes include parent context. - */ - public synchronized URL[] getClasspathList(){ - List list = new ArrayList(); - for(URL url: this){ - list.add(url); - } - return list.toArray(new URL[list.size()]); - } - - /** - * clears all of classpathes of this context. not clear parent context. - * If you want to clear this context and parent context, use {@link #clearAll clearAll} method. - * @see clearAll - */ - public void clear(){ - classpath.clear(); - } - - /** - * clears all of classpathes of this context and parent context. - */ - public void clearAll(){ - clear(); - if(parent != null){ - parent.clearAll(); - } - } - - public Iterator iterator(){ - if(parent == null){ - return classpath.iterator(); - } - else{ - final Iterator parentIterator = parent.iterator(); - final Iterator thisIterator = classpath.iterator(); - return new Iterator(){ - public boolean hasNext(){ - boolean next = parentIterator.hasNext(); - if(!next){ - next = thisIterator.hasNext(); - } - return next; - } - public URL next(){ - URL nextObject = null; - if(parentIterator.hasNext()){ - nextObject = parentIterator.next(); - } - else{ - nextObject = thisIterator.next(); - } - return nextObject; - } - public void remove(){ - } - }; - } - } - - public synchronized ClassLoader createClassLoader(){ - if(loader == null){ - List list = new ArrayList(); - for(URL url: this){ - list.add(url); - } - - loader = new WarClassLoader(list.toArray(new URL[list.size()]), getClass().getClassLoader()); - } - return loader; - } - - public ClassFileEntry find(String className) throws ClassNotFoundException{ - ClassLoader loader = createClassLoader(); - - URL resource = loader.getResource(className.replace('.', '/') + ".class"); - if(resource != null){ - return new ClassFileEntry(className, resource); - } - return null; - } - - public Class findClass(String className) throws ClassNotFoundException{ - try{ - ClassLoader loader = createClassLoader(); - - return loader.loadClass(className); - } catch(NoClassDefFoundError e){ - throw new ClassNotFoundException(e.getMessage(), e); - } - } -} +package jp.sourceforge.stigmata.reader; + +/* + * $Id$ + */ + +import java.net.URL; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import jp.sourceforge.stigmata.utils.WarClassLoader; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ClasspathContext implements Iterable{ + private static ClasspathContext DEFAULT_CONTEXT = new ClasspathContext(false); + + private ClasspathContext parent; + private List classpath = new ArrayList(); + private ClassLoader loader = null; + + /** + * private constructor for root context. + */ + private ClasspathContext(boolean flag){ + } + + public ClasspathContext(){ + this(DEFAULT_CONTEXT); + } + + /** + * constructor with parent classpath context. + */ + public ClasspathContext(ClasspathContext parent){ + this.parent = parent; + } + + /** + * returns parent classpath context. + */ + public ClasspathContext getParent(){ + return parent; + } + + /** + * returns default classpath context. + */ + public static final ClasspathContext getDefaultContext(){ + return DEFAULT_CONTEXT; + } + + /** + * adds given url to this context. If this context already has given url or + * parent context has given url, this method do nothing. + */ + public synchronized void addClasspath(URL url){ + if(!contains(url)){ + classpath.add(url); + loader = null; + } + } + + /** + * returns that this context or parent context have given url. + */ + public synchronized boolean contains(URL url){ + return (parent != null && parent.contains(url)) || classpath.contains(url); + } + + /** + * returns a size of classpath list, which this context and parent context have. + */ + public int getClasspathSize(){ + int count = classpath.size(); + if(parent != null){ + count += parent.getClasspathSize(); + } + return count; + } + + /** + * returns an array of all of classpathes include parent context. + */ + public synchronized URL[] getClasspathList(){ + List list = new ArrayList(); + for(URL url: this){ + list.add(url); + } + return list.toArray(new URL[list.size()]); + } + + /** + * clears all of classpathes of this context. not clear parent context. + * If you want to clear this context and parent context, use {@link #clearAll clearAll} method. + * @see clearAll + */ + public void clear(){ + classpath.clear(); + } + + /** + * clears all of classpathes of this context and parent context. + */ + public void clearAll(){ + clear(); + if(parent != null){ + parent.clearAll(); + } + } + + public Iterator iterator(){ + if(parent == null){ + return classpath.iterator(); + } + else{ + final Iterator parentIterator = parent.iterator(); + final Iterator thisIterator = classpath.iterator(); + return new Iterator(){ + public boolean hasNext(){ + boolean next = parentIterator.hasNext(); + if(!next){ + next = thisIterator.hasNext(); + } + return next; + } + public URL next(){ + URL nextObject = null; + if(parentIterator.hasNext()){ + nextObject = parentIterator.next(); + } + else{ + nextObject = thisIterator.next(); + } + return nextObject; + } + public void remove(){ + } + }; + } + } + + public synchronized ClassLoader createClassLoader(){ + if(loader == null){ + List list = new ArrayList(); + for(URL url: this){ + list.add(url); + } + + loader = new WarClassLoader(list.toArray(new URL[list.size()]), getClass().getClassLoader()); + } + return loader; + } + + public ClassFileEntry find(String className) throws ClassNotFoundException{ + ClassLoader loader = createClassLoader(); + + URL resource = loader.getResource(className.replace('.', '/') + ".class"); + if(resource != null){ + return new ClassFileEntry(className, resource); + } + return null; + } + + public Class findClass(String className) throws ClassNotFoundException{ + try{ + ClassLoader loader = createClassLoader(); + + return loader.loadClass(className); + } catch(NoClassDefFoundError e){ + throw new ClassNotFoundException(e.getMessage(), e); + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/reader/DefaultClassFileArchive.java b/src/main/java/jp/sourceforge/stigmata/reader/DefaultClassFileArchive.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/reader/DefaultClassFileArchive.java rename to src/main/java/jp/sourceforge/stigmata/reader/DefaultClassFileArchive.java index fb7f41c..d646204 100644 --- a/src/main/java/jp/naist/se/stigmata/reader/DefaultClassFileArchive.java +++ b/src/main/java/jp/sourceforge/stigmata/reader/DefaultClassFileArchive.java @@ -1,117 +1,117 @@ -package jp.naist.se.stigmata.reader; - -/* - * $Id$ - */ - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.commons.EmptyVisitor; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class DefaultClassFileArchive implements ClassFileArchive{ - private File file; - private String className; - - public DefaultClassFileArchive(String file){ - this(new File(file)); - } - - public DefaultClassFileArchive(File file){ - this.file = file; - parseClassName(); - } - - public DefaultClassFileArchive(String file, String className){ - this(new File(file), className); - } - - public DefaultClassFileArchive(File file, String className){ - this.file = file; - this.className = className; - } - - public URL getLocation(){ - try { - return file.toURI().toURL(); - } catch (MalformedURLException ex) { - } - return null; - } - - public InputStream getInputStream(ClassFileEntry entry) throws IOException{ - return new FileInputStream(file); - } - - public Iterator iterator(){ - List list = new ArrayList(); - list.add(new ClassFileEntry(className, getLocation())); - - return list.iterator(); - } - - public boolean hasEntry(String className){ - return this.className.equals(className); - } - - public ClassFileEntry getEntry(String className) throws ClassNotFoundException{ - return new ClassFileEntry(className, getLocation()); - } - - public String getName(){ - return className; - } - - private void parseClassName(){ - FileInputStream in = null; - try { - in = new FileInputStream(file); - ClassReader reader = new ClassReader(in); - ClassNameExtractVisitor visitor = new ClassNameExtractVisitor(); - reader.accept(visitor, true); - - this.className = visitor.getClassName(); - } catch (FileNotFoundException ex) { - ex.printStackTrace(); - } catch (IOException ex) { - ex.printStackTrace(); - } finally{ - if(in != null){ - try{ - in.close(); - } catch(IOException e){ - } - } - } - } - - private static class ClassNameExtractVisitor extends EmptyVisitor{ - private String className; - - public String getClassName(){ - return className; - } - - @Override - public void visit(int version, int access, String name, String signature, - String superClassName, String[] interfaces){ - className = name; - } - } -} +package jp.sourceforge.stigmata.reader; + +/* + * $Id$ + */ + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.objectweb.asm.ClassReader; +import org.objectweb.asm.commons.EmptyVisitor; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class DefaultClassFileArchive implements ClassFileArchive{ + private File file; + private String className; + + public DefaultClassFileArchive(String file){ + this(new File(file)); + } + + public DefaultClassFileArchive(File file){ + this.file = file; + parseClassName(); + } + + public DefaultClassFileArchive(String file, String className){ + this(new File(file), className); + } + + public DefaultClassFileArchive(File file, String className){ + this.file = file; + this.className = className; + } + + public URL getLocation(){ + try { + return file.toURI().toURL(); + } catch (MalformedURLException ex) { + } + return null; + } + + public InputStream getInputStream(ClassFileEntry entry) throws IOException{ + return new FileInputStream(file); + } + + public Iterator iterator(){ + List list = new ArrayList(); + list.add(new ClassFileEntry(className, getLocation())); + + return list.iterator(); + } + + public boolean hasEntry(String className){ + return this.className.equals(className); + } + + public ClassFileEntry getEntry(String className) throws ClassNotFoundException{ + return new ClassFileEntry(className, getLocation()); + } + + public String getName(){ + return className; + } + + private void parseClassName(){ + FileInputStream in = null; + try { + in = new FileInputStream(file); + ClassReader reader = new ClassReader(in); + ClassNameExtractVisitor visitor = new ClassNameExtractVisitor(); + reader.accept(visitor, true); + + this.className = visitor.getClassName(); + } catch (FileNotFoundException ex) { + ex.printStackTrace(); + } catch (IOException ex) { + ex.printStackTrace(); + } finally{ + if(in != null){ + try{ + in.close(); + } catch(IOException e){ + } + } + } + } + + private static class ClassNameExtractVisitor extends EmptyVisitor{ + private String className; + + public String getClassName(){ + return className; + } + + @Override + public void visit(int version, int access, String name, String signature, + String superClassName, String[] interfaces){ + className = name; + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/reader/JarClassFileArchive.java b/src/main/java/jp/sourceforge/stigmata/reader/JarClassFileArchive.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/reader/JarClassFileArchive.java rename to src/main/java/jp/sourceforge/stigmata/reader/JarClassFileArchive.java index 117a53d..f896ede 100644 --- a/src/main/java/jp/naist/se/stigmata/reader/JarClassFileArchive.java +++ b/src/main/java/jp/sourceforge/stigmata/reader/JarClassFileArchive.java @@ -1,95 +1,95 @@ -package jp.naist.se.stigmata.reader; - -/* - * $Id$ - */ - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.List; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class JarClassFileArchive implements ClassFileArchive{ - private File file; - private JarFile jarfile; - private URL jarfileLocation; - - public JarClassFileArchive(String jarfile) throws IOException{ - this.file = new File(jarfile); - this.jarfile = new JarFile(jarfile); - this.jarfileLocation = file.toURI().toURL(); - } - - public URL getLocation(){ - return jarfileLocation; - } - - public String getName(){ - return file.getName(); - } - - public InputStream getInputStream(ClassFileEntry entry) throws IOException{ - if(hasEntry(entry.getClassName())){ - return jarfile.getInputStream(jarfile.getEntry(entry.getClassName().replace('.', '/') + ".class")); - } - return null; - } - - public Iterator iterator(){ - List list = new ArrayList(); - - for(Enumeration e = jarfile.entries(); e.hasMoreElements(); ){ - JarEntry entry = e.nextElement(); - if(entry.getName().endsWith(".class")){ - URL location = null; - try { - location = new URL("jar:" + getLocation() + "!/" + entry.getName()); - String className = entry.getName(); - className = className.substring(0, className.length() - ".class".length()); - className = className.replace('/', '.'); - - list.add(new ClassFileEntry(className, location)); - } catch (MalformedURLException ex) { - } - } - } - return list.iterator(); - } - - public boolean hasEntry(String className){ - return jarfile.getEntry(className.replace('.', '/') + ".class") != null; - } - - public ClassFileEntry getEntry(String className) throws ClassNotFoundException{ - if(hasEntry(className)){ - String entryName = className.replace('.', '/') + ".class"; - try{ - URL location = new URL("jar:" + jarfile.getName() + "!/" + entryName); - - return new ClassFileEntry(className, location); - } catch(MalformedURLException e){ - } - } - return null; - } - - Enumeration jarentries(){ - return jarfile.entries(); - } - - boolean hasJarEntry(String entry){ - return jarfile.getEntry(entry) != null; - } -} +package jp.sourceforge.stigmata.reader; + +/* + * $Id$ + */ + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.List; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class JarClassFileArchive implements ClassFileArchive{ + private File file; + private JarFile jarfile; + private URL jarfileLocation; + + public JarClassFileArchive(String jarfile) throws IOException{ + this.file = new File(jarfile); + this.jarfile = new JarFile(jarfile); + this.jarfileLocation = file.toURI().toURL(); + } + + public URL getLocation(){ + return jarfileLocation; + } + + public String getName(){ + return file.getName(); + } + + public InputStream getInputStream(ClassFileEntry entry) throws IOException{ + if(hasEntry(entry.getClassName())){ + return jarfile.getInputStream(jarfile.getEntry(entry.getClassName().replace('.', '/') + ".class")); + } + return null; + } + + public Iterator iterator(){ + List list = new ArrayList(); + + for(Enumeration e = jarfile.entries(); e.hasMoreElements(); ){ + JarEntry entry = e.nextElement(); + if(entry.getName().endsWith(".class")){ + URL location = null; + try { + location = new URL("jar:" + getLocation() + "!/" + entry.getName()); + String className = entry.getName(); + className = className.substring(0, className.length() - ".class".length()); + className = className.replace('/', '.'); + + list.add(new ClassFileEntry(className, location)); + } catch (MalformedURLException ex) { + } + } + } + return list.iterator(); + } + + public boolean hasEntry(String className){ + return jarfile.getEntry(className.replace('.', '/') + ".class") != null; + } + + public ClassFileEntry getEntry(String className) throws ClassNotFoundException{ + if(hasEntry(className)){ + String entryName = className.replace('.', '/') + ".class"; + try{ + URL location = new URL("jar:" + jarfile.getName() + "!/" + entryName); + + return new ClassFileEntry(className, location); + } catch(MalformedURLException e){ + } + } + return null; + } + + Enumeration jarentries(){ + return jarfile.entries(); + } + + boolean hasJarEntry(String entry){ + return jarfile.getEntry(entry) != null; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/reader/WarClassFileArchive.java b/src/main/java/jp/sourceforge/stigmata/reader/WarClassFileArchive.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/reader/WarClassFileArchive.java rename to src/main/java/jp/sourceforge/stigmata/reader/WarClassFileArchive.java index 33b84d4..be58635 100644 --- a/src/main/java/jp/naist/se/stigmata/reader/WarClassFileArchive.java +++ b/src/main/java/jp/sourceforge/stigmata/reader/WarClassFileArchive.java @@ -1,74 +1,74 @@ -package jp.naist.se.stigmata.reader; - -/* - * $Id$ - */ - -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.List; -import java.util.jar.JarEntry; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class WarClassFileArchive extends JarClassFileArchive{ - public WarClassFileArchive(String jarfile) throws IOException{ - super(jarfile); - } - - public InputStream getInputStream(ClassFileEntry entry) throws IOException{ - if(hasEntry(entry.getClassName())){ - return entry.getLocation().openStream(); - } - return null; - } - - public Iterator iterator(){ - List list = new ArrayList(); - - for(Enumeration e = jarentries(); e.hasMoreElements(); ){ - JarEntry entry = e.nextElement(); - if(entry.getName().endsWith(".class")){ - URL location = null; - try { - location = new URL("jar:" + getLocation() + "!/" + entry.getName()); - String className = entry.getName(); - className = className.substring("WEB-INF/classes/".length(), className.length() - ".class".length()); - className = className.replace('/', '.'); - - list.add(new ClassFileEntry(className, location)); - } catch (MalformedURLException ex) { - ex.printStackTrace(); - } - } - } - return list.iterator(); - } - - public boolean hasEntry(String className){ - return hasJarEntry("WEB-INF/classes/" + className.replace('.', '/') + ".class"); - } - - public ClassFileEntry getEntry(String className) throws ClassNotFoundException{ - if(hasEntry(className)){ - String entryName = className.replace('.', '/') + ".class"; - try{ - URL location = new URL("jar:" + getLocation() + "!/WEB-INF/classes/" + entryName); - - return new ClassFileEntry(className, location); - } catch(MalformedURLException e){ - } - } - return null; - } -} +package jp.sourceforge.stigmata.reader; + +/* + * $Id$ + */ + +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.List; +import java.util.jar.JarEntry; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class WarClassFileArchive extends JarClassFileArchive{ + public WarClassFileArchive(String jarfile) throws IOException{ + super(jarfile); + } + + public InputStream getInputStream(ClassFileEntry entry) throws IOException{ + if(hasEntry(entry.getClassName())){ + return entry.getLocation().openStream(); + } + return null; + } + + public Iterator iterator(){ + List list = new ArrayList(); + + for(Enumeration e = jarentries(); e.hasMoreElements(); ){ + JarEntry entry = e.nextElement(); + if(entry.getName().endsWith(".class")){ + URL location = null; + try { + location = new URL("jar:" + getLocation() + "!/" + entry.getName()); + String className = entry.getName(); + className = className.substring("WEB-INF/classes/".length(), className.length() - ".class".length()); + className = className.replace('/', '.'); + + list.add(new ClassFileEntry(className, location)); + } catch (MalformedURLException ex) { + ex.printStackTrace(); + } + } + } + return list.iterator(); + } + + public boolean hasEntry(String className){ + return hasJarEntry("WEB-INF/classes/" + className.replace('.', '/') + ".class"); + } + + public ClassFileEntry getEntry(String className) throws ClassNotFoundException{ + if(hasEntry(className)){ + String entryName = className.replace('.', '/') + ".class"; + try{ + URL location = new URL("jar:" + getLocation() + "!/WEB-INF/classes/" + entryName); + + return new ClassFileEntry(className, location); + } catch(MalformedURLException e){ + } + } + return null; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/result/AbstractComparisonResultSet.java b/src/main/java/jp/sourceforge/stigmata/result/AbstractComparisonResultSet.java similarity index 85% rename from src/main/java/jp/naist/se/stigmata/result/AbstractComparisonResultSet.java rename to src/main/java/jp/sourceforge/stigmata/result/AbstractComparisonResultSet.java index 713773b..6da04a9 100755 --- a/src/main/java/jp/naist/se/stigmata/result/AbstractComparisonResultSet.java +++ b/src/main/java/jp/sourceforge/stigmata/result/AbstractComparisonResultSet.java @@ -1,92 +1,92 @@ -package jp.naist.se.stigmata.result; - -/* - * $Id$ - */ - -import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.ComparisonResultSet; -import jp.naist.se.stigmata.ExtractionResultSet; - -/** - * Abstract class for ComparisonResultSet. - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public abstract class AbstractComparisonResultSet implements ComparisonResultSet{ - protected ExtractionResultSet extraction; - private int count = -1; - - public AbstractComparisonResultSet(ExtractionResultSet extraction){ - this.extraction = extraction; - } - - public abstract Iterator iterator(); - - public abstract Iterator pairSources(); - - public synchronized BirthmarkSet[] getPairSources(){ - return AbstractComparisonResultSet.getArrays(pairSources(), new BirthmarkSet[0]); - } - - public int getPairCount(){ - if(count < 0){ - int calculateCount = 0; - for(Iterator i = iterator(); i.hasNext(); ){ - calculateCount++; - i.next(); - } - this.count = calculateCount; - } - return count; - } - - public synchronized ComparisonPair[] getPairs(){ - return AbstractComparisonResultSet.getArrays(iterator(), new ComparisonPair[0]); - } - - public ComparisonPair getPairAt(int index){ - int currentIndex = 0; - for(Iterator i = iterator(); i.hasNext(); ){ - ComparisonPair pair = i.next(); - if(currentIndex == index){ - return pair; - } - currentIndex++; - } - return null; - } - - public BirthmarkContext getContext(){ - return extraction.getContext(); - } - - public BirthmarkEnvironment getEnvironment(){ - return extraction.getEnvironment(); - } - - @SuppressWarnings("unchecked") - static synchronized T[] getArrays(Iterator i, T[] array){ - List list = new ArrayList(); - while(i.hasNext()){ - list.add(i.next()); - } - - if(list.size() > array.length){ - array = (T[])Array.newInstance(array.getClass().getComponentType(), list.size()); - } - for(int index = 0; index < list.size(); index++){ - array[index] = (T)list.get(index); - } - return array; - } -} +package jp.sourceforge.stigmata.result; + +/* + * $Id$ + */ + +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.ComparisonResultSet; +import jp.sourceforge.stigmata.ExtractionResultSet; + +/** + * Abstract class for ComparisonResultSet. + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public abstract class AbstractComparisonResultSet implements ComparisonResultSet{ + protected ExtractionResultSet extraction; + private int count = -1; + + public AbstractComparisonResultSet(ExtractionResultSet extraction){ + this.extraction = extraction; + } + + public abstract Iterator iterator(); + + public abstract Iterator pairSources(); + + public synchronized BirthmarkSet[] getPairSources(){ + return AbstractComparisonResultSet.getArrays(pairSources(), new BirthmarkSet[0]); + } + + public int getPairCount(){ + if(count < 0){ + int calculateCount = 0; + for(Iterator i = iterator(); i.hasNext(); ){ + calculateCount++; + i.next(); + } + this.count = calculateCount; + } + return count; + } + + public synchronized ComparisonPair[] getPairs(){ + return AbstractComparisonResultSet.getArrays(iterator(), new ComparisonPair[0]); + } + + public ComparisonPair getPairAt(int index){ + int currentIndex = 0; + for(Iterator i = iterator(); i.hasNext(); ){ + ComparisonPair pair = i.next(); + if(currentIndex == index){ + return pair; + } + currentIndex++; + } + return null; + } + + public BirthmarkContext getContext(){ + return extraction.getContext(); + } + + public BirthmarkEnvironment getEnvironment(){ + return extraction.getEnvironment(); + } + + @SuppressWarnings("unchecked") + static synchronized T[] getArrays(Iterator i, T[] array){ + List list = new ArrayList(); + while(i.hasNext()){ + list.add(i.next()); + } + + if(list.size() > array.length){ + array = (T[])Array.newInstance(array.getClass().getComponentType(), list.size()); + } + for(int index = 0; index < list.size(); index++){ + array[index] = (T)list.get(index); + } + return array; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/result/AbstractExtractionResultSet.java b/src/main/java/jp/sourceforge/stigmata/result/AbstractExtractionResultSet.java similarity index 90% rename from src/main/java/jp/naist/se/stigmata/result/AbstractExtractionResultSet.java rename to src/main/java/jp/sourceforge/stigmata/result/AbstractExtractionResultSet.java index dadcbdb..a883e7e 100755 --- a/src/main/java/jp/naist/se/stigmata/result/AbstractExtractionResultSet.java +++ b/src/main/java/jp/sourceforge/stigmata/result/AbstractExtractionResultSet.java @@ -1,201 +1,201 @@ -package jp.naist.se.stigmata.result; - -/* - * $Id$ - */ - -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Iterator; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkEnvironment; -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. - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public abstract class AbstractExtractionResultSet implements ExtractionResultSet{ - private BirthmarkContext context; - private boolean tableType = true; - private String id; - - /** - * constructor. - */ - public AbstractExtractionResultSet(BirthmarkContext context){ - this(context, true); - } - - /** - * constructor. - */ - public AbstractExtractionResultSet(BirthmarkContext context, boolean tableType){ - this.context = context; - id = generateId(); - } - - void setId(String id){ - this.id = id; - } - - public String getId(){ - return id; - } - - /** - * returns a birthmark environment. - */ - public BirthmarkEnvironment getEnvironment(){ - return context.getEnvironment(); - } - - /** - * returns a birthmark context. - */ - public BirthmarkContext getContext(){ - return context; - } - - public abstract void addBirthmarkSet(ExtractionTarget target, BirthmarkSet set) throws BirthmarkStoreException; - - public abstract void removeBirthmarkSet(ExtractionTarget target, BirthmarkSet set); - - public abstract void removeAllBirthmarkSets(ExtractionTarget target); - - public abstract int getBirthmarkSetSize(ExtractionTarget target); - - public abstract Iterator birthmarkSets(ExtractionTarget target); - - /** - * returns the sum of birthmark set size this instance has. - * getBirthmarkSetSize(ExtractionTarget.TARGET_BOTH) - */ - public int getBirthmarkSetSize(){ - return getBirthmarkSetSize(ExtractionTarget.TARGET_BOTH); - } - - /** - * returns an iterator. - * birthmarkSets(ExtractionTarget.TARGET_BOTH) - */ - public Iterator iterator(){ - return birthmarkSets(ExtractionTarget.TARGET_BOTH); - } - - /** - * returns a birthmark set related of given index. - * getBirthmarkSet(ExtractionTarget.TARGET_BOTH, index) - */ - public BirthmarkSet getBirthmarkSet(int index){ - return getBirthmarkSet(ExtractionTarget.TARGET_BOTH, index); - } - - /** - * returns a birthmark set related with given name. - * getBirthmarkSet(ExtractionTarget.TARGET_BOTH, name) - */ - public BirthmarkSet getBirthmarkSet(String name){ - return getBirthmarkSet(ExtractionTarget.TARGET_BOTH, name); - } - - /** - * returns all of birthmark sets. - * getBirthmarkSets(ExtractionTarget.TARGET_BOTH) - */ - public BirthmarkSet[] getBirthmarkSets(){ - return getBirthmarkSets(ExtractionTarget.TARGET_BOTH); - } - - /** - * remove specified birthmark set from this instance. - * removeBirthmarkSet(ExtractionTarget.TARGET_BOTH, bs) - */ - public void removeBirthmarkSet(BirthmarkSet bs){ - removeBirthmarkSet(ExtractionTarget.TARGET_BOTH, bs); - } - - /** - * remove all of birthmark sets. - * removeBirthmarkSet(ExtractionTarget.TARGET_BOTH) - */ - public void removeAllBirthmarkSets(){ - removeAllBirthmarkSets(ExtractionTarget.TARGET_BOTH); - } - - /** - * returns an array of extracted birthmark types. - */ - public String[] getBirthmarkTypes(){ - return context.getBirthmarkTypes(); - } - - /** - * returns an unit of extraction from. - */ - public ExtractionUnit getExtractionUnit(){ - return context.getExtractionUnit(); - } - - /** - * returns the birthmark set at the specified position in the specified target. - */ - public BirthmarkSet getBirthmarkSet(ExtractionTarget target, int index){ - int currentIndex = 0; - for(Iterator i = birthmarkSets(target); i.hasNext(); ){ - if(currentIndex == index){ - return i.next(); - } - i.next(); - currentIndex++; - } - return null; - } - - /** - * returns the birthmark set related with the specified name in the specified target. - */ - public BirthmarkSet getBirthmarkSet(ExtractionTarget target, String setname){ - for(Iterator i = birthmarkSets(target); i.hasNext(); ){ - BirthmarkSet bs = i.next(); - if(bs.getName().equals(setname)){ - return bs; - } - } - return null; - } - - /** - * @return all of BirthmarkSet this instance have. elements is obtained from birthmarkSet. - */ - public synchronized BirthmarkSet[] getBirthmarkSets(ExtractionTarget target){ - return AbstractComparisonResultSet.getArrays(birthmarkSets(target), new BirthmarkSet[0]); - } - - public void setBirthmarkSets(ExtractionTarget target, BirthmarkSet[] sets) throws BirthmarkStoreException{ - removeAllBirthmarkSets(target); - for(int i = 0; i < sets.length; i++){ - addBirthmarkSet(target, sets[i]); - } - } - - public boolean isTableType(){ - return tableType; - } - - public void setTableType(boolean flag){ - this.tableType = flag; - } - - protected static String generateId(){ - SimpleDateFormat cdf = new SimpleDateFormat("yyyyMMdd-HHmmss.SSS"); - return cdf.format(Calendar.getInstance().getTime()); - } -} +package jp.sourceforge.stigmata.result; + +/* + * $Id$ + */ + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Iterator; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.BirthmarkStoreException; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.ExtractionTarget; +import jp.sourceforge.stigmata.ExtractionUnit; + +/** + * Abstract class for ExtractionResultSet. + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public abstract class AbstractExtractionResultSet implements ExtractionResultSet{ + private BirthmarkContext context; + private boolean tableType = true; + private String id; + + /** + * constructor. + */ + public AbstractExtractionResultSet(BirthmarkContext context){ + this(context, true); + } + + /** + * constructor. + */ + public AbstractExtractionResultSet(BirthmarkContext context, boolean tableType){ + this.context = context; + id = generateId(); + } + + void setId(String id){ + this.id = id; + } + + public String getId(){ + return id; + } + + /** + * returns a birthmark environment. + */ + public BirthmarkEnvironment getEnvironment(){ + return context.getEnvironment(); + } + + /** + * returns a birthmark context. + */ + public BirthmarkContext getContext(){ + return context; + } + + public abstract void addBirthmarkSet(ExtractionTarget target, BirthmarkSet set) throws BirthmarkStoreException; + + public abstract void removeBirthmarkSet(ExtractionTarget target, BirthmarkSet set); + + public abstract void removeAllBirthmarkSets(ExtractionTarget target); + + public abstract int getBirthmarkSetSize(ExtractionTarget target); + + public abstract Iterator birthmarkSets(ExtractionTarget target); + + /** + * returns the sum of birthmark set size this instance has. + * getBirthmarkSetSize(ExtractionTarget.TARGET_BOTH) + */ + public int getBirthmarkSetSize(){ + return getBirthmarkSetSize(ExtractionTarget.TARGET_BOTH); + } + + /** + * returns an iterator. + * birthmarkSets(ExtractionTarget.TARGET_BOTH) + */ + public Iterator iterator(){ + return birthmarkSets(ExtractionTarget.TARGET_BOTH); + } + + /** + * returns a birthmark set related of given index. + * getBirthmarkSet(ExtractionTarget.TARGET_BOTH, index) + */ + public BirthmarkSet getBirthmarkSet(int index){ + return getBirthmarkSet(ExtractionTarget.TARGET_BOTH, index); + } + + /** + * returns a birthmark set related with given name. + * getBirthmarkSet(ExtractionTarget.TARGET_BOTH, name) + */ + public BirthmarkSet getBirthmarkSet(String name){ + return getBirthmarkSet(ExtractionTarget.TARGET_BOTH, name); + } + + /** + * returns all of birthmark sets. + * getBirthmarkSets(ExtractionTarget.TARGET_BOTH) + */ + public BirthmarkSet[] getBirthmarkSets(){ + return getBirthmarkSets(ExtractionTarget.TARGET_BOTH); + } + + /** + * remove specified birthmark set from this instance. + * removeBirthmarkSet(ExtractionTarget.TARGET_BOTH, bs) + */ + public void removeBirthmarkSet(BirthmarkSet bs){ + removeBirthmarkSet(ExtractionTarget.TARGET_BOTH, bs); + } + + /** + * remove all of birthmark sets. + * removeBirthmarkSet(ExtractionTarget.TARGET_BOTH) + */ + public void removeAllBirthmarkSets(){ + removeAllBirthmarkSets(ExtractionTarget.TARGET_BOTH); + } + + /** + * returns an array of extracted birthmark types. + */ + public String[] getBirthmarkTypes(){ + return context.getBirthmarkTypes(); + } + + /** + * returns an unit of extraction from. + */ + public ExtractionUnit getExtractionUnit(){ + return context.getExtractionUnit(); + } + + /** + * returns the birthmark set at the specified position in the specified target. + */ + public BirthmarkSet getBirthmarkSet(ExtractionTarget target, int index){ + int currentIndex = 0; + for(Iterator i = birthmarkSets(target); i.hasNext(); ){ + if(currentIndex == index){ + return i.next(); + } + i.next(); + currentIndex++; + } + return null; + } + + /** + * returns the birthmark set related with the specified name in the specified target. + */ + public BirthmarkSet getBirthmarkSet(ExtractionTarget target, String setname){ + for(Iterator i = birthmarkSets(target); i.hasNext(); ){ + BirthmarkSet bs = i.next(); + if(bs.getName().equals(setname)){ + return bs; + } + } + return null; + } + + /** + * @return all of BirthmarkSet this instance have. elements is obtained from birthmarkSet. + */ + public synchronized BirthmarkSet[] getBirthmarkSets(ExtractionTarget target){ + return AbstractComparisonResultSet.getArrays(birthmarkSets(target), new BirthmarkSet[0]); + } + + public void setBirthmarkSets(ExtractionTarget target, BirthmarkSet[] sets) throws BirthmarkStoreException{ + removeAllBirthmarkSets(target); + for(int i = 0; i < sets.length; i++){ + addBirthmarkSet(target, sets[i]); + } + } + + public boolean isTableType(){ + return tableType; + } + + public void setTableType(boolean flag){ + this.tableType = flag; + } + + protected static String generateId(){ + SimpleDateFormat cdf = new SimpleDateFormat("yyyyMMdd-HHmmss.SSS"); + return cdf.format(Calendar.getInstance().getTime()); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/result/CertainPairComparisonResultSet.java b/src/main/java/jp/sourceforge/stigmata/result/CertainPairComparisonResultSet.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/result/CertainPairComparisonResultSet.java rename to src/main/java/jp/sourceforge/stigmata/result/CertainPairComparisonResultSet.java index 0f16882..b5f96b2 100644 --- a/src/main/java/jp/naist/se/stigmata/result/CertainPairComparisonResultSet.java +++ b/src/main/java/jp/sourceforge/stigmata/result/CertainPairComparisonResultSet.java @@ -1,263 +1,263 @@ -package jp.naist.se.stigmata.result; - -/* - * $Id$ - */ - -import java.net.URL; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.BirthmarkStoreException; -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.ExtractionTarget; -import jp.naist.se.stigmata.result.history.ExtractedBirthmarkServiceManager; - -/** - * Concrete class for ComparisonResultSet. This instance compare class files by - * certain pair. The pair is guessed by system with class name, or specified by - * user. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class CertainPairComparisonResultSet extends AbstractComparisonResultSet{ - private int compareCount = -1; - private Collection sources = null; - - public CertainPairComparisonResultSet(ExtractionResultSet extraction){ - super(extraction); - } - - public CertainPairComparisonResultSet(ExtractionResultSet extraction, Map nameMap){ - super(extraction); - BirthmarkContext context = extraction.getContext(); - for(Map.Entry entry: nameMap.entrySet()){ - context.addNameMapping(entry.getKey(), entry.getValue()); - } - } - - /** - * This constructor is the comparison pair list is specified. - */ - public CertainPairComparisonResultSet(ComparisonPair[] pairs, BirthmarkContext context){ - super(createExtractionResultSet(pairs, context)); - } - - /** - * This constructor is the comparison pair was guessed with class name. - */ - public CertainPairComparisonResultSet(BirthmarkSet[] targetX, - BirthmarkSet[] targetY, BirthmarkContext context){ - super(createExtractionResultSet(targetX, targetY, context)); - } - - /** - * This constructor is the comparison pair was specified as mapping. - */ - public CertainPairComparisonResultSet(BirthmarkSet[] targetX, BirthmarkSet[] targetY, - Map mapping, BirthmarkContext context){ - super(createExtractionResultSet(targetX, targetY, context)); - - for(Map.Entry entry : mapping.entrySet()){ - context.addNameMapping(entry.getKey(), entry.getValue()); - } - } - - /** - * return comparison count. - */ - @Override - public int getPairCount(){ - BirthmarkContext context = getContext(); - if(compareCount < 0){ - int count = 0; - if(context.hasNameMapping()){ - count = context.getNameMappingCount(); - } - else{ - count = super.getPairCount(); - } - compareCount = count; - } - return compareCount; - } - - /** - * return the iterator of each pair. - */ - @Override - public Iterator iterator(){ - Iterator iterator = null; - final BirthmarkContext context = getContext(); - if(context.hasNameMapping()){ - iterator = new NameMappingIterator(extraction); - } - else{ - iterator = new NameFindIterator(extraction); - } - return iterator; - } - - @Override - public Iterator pairSources(){ - if(sources == null){ - sources = createSources(); - } - return sources.iterator(); - } - - public BirthmarkSet[] getPairSources(){ - if(sources == null){ - sources = createSources(); - } - return sources.toArray(new BirthmarkSet[sources.size()]); - } - - private Collection createSources(){ - Map map = new HashMap(); - for(Iterator i = iterator(); i.hasNext(); ){ - ComparisonPair pair = i.next(); - addToMap(map, pair.getTarget1()); - addToMap(map, pair.getTarget2()); - } - return map.values(); - } - - private void addToMap(Map map, BirthmarkSet set){ - map.put(set.getLocation(), set); - } - - private static ExtractionResultSet createExtractionResultSet(ComparisonPair[] pairs, BirthmarkContext context){ - ExtractedBirthmarkServiceManager historyManager = context.getEnvironment().getHistoryManager(); - ExtractionResultSet ers = historyManager.createDefaultResultSet(context); - ers.setTableType(false); - try{ - for(int i = 0; i < pairs.length; i++){ - ers.addBirthmarkSet(ExtractionTarget.TARGET_X, pairs[i].getTarget1()); - ers.addBirthmarkSet(ExtractionTarget.TARGET_Y, pairs[i].getTarget2()); - } - }catch(BirthmarkStoreException e){ - throw new InternalError("never thrown BirthmarkStoreException is thrown"); - } - return ers; - } - - private static ExtractionResultSet createExtractionResultSet(BirthmarkSet[] targetX, BirthmarkSet[] targetY, BirthmarkContext context){ - ExtractionResultSet ers = context.getEnvironment().getHistoryManager().createDefaultResultSet(context); - ers.setTableType(true); - try{ - ers.setBirthmarkSets(ExtractionTarget.TARGET_X, targetX); - ers.setBirthmarkSets(ExtractionTarget.TARGET_Y, targetY); - }catch(BirthmarkStoreException e){ - throw new InternalError("never thrown BirthmarkStoreException is thrown"); - } - return ers; - } - - private static class NameFindIterator implements Iterator{ - private ComparisonPair next; - private BirthmarkSet setX = null; - private Iterator iteratorX; - private Iterator iteratorY; - private ExtractionResultSet extraction; - - public NameFindIterator(ExtractionResultSet extraction){ - this.extraction = extraction; - iteratorX = extraction.birthmarkSets(ExtractionTarget.TARGET_X); - setX = iteratorX.next(); - next = findNext(); - } - - public boolean hasNext(){ - return next != null; - } - - public ComparisonPair next(){ - ComparisonPair returnValue = next; - next = findNext(); - return returnValue; - } - - public void remove(){ - } - - private ComparisonPair findNext(){ - ComparisonPair next = null; - if(iteratorY == null || !iteratorY.hasNext()){ - iteratorY = extraction.birthmarkSets(ExtractionTarget.TARGET_Y); - } - - if(setX != null){ - for(; iteratorY.hasNext(); ){ - BirthmarkSet setY = iteratorY.next(); - if(setX.getName().equals(setY.getName())){ - next = new ComparisonPair(setX, setY, extraction.getContext()); - break; - } - } - - if(iteratorX.hasNext()){ - setX = iteratorX.next(); - } - else{ - setX = null; - } - if(next == null){ - next = findNext(); - } - } - return next; - } - }; - - private static class NameMappingIterator implements Iterator{ - private Iterator> names; - private ComparisonPair nextPair; - private ExtractionResultSet ers; - - public NameMappingIterator(ExtractionResultSet ers){ - this.ers = ers; - names = ers.getContext().nameMappingEntries(); - nextPair = findNextPair(); - } - - public ComparisonPair next(){ - ComparisonPair cp = nextPair; - nextPair = findNextPair(); - return cp; - } - - public boolean hasNext(){ - return nextPair != null; - } - - public void remove(){ - } - - private ComparisonPair findNextPair(){ - ComparisonPair pair = null; - if(names.hasNext()){ - Map.Entry entry = names.next(); - String n1 = entry.getKey(); - String n2 = entry.getValue(); - - BirthmarkSet bs1 = ers.getBirthmarkSet(ExtractionTarget.TARGET_X, n1); - BirthmarkSet bs2 = ers.getBirthmarkSet(ExtractionTarget.TARGET_Y, n2); - - if(bs1 == null || bs2 == null){ - pair = findNextPair(); - } - else{ - pair = new ComparisonPair(bs1, bs2, ers.getContext()); - } - } - return pair; - } - }; -} +package jp.sourceforge.stigmata.result; + +/* + * $Id$ + */ + +import java.net.URL; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.BirthmarkStoreException; +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.ExtractionTarget; +import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkServiceManager; + +/** + * Concrete class for ComparisonResultSet. This instance compare class files by + * certain pair. The pair is guessed by system with class name, or specified by + * user. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class CertainPairComparisonResultSet extends AbstractComparisonResultSet{ + private int compareCount = -1; + private Collection sources = null; + + public CertainPairComparisonResultSet(ExtractionResultSet extraction){ + super(extraction); + } + + public CertainPairComparisonResultSet(ExtractionResultSet extraction, Map nameMap){ + super(extraction); + BirthmarkContext context = extraction.getContext(); + for(Map.Entry entry: nameMap.entrySet()){ + context.addNameMapping(entry.getKey(), entry.getValue()); + } + } + + /** + * This constructor is the comparison pair list is specified. + */ + public CertainPairComparisonResultSet(ComparisonPair[] pairs, BirthmarkContext context){ + super(createExtractionResultSet(pairs, context)); + } + + /** + * This constructor is the comparison pair was guessed with class name. + */ + public CertainPairComparisonResultSet(BirthmarkSet[] targetX, + BirthmarkSet[] targetY, BirthmarkContext context){ + super(createExtractionResultSet(targetX, targetY, context)); + } + + /** + * This constructor is the comparison pair was specified as mapping. + */ + public CertainPairComparisonResultSet(BirthmarkSet[] targetX, BirthmarkSet[] targetY, + Map mapping, BirthmarkContext context){ + super(createExtractionResultSet(targetX, targetY, context)); + + for(Map.Entry entry : mapping.entrySet()){ + context.addNameMapping(entry.getKey(), entry.getValue()); + } + } + + /** + * return comparison count. + */ + @Override + public int getPairCount(){ + BirthmarkContext context = getContext(); + if(compareCount < 0){ + int count = 0; + if(context.hasNameMapping()){ + count = context.getNameMappingCount(); + } + else{ + count = super.getPairCount(); + } + compareCount = count; + } + return compareCount; + } + + /** + * return the iterator of each pair. + */ + @Override + public Iterator iterator(){ + Iterator iterator = null; + final BirthmarkContext context = getContext(); + if(context.hasNameMapping()){ + iterator = new NameMappingIterator(extraction); + } + else{ + iterator = new NameFindIterator(extraction); + } + return iterator; + } + + @Override + public Iterator pairSources(){ + if(sources == null){ + sources = createSources(); + } + return sources.iterator(); + } + + public BirthmarkSet[] getPairSources(){ + if(sources == null){ + sources = createSources(); + } + return sources.toArray(new BirthmarkSet[sources.size()]); + } + + private Collection createSources(){ + Map map = new HashMap(); + for(Iterator i = iterator(); i.hasNext(); ){ + ComparisonPair pair = i.next(); + addToMap(map, pair.getTarget1()); + addToMap(map, pair.getTarget2()); + } + return map.values(); + } + + private void addToMap(Map map, BirthmarkSet set){ + map.put(set.getLocation(), set); + } + + private static ExtractionResultSet createExtractionResultSet(ComparisonPair[] pairs, BirthmarkContext context){ + ExtractedBirthmarkServiceManager historyManager = context.getEnvironment().getHistoryManager(); + ExtractionResultSet ers = historyManager.createDefaultResultSet(context); + ers.setTableType(false); + try{ + for(int i = 0; i < pairs.length; i++){ + ers.addBirthmarkSet(ExtractionTarget.TARGET_X, pairs[i].getTarget1()); + ers.addBirthmarkSet(ExtractionTarget.TARGET_Y, pairs[i].getTarget2()); + } + }catch(BirthmarkStoreException e){ + throw new InternalError("never thrown BirthmarkStoreException is thrown"); + } + return ers; + } + + private static ExtractionResultSet createExtractionResultSet(BirthmarkSet[] targetX, BirthmarkSet[] targetY, BirthmarkContext context){ + ExtractionResultSet ers = context.getEnvironment().getHistoryManager().createDefaultResultSet(context); + ers.setTableType(true); + try{ + ers.setBirthmarkSets(ExtractionTarget.TARGET_X, targetX); + ers.setBirthmarkSets(ExtractionTarget.TARGET_Y, targetY); + }catch(BirthmarkStoreException e){ + throw new InternalError("never thrown BirthmarkStoreException is thrown"); + } + return ers; + } + + private static class NameFindIterator implements Iterator{ + private ComparisonPair next; + private BirthmarkSet setX = null; + private Iterator iteratorX; + private Iterator iteratorY; + private ExtractionResultSet extraction; + + public NameFindIterator(ExtractionResultSet extraction){ + this.extraction = extraction; + iteratorX = extraction.birthmarkSets(ExtractionTarget.TARGET_X); + setX = iteratorX.next(); + next = findNext(); + } + + public boolean hasNext(){ + return next != null; + } + + public ComparisonPair next(){ + ComparisonPair returnValue = next; + next = findNext(); + return returnValue; + } + + public void remove(){ + } + + private ComparisonPair findNext(){ + ComparisonPair next = null; + if(iteratorY == null || !iteratorY.hasNext()){ + iteratorY = extraction.birthmarkSets(ExtractionTarget.TARGET_Y); + } + + if(setX != null){ + for(; iteratorY.hasNext(); ){ + BirthmarkSet setY = iteratorY.next(); + if(setX.getName().equals(setY.getName())){ + next = new ComparisonPair(setX, setY, extraction.getContext()); + break; + } + } + + if(iteratorX.hasNext()){ + setX = iteratorX.next(); + } + else{ + setX = null; + } + if(next == null){ + next = findNext(); + } + } + return next; + } + }; + + private static class NameMappingIterator implements Iterator{ + private Iterator> names; + private ComparisonPair nextPair; + private ExtractionResultSet ers; + + public NameMappingIterator(ExtractionResultSet ers){ + this.ers = ers; + names = ers.getContext().nameMappingEntries(); + nextPair = findNextPair(); + } + + public ComparisonPair next(){ + ComparisonPair cp = nextPair; + nextPair = findNextPair(); + return cp; + } + + public boolean hasNext(){ + return nextPair != null; + } + + public void remove(){ + } + + private ComparisonPair findNextPair(){ + ComparisonPair pair = null; + if(names.hasNext()){ + Map.Entry entry = names.next(); + String n1 = entry.getKey(); + String n2 = entry.getValue(); + + BirthmarkSet bs1 = ers.getBirthmarkSet(ExtractionTarget.TARGET_X, n1); + BirthmarkSet bs2 = ers.getBirthmarkSet(ExtractionTarget.TARGET_Y, n2); + + if(bs1 == null || bs2 == null){ + pair = findNextPair(); + } + else{ + pair = new ComparisonPair(bs1, bs2, ers.getContext()); + } + } + return pair; + } + }; +} diff --git a/src/main/java/jp/naist/se/stigmata/result/MemoryExtractedBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/result/MemoryExtractedBirthmarkService.java similarity index 64% rename from src/main/java/jp/naist/se/stigmata/result/MemoryExtractedBirthmarkService.java rename to src/main/java/jp/sourceforge/stigmata/result/MemoryExtractedBirthmarkService.java index 58f054e..128158a 100755 --- a/src/main/java/jp/naist/se/stigmata/result/MemoryExtractedBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/result/MemoryExtractedBirthmarkService.java @@ -1,40 +1,40 @@ -package jp.naist.se.stigmata.result; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkStoreTarget; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.result.history.ExtractedBirthmarkHistory; -import jp.naist.se.stigmata.result.history.MemoryExtractedBirthmarkHistory; -import jp.naist.se.stigmata.spi.ExtractedBirthmarkSpi; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class MemoryExtractedBirthmarkService implements ExtractedBirthmarkSpi{ - private MemoryExtractedBirthmarkHistory history = new MemoryExtractedBirthmarkHistory(); - - public ExtractionResultSet createResultSet(BirthmarkContext context){ - MemoryExtractionResultSet mers = new MemoryExtractionResultSet(context); - history.addResultSet(mers); - return mers; - } - - public ExtractedBirthmarkHistory getHistory(String parameter){ - return history; - } - - public ExtractionResultSet getResultSet(String id){ - return history.getResultSet(id); - } - - public BirthmarkStoreTarget getTarget(){ - return BirthmarkStoreTarget.MEMORY; - } - -} +package jp.sourceforge.stigmata.result; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkStoreTarget; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkHistory; +import jp.sourceforge.stigmata.result.history.MemoryExtractedBirthmarkHistory; +import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class MemoryExtractedBirthmarkService implements ExtractedBirthmarkSpi{ + private MemoryExtractedBirthmarkHistory history = new MemoryExtractedBirthmarkHistory(); + + public ExtractionResultSet createResultSet(BirthmarkContext context){ + MemoryExtractionResultSet mers = new MemoryExtractionResultSet(context); + history.addResultSet(mers); + return mers; + } + + public ExtractedBirthmarkHistory getHistory(String parameter){ + return history; + } + + public ExtractionResultSet getResultSet(String id){ + return history.getResultSet(id); + } + + public BirthmarkStoreTarget getTarget(){ + return BirthmarkStoreTarget.MEMORY; + } + +} diff --git a/src/main/java/jp/naist/se/stigmata/result/MemoryExtractionResultSet.java b/src/main/java/jp/sourceforge/stigmata/result/MemoryExtractionResultSet.java similarity index 90% rename from src/main/java/jp/naist/se/stigmata/result/MemoryExtractionResultSet.java rename to src/main/java/jp/sourceforge/stigmata/result/MemoryExtractionResultSet.java index 75374b1..41e212b 100755 --- a/src/main/java/jp/naist/se/stigmata/result/MemoryExtractionResultSet.java +++ b/src/main/java/jp/sourceforge/stigmata/result/MemoryExtractionResultSet.java @@ -1,163 +1,163 @@ -package jp.naist.se.stigmata.result; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.BirthmarkStoreTarget; -import jp.naist.se.stigmata.ExtractionTarget; -import jp.naist.se.stigmata.utils.MultipleIterator; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class MemoryExtractionResultSet extends AbstractExtractionResultSet{ - private List targetX = new ArrayList(); - private List targetY = new ArrayList(); - - MemoryExtractionResultSet(BirthmarkContext context){ - this(context, true); - } - - MemoryExtractionResultSet(BirthmarkContext context, boolean tableType){ - super(context, tableType); - } - - public BirthmarkStoreTarget getStoreTarget(){ - return BirthmarkStoreTarget.MEMORY; - } - - public void removeAllBirthmarkSets(ExtractionTarget target){ - switch(target){ - case TARGET_X: - case TARGET_XY: - targetX.clear(); - break; - case TARGET_Y: - targetY.clear(); - break; - case TARGET_BOTH: - default: - throw new IllegalArgumentException("unknown target: " + target); - } - } - - public void removeBirthmarkSet(ExtractionTarget target, BirthmarkSet set){ - switch(target){ - case TARGET_X: - case TARGET_XY: - targetX.remove(set); - break; - case TARGET_Y: - targetY.remove(set); - break; - case TARGET_BOTH: - default: - throw new IllegalArgumentException("unknown target: " + target); - } - } - - public void addBirthmarkSet(ExtractionTarget target, BirthmarkSet set){ - switch(target){ - case TARGET_X: - case TARGET_XY: - targetX.add(set); - break; - case TARGET_Y: - targetY.add(set); - break; - case TARGET_BOTH: - default: - throw new IllegalArgumentException("unknown target: " + target); - } - } - - public Iterator birthmarkSets(ExtractionTarget target){ - Iterator iterator; - switch(target){ - case TARGET_X: - case TARGET_XY: - iterator = targetX.iterator(); - break; - case TARGET_Y: - iterator = targetY.iterator(); - break; - case TARGET_BOTH: - default: - MultipleIterator i = new MultipleIterator(); - i.add(targetX.iterator()); - i.add(targetY.iterator()); - iterator = i; - break; - } - return iterator; - } - public int getBirthmarkSetSize(ExtractionTarget target){ - int count = 0; - switch(target){ - case TARGET_X: - case TARGET_XY: - count = targetX.size(); - break; - case TARGET_Y: - count = targetY.size(); - break; - case TARGET_BOTH: - default: - count = targetX.size() + targetY.size(); - break; - } - return count; - } - - public BirthmarkSet getBirthmarkSet(ExtractionTarget target, int index){ - BirthmarkSet set; - switch(target){ - case TARGET_X: - set = targetX.get(index); - break; - case TARGET_Y: - set = targetY.get(index); - break; - case TARGET_XY: - case TARGET_BOTH: - default: - if(index < targetX.size()){ - set = targetX.get(index); - } - else{ - set = targetY.get(index - targetX.size()); - } - break; - } - return set; - } - - public BirthmarkSet[] getBirthmarkSets(ExtractionTarget target){ - BirthmarkSet[] sets; - switch(target){ - case TARGET_X: - case TARGET_XY: - sets = targetX.toArray(new BirthmarkSet[targetX.size()]); - break; - case TARGET_Y: - sets = targetY.toArray(new BirthmarkSet[targetX.size()]); - break; - case TARGET_BOTH: - default: - sets = new BirthmarkSet[targetX.size() + targetY.size()]; - System.arraycopy(targetX.toArray(new BirthmarkSet[targetX.size()]), 0, sets, 0, targetX.size()); - System.arraycopy(targetY.toArray(new BirthmarkSet[targetY.size()]), 0, sets, targetX.size(), targetY.size()); - break; - } - return sets; - } -} +package jp.sourceforge.stigmata.result; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.BirthmarkStoreTarget; +import jp.sourceforge.stigmata.ExtractionTarget; +import jp.sourceforge.stigmata.utils.MultipleIterator; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class MemoryExtractionResultSet extends AbstractExtractionResultSet{ + private List targetX = new ArrayList(); + private List targetY = new ArrayList(); + + MemoryExtractionResultSet(BirthmarkContext context){ + this(context, true); + } + + MemoryExtractionResultSet(BirthmarkContext context, boolean tableType){ + super(context, tableType); + } + + public BirthmarkStoreTarget getStoreTarget(){ + return BirthmarkStoreTarget.MEMORY; + } + + public void removeAllBirthmarkSets(ExtractionTarget target){ + switch(target){ + case TARGET_X: + case TARGET_XY: + targetX.clear(); + break; + case TARGET_Y: + targetY.clear(); + break; + case TARGET_BOTH: + default: + throw new IllegalArgumentException("unknown target: " + target); + } + } + + public void removeBirthmarkSet(ExtractionTarget target, BirthmarkSet set){ + switch(target){ + case TARGET_X: + case TARGET_XY: + targetX.remove(set); + break; + case TARGET_Y: + targetY.remove(set); + break; + case TARGET_BOTH: + default: + throw new IllegalArgumentException("unknown target: " + target); + } + } + + public void addBirthmarkSet(ExtractionTarget target, BirthmarkSet set){ + switch(target){ + case TARGET_X: + case TARGET_XY: + targetX.add(set); + break; + case TARGET_Y: + targetY.add(set); + break; + case TARGET_BOTH: + default: + throw new IllegalArgumentException("unknown target: " + target); + } + } + + public Iterator birthmarkSets(ExtractionTarget target){ + Iterator iterator; + switch(target){ + case TARGET_X: + case TARGET_XY: + iterator = targetX.iterator(); + break; + case TARGET_Y: + iterator = targetY.iterator(); + break; + case TARGET_BOTH: + default: + MultipleIterator i = new MultipleIterator(); + i.add(targetX.iterator()); + i.add(targetY.iterator()); + iterator = i; + break; + } + return iterator; + } + public int getBirthmarkSetSize(ExtractionTarget target){ + int count = 0; + switch(target){ + case TARGET_X: + case TARGET_XY: + count = targetX.size(); + break; + case TARGET_Y: + count = targetY.size(); + break; + case TARGET_BOTH: + default: + count = targetX.size() + targetY.size(); + break; + } + return count; + } + + public BirthmarkSet getBirthmarkSet(ExtractionTarget target, int index){ + BirthmarkSet set; + switch(target){ + case TARGET_X: + set = targetX.get(index); + break; + case TARGET_Y: + set = targetY.get(index); + break; + case TARGET_XY: + case TARGET_BOTH: + default: + if(index < targetX.size()){ + set = targetX.get(index); + } + else{ + set = targetY.get(index - targetX.size()); + } + break; + } + return set; + } + + public BirthmarkSet[] getBirthmarkSets(ExtractionTarget target){ + BirthmarkSet[] sets; + switch(target){ + case TARGET_X: + case TARGET_XY: + sets = targetX.toArray(new BirthmarkSet[targetX.size()]); + break; + case TARGET_Y: + sets = targetY.toArray(new BirthmarkSet[targetX.size()]); + break; + case TARGET_BOTH: + default: + sets = new BirthmarkSet[targetX.size() + targetY.size()]; + System.arraycopy(targetX.toArray(new BirthmarkSet[targetX.size()]), 0, sets, 0, targetX.size()); + System.arraycopy(targetY.toArray(new BirthmarkSet[targetY.size()]), 0, sets, targetX.size(), targetY.size()); + break; + } + return sets; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/result/RDBExtractedBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/result/RDBExtractedBirthmarkService.java similarity index 64% rename from src/main/java/jp/naist/se/stigmata/result/RDBExtractedBirthmarkService.java rename to src/main/java/jp/sourceforge/stigmata/result/RDBExtractedBirthmarkService.java index 32012fc..791dca1 100755 --- a/src/main/java/jp/naist/se/stigmata/result/RDBExtractedBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/result/RDBExtractedBirthmarkService.java @@ -1,42 +1,42 @@ -package jp.naist.se.stigmata.result; - -/* - * $Id$ - */ - -import javax.sql.DataSource; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkStoreTarget; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.result.history.ExtractedBirthmarkHistory; -import jp.naist.se.stigmata.result.history.RDBExtractedBirthmarkHistory; -import jp.naist.se.stigmata.spi.ExtractedBirthmarkSpi; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class RDBExtractedBirthmarkService implements ExtractedBirthmarkSpi{ - private DataSource source; - - public RDBExtractedBirthmarkService(){ - } - - public ExtractionResultSet createResultSet(BirthmarkContext context){ - return new RDBExtractionResultSet(context); - } - - public ExtractedBirthmarkHistory getHistory(String parameter){ - return new RDBExtractedBirthmarkHistory(source); - } - - public ExtractionResultSet getResultSet(String id){ - return new RDBExtractionResultSet(source, id); - } - - public BirthmarkStoreTarget getTarget(){ - return BirthmarkStoreTarget.RDB; - } -} +package jp.sourceforge.stigmata.result; + +/* + * $Id$ + */ + +import javax.sql.DataSource; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkStoreTarget; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkHistory; +import jp.sourceforge.stigmata.result.history.RDBExtractedBirthmarkHistory; +import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class RDBExtractedBirthmarkService implements ExtractedBirthmarkSpi{ + private DataSource source; + + public RDBExtractedBirthmarkService(){ + } + + public ExtractionResultSet createResultSet(BirthmarkContext context){ + return new RDBExtractionResultSet(context); + } + + public ExtractedBirthmarkHistory getHistory(String parameter){ + return new RDBExtractedBirthmarkHistory(source); + } + + public ExtractionResultSet getResultSet(String id){ + return new RDBExtractionResultSet(source, id); + } + + public BirthmarkStoreTarget getTarget(){ + return BirthmarkStoreTarget.RDB; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/result/RDBExtractionResultSet.java b/src/main/java/jp/sourceforge/stigmata/result/RDBExtractionResultSet.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/result/RDBExtractionResultSet.java rename to src/main/java/jp/sourceforge/stigmata/result/RDBExtractionResultSet.java index ede0aa5..d337014 100755 --- a/src/main/java/jp/naist/se/stigmata/result/RDBExtractionResultSet.java +++ b/src/main/java/jp/sourceforge/stigmata/result/RDBExtractionResultSet.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.result; +package jp.sourceforge.stigmata.result; /* * $Id$ @@ -19,16 +19,16 @@ import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkContext; -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.ExtractionTarget; -import jp.naist.se.stigmata.ExtractionUnit; -import jp.naist.se.stigmata.Stigmata; -import jp.naist.se.stigmata.utils.ArrayIterator; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.BirthmarkStoreException; +import jp.sourceforge.stigmata.BirthmarkStoreTarget; +import jp.sourceforge.stigmata.ExtractionTarget; +import jp.sourceforge.stigmata.ExtractionUnit; +import jp.sourceforge.stigmata.Stigmata; +import jp.sourceforge.stigmata.utils.ArrayIterator; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; diff --git a/src/main/java/jp/naist/se/stigmata/result/RoundRobinComparisonResultSet.java b/src/main/java/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/result/RoundRobinComparisonResultSet.java rename to src/main/java/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.java index bd9c633..87f754c 100644 --- a/src/main/java/jp/naist/se/stigmata/result/RoundRobinComparisonResultSet.java +++ b/src/main/java/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.java @@ -1,222 +1,222 @@ -package jp.naist.se.stigmata.result; - -/* - * $Id$ - */ - -import java.net.URL; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.ExtractionTarget; - -/** - * Concrete class for ComparisonResultSet. This instance compare class files by round robin. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class RoundRobinComparisonResultSet extends AbstractComparisonResultSet{ - private int compareCount = -1; - private boolean tableType; - private boolean samePair = false; - - /** - * constructor. if user gives { a, b, c, } as holders1, then - * the instance (created by this constructor) compares { a<->b, a<->c, - * b<->c, }. - */ - public RoundRobinComparisonResultSet(ExtractionResultSet resultset){ - this(resultset, false); - } - - /** - * constructor. if user gives { a, b, c, } as holders1, then the - * instance (created by this constructor when samePair is true) - * compares { a<->a, b<->a, b<->b, c<->a, c<->b, c<->c, }. - * Otherwise, the instance compares { a<->b, a<->c, b<->c, } when - * samePair is false. - */ - public RoundRobinComparisonResultSet(ExtractionResultSet resultset, boolean samePair){ - super(resultset); - this.tableType = resultset.isTableType(); - setCompareSamePair(samePair); - } - - /** - * @return environment - */ - public BirthmarkEnvironment getEnvironment(){ - return extraction.getEnvironment(); - } - - public BirthmarkContext getContext(){ - return extraction.getContext(); - } - - /** - * update same pair comparing flag unless two birthmark array is setted. - */ - public void setCompareSamePair(boolean flag){ - samePair = flag; - if(!extraction.isTableType()){ - int size = extraction.getBirthmarkSetSize(ExtractionTarget.TARGET_XY); - if(flag){ - if(size > 1) compareCount = (size - 1) * (size - 2) + 1; - else if(size == 1) compareCount = 0; - else throw new IllegalStateException("no extraction result"); - } - else{ - if(size > 1) compareCount = (size - 1) * (size - 2) + 1 + size; - else if(size == 1) compareCount = 1; - else throw new IllegalStateException("no extraction result"); - } - } - else if(compareCount == -1){ - compareCount = extraction.getBirthmarkSetSize(ExtractionTarget.TARGET_X) - * extraction.getBirthmarkSetSize(ExtractionTarget.TARGET_Y); - } - } - - public boolean isCompareSamePair(){ - return samePair; - } - - /** - * returns the compare count of birthmark sets. - */ - public int getPairCount(){ - return compareCount; - } - - /** - * return a iterator of whole comparison. - */ - public Iterator iterator(){ - if(tableType){ - return new CompareTableIterator(); - } - else{ - return new CompareTriangleIterator(); - } - } - - public BirthmarkSet[] getPairSources(){ - List list = new ArrayList(); - for(Iterator i = pairSources(); i.hasNext(); ){ - list.add(i.next()); - } - - return list.toArray(new BirthmarkSet[list.size()]); - } - - public Iterator pairSources(){ - Map map = new HashMap(); - if(extraction.isTableType()){ - for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_X); i.hasNext(); ){ - BirthmarkSet bs = i.next(); - map.put(bs.getLocation(), bs); - } - for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_Y); i.hasNext(); ){ - BirthmarkSet bs = i.next(); - map.put(bs.getLocation(), bs); - } - } - else{ - for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_XY); i.hasNext(); ){ - BirthmarkSet bs = i.next(); - map.put(bs.getLocation(), bs); - } - } - return map.values().iterator(); - } - - private class CompareTableIterator implements Iterator{ - private Iterator ix = extraction.birthmarkSets(ExtractionTarget.TARGET_X); - private Iterator iy = extraction.birthmarkSets(ExtractionTarget.TARGET_Y); - private BirthmarkSet x = ix.next(); - - public boolean hasNext(){ - return ix.hasNext() || iy.hasNext(); - } - - public ComparisonPair next(){ - if(!iy.hasNext()){ - iy = extraction.birthmarkSets(ExtractionTarget.TARGET_Y); - x = ix.next(); - } - BirthmarkSet y = iy.next(); - - return new ComparisonPair(x, y, extraction.getContext()); - } - - public void remove(){ - } - } - - /** - * iterator class. - */ - private class CompareTriangleIterator implements Iterator{ - private List names = new ArrayList(); - private Iterator iterator; - private int index = 0; - private BirthmarkSet bs; - private ComparisonPair next; - - public CompareTriangleIterator(){ - iterator = extraction.birthmarkSets(ExtractionTarget.TARGET_XY); - next = findNext(); - } - public boolean hasNext(){ - return next != null; - } - - public ComparisonPair next(){ - ComparisonPair returnValue = next; - next = findNext(); - return returnValue; - } - - private ComparisonPair findNext(){ - if(bs == null && iterator.hasNext()){ - bs = iterator.next(); - names.add(bs.getName()); - } - if((isCompareSamePair() && index == names.size()) || (!isCompareSamePair() && index == (names.size() - 1))){ - index = 0; - if(iterator.hasNext()){ - bs = iterator.next(); - names.add(bs.getName()); - } - else{ - return null; - } - } - String name = names.get(index); - BirthmarkSet bsX = extraction.getBirthmarkSet(ExtractionTarget.TARGET_XY, name); - ComparisonPair pair = null; - if(bsX != null){ - pair = new ComparisonPair(bsX, bs, extraction.getContext()); - } - index++; - - if(pair == null){ - pair = findNext(); - } - - return pair; - } - - public void remove(){ - } - } -} +package jp.sourceforge.stigmata.result; + +/* + * $Id$ + */ + +import java.net.URL; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.ExtractionTarget; + +/** + * Concrete class for ComparisonResultSet. This instance compare class files by round robin. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class RoundRobinComparisonResultSet extends AbstractComparisonResultSet{ + private int compareCount = -1; + private boolean tableType; + private boolean samePair = false; + + /** + * constructor. if user gives { a, b, c, } as holders1, then + * the instance (created by this constructor) compares { a<->b, a<->c, + * b<->c, }. + */ + public RoundRobinComparisonResultSet(ExtractionResultSet resultset){ + this(resultset, false); + } + + /** + * constructor. if user gives { a, b, c, } as holders1, then the + * instance (created by this constructor when samePair is true) + * compares { a<->a, b<->a, b<->b, c<->a, c<->b, c<->c, }. + * Otherwise, the instance compares { a<->b, a<->c, b<->c, } when + * samePair is false. + */ + public RoundRobinComparisonResultSet(ExtractionResultSet resultset, boolean samePair){ + super(resultset); + this.tableType = resultset.isTableType(); + setCompareSamePair(samePair); + } + + /** + * @return environment + */ + public BirthmarkEnvironment getEnvironment(){ + return extraction.getEnvironment(); + } + + public BirthmarkContext getContext(){ + return extraction.getContext(); + } + + /** + * update same pair comparing flag unless two birthmark array is setted. + */ + public void setCompareSamePair(boolean flag){ + samePair = flag; + if(!extraction.isTableType()){ + int size = extraction.getBirthmarkSetSize(ExtractionTarget.TARGET_XY); + if(flag){ + if(size > 1) compareCount = (size - 1) * (size - 2) + 1; + else if(size == 1) compareCount = 0; + else throw new IllegalStateException("no extraction result"); + } + else{ + if(size > 1) compareCount = (size - 1) * (size - 2) + 1 + size; + else if(size == 1) compareCount = 1; + else throw new IllegalStateException("no extraction result"); + } + } + else if(compareCount == -1){ + compareCount = extraction.getBirthmarkSetSize(ExtractionTarget.TARGET_X) + * extraction.getBirthmarkSetSize(ExtractionTarget.TARGET_Y); + } + } + + public boolean isCompareSamePair(){ + return samePair; + } + + /** + * returns the compare count of birthmark sets. + */ + public int getPairCount(){ + return compareCount; + } + + /** + * return a iterator of whole comparison. + */ + public Iterator iterator(){ + if(tableType){ + return new CompareTableIterator(); + } + else{ + return new CompareTriangleIterator(); + } + } + + public BirthmarkSet[] getPairSources(){ + List list = new ArrayList(); + for(Iterator i = pairSources(); i.hasNext(); ){ + list.add(i.next()); + } + + return list.toArray(new BirthmarkSet[list.size()]); + } + + public Iterator pairSources(){ + Map map = new HashMap(); + if(extraction.isTableType()){ + for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_X); i.hasNext(); ){ + BirthmarkSet bs = i.next(); + map.put(bs.getLocation(), bs); + } + for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_Y); i.hasNext(); ){ + BirthmarkSet bs = i.next(); + map.put(bs.getLocation(), bs); + } + } + else{ + for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_XY); i.hasNext(); ){ + BirthmarkSet bs = i.next(); + map.put(bs.getLocation(), bs); + } + } + return map.values().iterator(); + } + + private class CompareTableIterator implements Iterator{ + private Iterator ix = extraction.birthmarkSets(ExtractionTarget.TARGET_X); + private Iterator iy = extraction.birthmarkSets(ExtractionTarget.TARGET_Y); + private BirthmarkSet x = ix.next(); + + public boolean hasNext(){ + return ix.hasNext() || iy.hasNext(); + } + + public ComparisonPair next(){ + if(!iy.hasNext()){ + iy = extraction.birthmarkSets(ExtractionTarget.TARGET_Y); + x = ix.next(); + } + BirthmarkSet y = iy.next(); + + return new ComparisonPair(x, y, extraction.getContext()); + } + + public void remove(){ + } + } + + /** + * iterator class. + */ + private class CompareTriangleIterator implements Iterator{ + private List names = new ArrayList(); + private Iterator iterator; + private int index = 0; + private BirthmarkSet bs; + private ComparisonPair next; + + public CompareTriangleIterator(){ + iterator = extraction.birthmarkSets(ExtractionTarget.TARGET_XY); + next = findNext(); + } + public boolean hasNext(){ + return next != null; + } + + public ComparisonPair next(){ + ComparisonPair returnValue = next; + next = findNext(); + return returnValue; + } + + private ComparisonPair findNext(){ + if(bs == null && iterator.hasNext()){ + bs = iterator.next(); + names.add(bs.getName()); + } + if((isCompareSamePair() && index == names.size()) || (!isCompareSamePair() && index == (names.size() - 1))){ + index = 0; + if(iterator.hasNext()){ + bs = iterator.next(); + names.add(bs.getName()); + } + else{ + return null; + } + } + String name = names.get(index); + BirthmarkSet bsX = extraction.getBirthmarkSet(ExtractionTarget.TARGET_XY, name); + ComparisonPair pair = null; + if(bsX != null){ + pair = new ComparisonPair(bsX, bs, extraction.getContext()); + } + index++; + + if(pair == null){ + pair = findNext(); + } + + return pair; + } + + public void remove(){ + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/result/SingleExtractionResultSet.java b/src/main/java/jp/sourceforge/stigmata/result/SingleExtractionResultSet.java similarity index 85% rename from src/main/java/jp/naist/se/stigmata/result/SingleExtractionResultSet.java rename to src/main/java/jp/sourceforge/stigmata/result/SingleExtractionResultSet.java index 18ee3c0..05982f4 100755 --- a/src/main/java/jp/naist/se/stigmata/result/SingleExtractionResultSet.java +++ b/src/main/java/jp/sourceforge/stigmata/result/SingleExtractionResultSet.java @@ -1,101 +1,101 @@ -package jp.naist.se.stigmata.result; - -/* - * $Id$ - */ - -import java.util.Iterator; -import java.util.NoSuchElementException; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.BirthmarkStoreTarget; -import jp.naist.se.stigmata.ExtractionTarget; -import jp.naist.se.stigmata.utils.NullIterator; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class SingleExtractionResultSet extends AbstractExtractionResultSet{ - private BirthmarkSet bs; - - public SingleExtractionResultSet(BirthmarkContext context, BirthmarkSet bs){ - super(context, false); - this.bs = bs; - } - - public SingleExtractionResultSet(BirthmarkContext context){ - super(context, false); - } - - public BirthmarkStoreTarget getStoreTarget(){ - return BirthmarkStoreTarget.MEMORY_SINGLE; - } - - public void addBirthmarkSet(ExtractionTarget target, BirthmarkSet set){ - this.bs = set; - } - - public void setBirthmarkSets(ExtractionTarget target, BirthmarkSet[] sets){ - this.bs = sets[0]; - } - - public Iterator birthmarkSets(ExtractionTarget target){ - if(bs != null){ - return new SingleIterator(bs); - } - return new NullIterator(); - } - - public void removeBirthmarkSet(ExtractionTarget target, BirthmarkSet set){ - bs = null; - } - - public void removeAllBirthmarkSets(ExtractionTarget target){ - bs = null; - } - - public BirthmarkSet getBirthmarkSet(ExtractionTarget target, int index){ - if(index != 0){ - throw new IndexOutOfBoundsException("illegal index: " + index); - } - return bs; - } - - public BirthmarkSet getBirthmarkSet(ExtractionTarget target, String name){ - if(bs.getName().equals(name)){ - return bs; - } - return null; - } - - public int getBirthmarkSetSize(ExtractionTarget target){ - return 1; - } - - private static class SingleIterator implements Iterator{ - private boolean first = true; - private BirthmarkSet bs; - - public SingleIterator(BirthmarkSet bs){ - this.bs = bs; - } - - public BirthmarkSet next(){ - if(first){ - first = false; - return bs; - } - throw new NoSuchElementException(); - } - - public boolean hasNext(){ - return first; - } - - public void remove(){ - } - } -} +package jp.sourceforge.stigmata.result; + +/* + * $Id$ + */ + +import java.util.Iterator; +import java.util.NoSuchElementException; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.BirthmarkStoreTarget; +import jp.sourceforge.stigmata.ExtractionTarget; +import jp.sourceforge.stigmata.utils.NullIterator; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class SingleExtractionResultSet extends AbstractExtractionResultSet{ + private BirthmarkSet bs; + + public SingleExtractionResultSet(BirthmarkContext context, BirthmarkSet bs){ + super(context, false); + this.bs = bs; + } + + public SingleExtractionResultSet(BirthmarkContext context){ + super(context, false); + } + + public BirthmarkStoreTarget getStoreTarget(){ + return BirthmarkStoreTarget.MEMORY_SINGLE; + } + + public void addBirthmarkSet(ExtractionTarget target, BirthmarkSet set){ + this.bs = set; + } + + public void setBirthmarkSets(ExtractionTarget target, BirthmarkSet[] sets){ + this.bs = sets[0]; + } + + public Iterator birthmarkSets(ExtractionTarget target){ + if(bs != null){ + return new SingleIterator(bs); + } + return new NullIterator(); + } + + public void removeBirthmarkSet(ExtractionTarget target, BirthmarkSet set){ + bs = null; + } + + public void removeAllBirthmarkSets(ExtractionTarget target){ + bs = null; + } + + public BirthmarkSet getBirthmarkSet(ExtractionTarget target, int index){ + if(index != 0){ + throw new IndexOutOfBoundsException("illegal index: " + index); + } + return bs; + } + + public BirthmarkSet getBirthmarkSet(ExtractionTarget target, String name){ + if(bs.getName().equals(name)){ + return bs; + } + return null; + } + + public int getBirthmarkSetSize(ExtractionTarget target){ + return 1; + } + + private static class SingleIterator implements Iterator{ + private boolean first = true; + private BirthmarkSet bs; + + public SingleIterator(BirthmarkSet bs){ + this.bs = bs; + } + + public BirthmarkSet next(){ + if(first){ + first = false; + return bs; + } + throw new NoSuchElementException(); + } + + public boolean hasNext(){ + return first; + } + + public void remove(){ + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/result/XmlFileExtractedBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractedBirthmarkService.java similarity index 73% rename from src/main/java/jp/naist/se/stigmata/result/XmlFileExtractedBirthmarkService.java rename to src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractedBirthmarkService.java index 7d9d7c8..f021e96 100755 --- a/src/main/java/jp/naist/se/stigmata/result/XmlFileExtractedBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractedBirthmarkService.java @@ -1,60 +1,60 @@ -package jp.naist.se.stigmata.result; - -/* - * $Id$ - */ - -import java.io.File; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkStoreTarget; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.result.history.ExtractedBirthmarkHistory; -import jp.naist.se.stigmata.result.history.XmlFileExtractedBirthmarkHistory; -import jp.naist.se.stigmata.spi.ExtractedBirthmarkSpi; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class XmlFileExtractedBirthmarkService implements ExtractedBirthmarkSpi{ - private File defaultBaseDirectory; - - public XmlFileExtractedBirthmarkService(){ - defaultBaseDirectory = new File( - BirthmarkEnvironment.getStigmataHome(), - "extracted_birthmarks" - ); - } - - public ExtractionResultSet createResultSet(BirthmarkContext context){ - return createResultSet(context, defaultBaseDirectory); - } - - public ExtractionResultSet createResultSet(BirthmarkContext context, File base){ - return new XmlFileExtractionResultSet( - context, new File(base, AbstractExtractionResultSet.generateId()) - ); - } - - public ExtractedBirthmarkHistory getHistory(String parameter){ - File file = defaultBaseDirectory; - if(parameter != null){ - file = new File(parameter); - } - if(!file.exists()){ - file.mkdirs(); - } - return new XmlFileExtractedBirthmarkHistory(file); - } - - public ExtractionResultSet getResultSet(String id){ - return new XmlFileExtractionResultSet(new File(id)); - } - - public BirthmarkStoreTarget getTarget(){ - return BirthmarkStoreTarget.XMLFILE; - } -} +package jp.sourceforge.stigmata.result; + +/* + * $Id$ + */ + +import java.io.File; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkStoreTarget; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkHistory; +import jp.sourceforge.stigmata.result.history.XmlFileExtractedBirthmarkHistory; +import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class XmlFileExtractedBirthmarkService implements ExtractedBirthmarkSpi{ + private File defaultBaseDirectory; + + public XmlFileExtractedBirthmarkService(){ + defaultBaseDirectory = new File( + BirthmarkEnvironment.getStigmataHome(), + "extracted_birthmarks" + ); + } + + public ExtractionResultSet createResultSet(BirthmarkContext context){ + return createResultSet(context, defaultBaseDirectory); + } + + public ExtractionResultSet createResultSet(BirthmarkContext context, File base){ + return new XmlFileExtractionResultSet( + context, new File(base, AbstractExtractionResultSet.generateId()) + ); + } + + public ExtractedBirthmarkHistory getHistory(String parameter){ + File file = defaultBaseDirectory; + if(parameter != null){ + file = new File(parameter); + } + if(!file.exists()){ + file.mkdirs(); + } + return new XmlFileExtractedBirthmarkHistory(file); + } + + public ExtractionResultSet getResultSet(String id){ + return new XmlFileExtractionResultSet(new File(id)); + } + + public BirthmarkStoreTarget getTarget(){ + return BirthmarkStoreTarget.XMLFILE; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/result/XmlFileExtractionResultSet.java b/src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractionResultSet.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/result/XmlFileExtractionResultSet.java rename to src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractionResultSet.java index e8bcc93..a2fbde3 100755 --- a/src/main/java/jp/naist/se/stigmata/result/XmlFileExtractionResultSet.java +++ b/src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractionResultSet.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.result; +package jp.sourceforge.stigmata.result; /* * $Id$ @@ -27,21 +27,21 @@ import javax.xml.stream.events.EndElement; import javax.xml.stream.events.StartElement; import javax.xml.stream.events.XMLEvent; -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkElement; -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; -import jp.naist.se.stigmata.ui.swing.ExtensionFilter; -import jp.naist.se.stigmata.utils.MultipleIterator; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.BirthmarkStoreException; +import jp.sourceforge.stigmata.BirthmarkStoreTarget; +import jp.sourceforge.stigmata.ComparisonMethod; +import jp.sourceforge.stigmata.ExtractionTarget; +import jp.sourceforge.stigmata.ExtractionUnit; +import jp.sourceforge.stigmata.Stigmata; +import jp.sourceforge.stigmata.printer.xml.ExtractionResultSetXmlPrinter; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.ui.swing.ExtensionFilter; +import jp.sourceforge.stigmata.utils.MultipleIterator; /** * This class manages extracted birthmarks as xml file. diff --git a/src/main/java/jp/naist/se/stigmata/result/history/ExtractedBirthmarkHistory.java b/src/main/java/jp/sourceforge/stigmata/result/history/ExtractedBirthmarkHistory.java similarity index 89% rename from src/main/java/jp/naist/se/stigmata/result/history/ExtractedBirthmarkHistory.java rename to src/main/java/jp/sourceforge/stigmata/result/history/ExtractedBirthmarkHistory.java index fdec766..406dfe2 100755 --- a/src/main/java/jp/naist/se/stigmata/result/history/ExtractedBirthmarkHistory.java +++ b/src/main/java/jp/sourceforge/stigmata/result/history/ExtractedBirthmarkHistory.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.result.history; +package jp.sourceforge.stigmata.result.history; /* * $Id$ @@ -6,7 +6,7 @@ package jp.naist.se.stigmata.result.history; import java.util.Iterator; -import jp.naist.se.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.ExtractionResultSet; /** * This interface indicates extracted history management. diff --git a/src/main/java/jp/naist/se/stigmata/result/history/ExtractedBirthmarkServiceManager.java b/src/main/java/jp/sourceforge/stigmata/result/history/ExtractedBirthmarkServiceManager.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/result/history/ExtractedBirthmarkServiceManager.java rename to src/main/java/jp/sourceforge/stigmata/result/history/ExtractedBirthmarkServiceManager.java index a98f559..a976208 100755 --- a/src/main/java/jp/naist/se/stigmata/result/history/ExtractedBirthmarkServiceManager.java +++ b/src/main/java/jp/sourceforge/stigmata/result/history/ExtractedBirthmarkServiceManager.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.result.history; +package jp.sourceforge.stigmata.result.history; /* * $Id$ @@ -14,11 +14,11 @@ import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkStoreTarget; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.spi.ExtractedBirthmarkSpi; +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkStoreTarget; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi; /** * diff --git a/src/main/java/jp/naist/se/stigmata/result/history/MemoryExtractedBirthmarkHistory.java b/src/main/java/jp/sourceforge/stigmata/result/history/MemoryExtractedBirthmarkHistory.java similarity index 84% rename from src/main/java/jp/naist/se/stigmata/result/history/MemoryExtractedBirthmarkHistory.java rename to src/main/java/jp/sourceforge/stigmata/result/history/MemoryExtractedBirthmarkHistory.java index e97bd94..b434b0d 100755 --- a/src/main/java/jp/naist/se/stigmata/result/history/MemoryExtractedBirthmarkHistory.java +++ b/src/main/java/jp/sourceforge/stigmata/result/history/MemoryExtractedBirthmarkHistory.java @@ -1,49 +1,49 @@ -package jp.naist.se.stigmata.result.history; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.result.MemoryExtractionResultSet; - -public class MemoryExtractedBirthmarkHistory implements ExtractedBirthmarkHistory{ - private Map map = new HashMap(); - - public MemoryExtractedBirthmarkHistory(){ - } - - public MemoryExtractedBirthmarkHistory(MemoryExtractionResultSet[] mersArray){ - for(MemoryExtractionResultSet mers: mersArray){ - map.put(mers.getId(), mers); - } - } - - public void addResultSet(MemoryExtractionResultSet mers){ - map.put(mers.getId(), mers); - } - - public void deleteResultSet(String id){ - map.remove(id); - } - - public void deleteAllResultSets(){ - map.clear(); - } - - public ExtractionResultSet getResultSet(String id){ - return map.get(id); - } - - public synchronized String[] getResultSetIds(){ - return map.keySet().toArray(new String[map.size()]); - } - - public Iterator iterator(){ - return Collections.unmodifiableSet(map.keySet()).iterator(); - } - - public void refresh(){ - } -} +package jp.sourceforge.stigmata.result.history; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.result.MemoryExtractionResultSet; + +public class MemoryExtractedBirthmarkHistory implements ExtractedBirthmarkHistory{ + private Map map = new HashMap(); + + public MemoryExtractedBirthmarkHistory(){ + } + + public MemoryExtractedBirthmarkHistory(MemoryExtractionResultSet[] mersArray){ + for(MemoryExtractionResultSet mers: mersArray){ + map.put(mers.getId(), mers); + } + } + + public void addResultSet(MemoryExtractionResultSet mers){ + map.put(mers.getId(), mers); + } + + public void deleteResultSet(String id){ + map.remove(id); + } + + public void deleteAllResultSets(){ + map.clear(); + } + + public ExtractionResultSet getResultSet(String id){ + return map.get(id); + } + + public synchronized String[] getResultSetIds(){ + return map.keySet().toArray(new String[map.size()]); + } + + public Iterator iterator(){ + return Collections.unmodifiableSet(map.keySet()).iterator(); + } + + public void refresh(){ + } +} diff --git a/src/main/java/jp/naist/se/stigmata/result/history/RDBExtractedBirthmarkHistory.java b/src/main/java/jp/sourceforge/stigmata/result/history/RDBExtractedBirthmarkHistory.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/result/history/RDBExtractedBirthmarkHistory.java rename to src/main/java/jp/sourceforge/stigmata/result/history/RDBExtractedBirthmarkHistory.java index 5c71460..f710c81 100755 --- a/src/main/java/jp/naist/se/stigmata/result/history/RDBExtractedBirthmarkHistory.java +++ b/src/main/java/jp/sourceforge/stigmata/result/history/RDBExtractedBirthmarkHistory.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.result.history; +package jp.sourceforge.stigmata.result.history; /* * $Id$ @@ -9,10 +9,10 @@ import java.util.Iterator; import javax.sql.DataSource; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.result.RDBExtractionResultSet; -import jp.naist.se.stigmata.result.RDBExtractionResultSet.StringHandler; -import jp.naist.se.stigmata.utils.ArrayIterator; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.result.RDBExtractionResultSet; +import jp.sourceforge.stigmata.result.RDBExtractionResultSet.StringHandler; +import jp.sourceforge.stigmata.utils.ArrayIterator; import org.apache.commons.dbutils.QueryRunner; diff --git a/src/main/java/jp/naist/se/stigmata/result/history/XmlFileExtractedBirthmarkHistory.java b/src/main/java/jp/sourceforge/stigmata/result/history/XmlFileExtractedBirthmarkHistory.java similarity index 88% rename from src/main/java/jp/naist/se/stigmata/result/history/XmlFileExtractedBirthmarkHistory.java rename to src/main/java/jp/sourceforge/stigmata/result/history/XmlFileExtractedBirthmarkHistory.java index ea2d31a..ad5391a 100755 --- a/src/main/java/jp/naist/se/stigmata/result/history/XmlFileExtractedBirthmarkHistory.java +++ b/src/main/java/jp/sourceforge/stigmata/result/history/XmlFileExtractedBirthmarkHistory.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.result.history; +package jp.sourceforge.stigmata.result.history; /* * $Id$ @@ -9,10 +9,10 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.result.XmlFileExtractionResultSet; -import jp.naist.se.stigmata.utils.Utility; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.result.XmlFileExtractionResultSet; +import jp.sourceforge.stigmata.utils.Utility; /** * diff --git a/src/main/java/jp/naist/se/stigmata/spi/AbstractServiceProvider.java b/src/main/java/jp/sourceforge/stigmata/spi/AbstractServiceProvider.java similarity index 91% rename from src/main/java/jp/naist/se/stigmata/spi/AbstractServiceProvider.java rename to src/main/java/jp/sourceforge/stigmata/spi/AbstractServiceProvider.java index b4f3559..fe60c61 100644 --- a/src/main/java/jp/naist/se/stigmata/spi/AbstractServiceProvider.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/AbstractServiceProvider.java @@ -1,38 +1,38 @@ -package jp.naist.se.stigmata.spi; - -/* - * $Id$ - */ - -import java.util.Locale; - -/** - * Base abstract class for birthmark SPI. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public abstract class AbstractServiceProvider implements ServiceProvider{ - - /** - * returning implementation vendor name of this SPI. - */ - public String getDescription(){ - return getDescription(Locale.getDefault()); - } - - /** - * returning implementation vendor name of this SPI. - */ - public String getVendorName(){ - return getClass().getPackage().getImplementationVendor(); - } - - /** - * returning version of this SPI. - */ - public String getVersion(){ - return getClass().getPackage().getImplementationVersion(); - } - -} +package jp.sourceforge.stigmata.spi; + +/* + * $Id$ + */ + +import java.util.Locale; + +/** + * Base abstract class for birthmark SPI. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public abstract class AbstractServiceProvider implements ServiceProvider{ + + /** + * returning implementation vendor name of this SPI. + */ + public String getDescription(){ + return getDescription(Locale.getDefault()); + } + + /** + * returning implementation vendor name of this SPI. + */ + public String getVendorName(){ + return getClass().getPackage().getImplementationVendor(); + } + + /** + * returning version of this SPI. + */ + public String getVersion(){ + return getClass().getPackage().getImplementationVersion(); + } + +} diff --git a/src/main/java/jp/naist/se/stigmata/spi/BirthmarkComparatorSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorSpi.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/spi/BirthmarkComparatorSpi.java rename to src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorSpi.java index 6b5c870..b146591 100644 --- a/src/main/java/jp/naist/se/stigmata/spi/BirthmarkComparatorSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorSpi.java @@ -1,40 +1,40 @@ -package jp.naist.se.stigmata.spi; - -/* - * $Id$ - */ - -import java.util.Locale; - -import jp.naist.se.stigmata.BirthmarkComparator; - -/** - * Service provider interface for comparing birthmarks. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface BirthmarkComparatorSpi extends ServiceProvider{ - /** - * returns a type of the birthmark this service provides. - */ - public String getType(); - - /** - * returns a localized description of the birthmark this service provides. - */ - public String getDescription(Locale locale); - - /** - * returns a localized description of the birthmark in default locale. - */ - public String getDescription(); - - public String getComparatorClassName(); - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkComparator getComparator(BirthmarkSpi service); -} - +package jp.sourceforge.stigmata.spi; + +/* + * $Id$ + */ + +import java.util.Locale; + +import jp.sourceforge.stigmata.BirthmarkComparator; + +/** + * Service provider interface for comparing birthmarks. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface BirthmarkComparatorSpi extends ServiceProvider{ + /** + * returns a type of the birthmark this service provides. + */ + public String getType(); + + /** + * returns a localized description of the birthmark this service provides. + */ + public String getDescription(Locale locale); + + /** + * returns a localized description of the birthmark in default locale. + */ + public String getDescription(); + + public String getComparatorClassName(); + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkComparator getComparator(BirthmarkSpi service); +} + diff --git a/src/main/java/jp/naist/se/stigmata/spi/BirthmarkExtractorSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorSpi.java similarity index 87% rename from src/main/java/jp/naist/se/stigmata/spi/BirthmarkExtractorSpi.java rename to src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorSpi.java index 2eff536..13838ab 100644 --- a/src/main/java/jp/naist/se/stigmata/spi/BirthmarkExtractorSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorSpi.java @@ -1,40 +1,40 @@ -package jp.naist.se.stigmata.spi; - -/* - * $Id$ - */ - -import java.util.Locale; - -import jp.naist.se.stigmata.BirthmarkExtractor; - -/** - * Service provider interface for extracting birhtmark from given class files. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface BirthmarkExtractorSpi extends ServiceProvider{ - /** - * returns a type of the birthmark this service provides. - */ - public String getType(); - - /** - * returns a localized description of the birthmark this service provides. - */ - public String getDescription(Locale locale); - - /** - * returns a localized description of the birthmark in default locale. - */ - public String getDescription(); - - public String getExtractorClassName(); - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkExtractor getExtractor(BirthmarkSpi service); -} - +package jp.sourceforge.stigmata.spi; + +/* + * $Id$ + */ + +import java.util.Locale; + +import jp.sourceforge.stigmata.BirthmarkExtractor; + +/** + * Service provider interface for extracting birhtmark from given class files. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface BirthmarkExtractorSpi extends ServiceProvider{ + /** + * returns a type of the birthmark this service provides. + */ + public String getType(); + + /** + * returns a localized description of the birthmark this service provides. + */ + public String getDescription(Locale locale); + + /** + * returns a localized description of the birthmark in default locale. + */ + public String getDescription(); + + public String getExtractorClassName(); + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkExtractor getExtractor(BirthmarkSpi service); +} + diff --git a/src/main/java/jp/naist/se/stigmata/spi/BirthmarkSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkSpi.java similarity index 83% rename from src/main/java/jp/naist/se/stigmata/spi/BirthmarkSpi.java rename to src/main/java/jp/sourceforge/stigmata/spi/BirthmarkSpi.java index 38b5d63..0886259 100644 --- a/src/main/java/jp/naist/se/stigmata/spi/BirthmarkSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkSpi.java @@ -1,74 +1,74 @@ -package jp.naist.se.stigmata.spi; - -/* - * $Id$ - */ - -import java.util.Locale; - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkExtractor; - -/** - * Birthmark service provider interface. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface BirthmarkSpi extends ServiceProvider{ - /** - * returns a type of the birthmark this service provides. - */ - public String getType(); - - /** - * returns a type of the birthmark for display. - */ - public String getDisplayType(Locale locale); - - /** - * returns a type of the birthmark for display in default locale. - */ - public String getDisplayType(); - - /** - * returns a description of the birthmark this service provides. - */ - public String getDefaultDescription(); - - /** - * returns a localized description of the birthmark this service provides. - */ - public String getDescription(Locale locale); - - /** - * returns a localized description of the birthmark in default locale. - */ - public String getDescription(); - - public String getExtractorClassName(); - - public Birthmark buildBirthmark(); - - public BirthmarkElement buildBirthmarkElement(String elementValue); - - /** - * returns a extractor for the birthmark of this service. - */ - public BirthmarkExtractor getExtractor(); - - public String getComparatorClassName(); - - /** - * returns a comparator for the birthmark of this service. - */ - public BirthmarkComparator getComparator(); - - public boolean isExpert(); - - public boolean isUserDefined(); - -} - +package jp.sourceforge.stigmata.spi; + +/* + * $Id$ + */ + +import java.util.Locale; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkExtractor; + +/** + * Birthmark service provider interface. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface BirthmarkSpi extends ServiceProvider{ + /** + * returns a type of the birthmark this service provides. + */ + public String getType(); + + /** + * returns a type of the birthmark for display. + */ + public String getDisplayType(Locale locale); + + /** + * returns a type of the birthmark for display in default locale. + */ + public String getDisplayType(); + + /** + * returns a description of the birthmark this service provides. + */ + public String getDefaultDescription(); + + /** + * returns a localized description of the birthmark this service provides. + */ + public String getDescription(Locale locale); + + /** + * returns a localized description of the birthmark in default locale. + */ + public String getDescription(); + + public String getExtractorClassName(); + + public Birthmark buildBirthmark(); + + public BirthmarkElement buildBirthmarkElement(String elementValue); + + /** + * returns a extractor for the birthmark of this service. + */ + public BirthmarkExtractor getExtractor(); + + public String getComparatorClassName(); + + /** + * returns a comparator for the birthmark of this service. + */ + public BirthmarkComparator getComparator(); + + public boolean isExpert(); + + public boolean isUserDefined(); + +} + diff --git a/src/main/java/jp/naist/se/stigmata/spi/ComparisonPairFilterSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/ComparisonPairFilterSpi.java similarity index 80% rename from src/main/java/jp/naist/se/stigmata/spi/ComparisonPairFilterSpi.java rename to src/main/java/jp/sourceforge/stigmata/spi/ComparisonPairFilterSpi.java index aa1cb4f..53455ff 100644 --- a/src/main/java/jp/naist/se/stigmata/spi/ComparisonPairFilterSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/ComparisonPairFilterSpi.java @@ -1,27 +1,27 @@ -package jp.naist.se.stigmata.spi; - -/* - * $Id$ - */ - -import java.util.Locale; - -import jp.naist.se.stigmata.ComparisonPairFilter; - -/** - * Service provider interface for filtering comparison pair. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface ComparisonPairFilterSpi extends ServiceProvider{ - public String getDisplayFilterName(Locale locale); - - public String getDisplayFilterName(); - - public String getFilterName(); - - public String getFilterClassName(); - - public ComparisonPairFilter getFilter(); -} +package jp.sourceforge.stigmata.spi; + +/* + * $Id$ + */ + +import java.util.Locale; + +import jp.sourceforge.stigmata.ComparisonPairFilter; + +/** + * Service provider interface for filtering comparison pair. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface ComparisonPairFilterSpi extends ServiceProvider{ + public String getDisplayFilterName(Locale locale); + + public String getDisplayFilterName(); + + public String getFilterName(); + + public String getFilterClassName(); + + public ComparisonPairFilter getFilter(); +} diff --git a/src/main/java/jp/naist/se/stigmata/spi/ExtractedBirthmarkSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/ExtractedBirthmarkSpi.java similarity index 67% rename from src/main/java/jp/naist/se/stigmata/spi/ExtractedBirthmarkSpi.java rename to src/main/java/jp/sourceforge/stigmata/spi/ExtractedBirthmarkSpi.java index 19f1333..544504e 100755 --- a/src/main/java/jp/naist/se/stigmata/spi/ExtractedBirthmarkSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/ExtractedBirthmarkSpi.java @@ -1,31 +1,31 @@ -package jp.naist.se.stigmata.spi; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkStoreTarget; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.result.history.ExtractedBirthmarkHistory; - -/** - * This service provider interface manages extracted birthmark histories. - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public interface ExtractedBirthmarkSpi{ - /** - * finds and returns history from given parameter. - * @param parameter search base. - * @return found history. - */ - public ExtractedBirthmarkHistory getHistory(String parameter); - - public ExtractionResultSet getResultSet(String id); - - public ExtractionResultSet createResultSet(BirthmarkContext context); - - public BirthmarkStoreTarget getTarget(); -} +package jp.sourceforge.stigmata.spi; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkStoreTarget; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkHistory; + +/** + * This service provider interface manages extracted birthmark histories. + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public interface ExtractedBirthmarkSpi{ + /** + * finds and returns history from given parameter. + * @param parameter search base. + * @return found history. + */ + public ExtractedBirthmarkHistory getHistory(String parameter); + + public ExtractionResultSet getResultSet(String id); + + public ExtractionResultSet createResultSet(BirthmarkContext context); + + public BirthmarkStoreTarget getTarget(); +} diff --git a/src/main/java/jp/naist/se/stigmata/spi/ResultPrinterSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/ResultPrinterSpi.java similarity index 65% rename from src/main/java/jp/naist/se/stigmata/spi/ResultPrinterSpi.java rename to src/main/java/jp/sourceforge/stigmata/spi/ResultPrinterSpi.java index 9176079..31af616 100644 --- a/src/main/java/jp/naist/se/stigmata/spi/ResultPrinterSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/ResultPrinterSpi.java @@ -1,32 +1,32 @@ -package jp.naist.se.stigmata.spi; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.printer.BirthmarkServicePrinter; -import jp.naist.se.stigmata.printer.ComparisonPairPrinter; -import jp.naist.se.stigmata.printer.ComparisonResultSetPrinter; -import jp.naist.se.stigmata.printer.ExtractionResultSetPrinter; - -/** - * Service provider interface for printing comparison/extracting - * result to certain output stream. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface ResultPrinterSpi extends ServiceProvider{ - /** - * return a format. - */ - public String getFormat(); - - public BirthmarkServicePrinter getBirthmarkServicePrinter(); - - public ComparisonResultSetPrinter getComparisonResultSetPrinter(); - - public ComparisonPairPrinter getComparisonPairPrinter(); - - public ExtractionResultSetPrinter getExtractionResultSetPrinter(); -} +package jp.sourceforge.stigmata.spi; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter; +import jp.sourceforge.stigmata.printer.ComparisonPairPrinter; +import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter; +import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter; + +/** + * Service provider interface for printing comparison/extracting + * result to certain output stream. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface ResultPrinterSpi extends ServiceProvider{ + /** + * return a format. + */ + public String getFormat(); + + public BirthmarkServicePrinter getBirthmarkServicePrinter(); + + public ComparisonResultSetPrinter getComparisonResultSetPrinter(); + + public ComparisonPairPrinter getComparisonPairPrinter(); + + public ExtractionResultSetPrinter getExtractionResultSetPrinter(); +} diff --git a/src/main/java/jp/naist/se/stigmata/spi/ServiceProvider.java b/src/main/java/jp/sourceforge/stigmata/spi/ServiceProvider.java similarity index 85% rename from src/main/java/jp/naist/se/stigmata/spi/ServiceProvider.java rename to src/main/java/jp/sourceforge/stigmata/spi/ServiceProvider.java index a7b908d..1d0fa45 100644 --- a/src/main/java/jp/naist/se/stigmata/spi/ServiceProvider.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/ServiceProvider.java @@ -1,23 +1,23 @@ -package jp.naist.se.stigmata.spi; - -/* - * $Id$ - */ - -import java.util.Locale; - -/** - * Base interface for birthmark SPI. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface ServiceProvider{ - public String getDescription(Locale locale); - - public String getDescription(); - - public String getVendorName(); - - public String getVersion(); -} +package jp.sourceforge.stigmata.spi; + +/* + * $Id$ + */ + +import java.util.Locale; + +/** + * Base interface for birthmark SPI. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface ServiceProvider{ + public String getDescription(Locale locale); + + public String getDescription(); + + public String getVendorName(); + + public String getVersion(); +} diff --git a/src/main/java/jp/naist/se/stigmata/spi/StigmataHookSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/StigmataHookSpi.java similarity index 75% rename from src/main/java/jp/naist/se/stigmata/spi/StigmataHookSpi.java rename to src/main/java/jp/sourceforge/stigmata/spi/StigmataHookSpi.java index 2a31e82..1d2d99c 100755 --- a/src/main/java/jp/naist/se/stigmata/spi/StigmataHookSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/StigmataHookSpi.java @@ -1,31 +1,31 @@ -package jp.naist.se.stigmata.spi; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.hook.StigmataHook; -import jp.naist.se.stigmata.hook.StigmataRuntimeHook; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public interface StigmataHookSpi{ - public StigmataHook onSetup(); - - public StigmataHook onTearDown(); - - public StigmataRuntimeHook beforeExtraction(); - - public StigmataRuntimeHook afterExtraction(); - - public StigmataRuntimeHook beforeComparison(); - - public StigmataRuntimeHook afterComparison(); - - public StigmataRuntimeHook beforeFiltering(); - - public StigmataRuntimeHook afterFiltering(); +package jp.sourceforge.stigmata.spi; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.hook.StigmataHook; +import jp.sourceforge.stigmata.hook.StigmataRuntimeHook; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public interface StigmataHookSpi{ + public StigmataHook onSetup(); + + public StigmataHook onTearDown(); + + public StigmataRuntimeHook beforeExtraction(); + + public StigmataRuntimeHook afterExtraction(); + + public StigmataRuntimeHook beforeComparison(); + + public StigmataRuntimeHook afterComparison(); + + public StigmataRuntimeHook beforeFiltering(); + + public StigmataRuntimeHook afterFiltering(); } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkDefinitionPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkDefinitionPane.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkDefinitionPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkDefinitionPane.java index ea49b7f..a42de7a 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkDefinitionPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkDefinitionPane.java @@ -1,425 +1,425 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JComboBox; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTextArea; -import javax.swing.JTextField; -import javax.swing.ListModel; -import javax.swing.border.TitledBorder; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.birthmarks.BirthmarkService; -import jp.naist.se.stigmata.spi.BirthmarkComparatorSpi; -import jp.naist.se.stigmata.spi.BirthmarkExtractorSpi; -import jp.naist.se.stigmata.spi.BirthmarkSpi; -import jp.sourceforge.talisman.i18n.Messages; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkDefinitionPane extends JPanel{ - private static final long serialVersionUID = 3932637653297802978L; - - private StigmataFrame stigmata; - private DefaultListModel model; - private InformationPane information; - private JList serviceList; - private JButton newService; - private JButton removeService; - private List addedService = new ArrayList(); - private List listeners = new ArrayList(); - - public BirthmarkDefinitionPane(StigmataFrame stigmata){ - this.stigmata = stigmata; - - initLayouts(); - initData(); - - updateView(); - } - - public void addBirthmarkServiceListener(BirthmarkServiceListener listener){ - listeners.add(listener); - } - - public void removeBirthmarkServiceListener(BirthmarkServiceListener listener){ - listeners.remove(listener); - } - - public void reset(){ - for(BirthmarkSpi service: addedService){ - model.removeElement(service); - } - } - - public void updateEnvironment(BirthmarkEnvironment environment){ - for(BirthmarkSpi service: addedService){ - if(environment.getService(service.getType()) == null){ - if(service instanceof BirthmarkService){ - ((BirthmarkService)service).setBirthmarkEnvironment(environment); - } - environment.addService(service); - } - } - } - - private void initData(){ - information.initData(); - model.addElement(stigmata.getMessages().get("newservice.definition.label")); - - for(BirthmarkSpi service: stigmata.getEnvironment().findServices()){ - model.addElement(service); - } - } - - private void initLayouts(){ - Messages messages = stigmata.getMessages(); - JPanel panel = new JPanel(new BorderLayout()); - serviceList = new JList(model = new DefaultListModel()); - serviceList.setCellRenderer(new BirthmarkServiceListCellRenderer(new Dimension(250, 20), 60)); - JScrollPane scroll = new JScrollPane(serviceList); - - scroll.setBorder(new TitledBorder(messages.get("servicelist.border"))); - serviceList.setToolTipText(messages.get("servicelist.tooltip")); - - panel.add(scroll, BorderLayout.WEST); - panel.add(information = new InformationPane(stigmata, this), BorderLayout.CENTER); - - Box buttonPanel = Box.createHorizontalBox(); - newService = GUIUtility.createButton(messages, "newservice"); - removeService = GUIUtility.createButton(messages, "removeservice"); - buttonPanel.add(Box.createHorizontalGlue()); - buttonPanel.add(newService); - buttonPanel.add(Box.createHorizontalGlue()); - buttonPanel.add(removeService); - buttonPanel.add(Box.createHorizontalGlue()); - - setLayout(new BorderLayout()); - add(panel, BorderLayout.CENTER); - add(buttonPanel, BorderLayout.SOUTH); - - removeService.setEnabled(false); - - serviceList.addListSelectionListener(new ListSelectionListener(){ - public void valueChanged(ListSelectionEvent e){ - listValueChanged(e); - } - }); - - newService.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - addNewService(); - } - }); - - removeService.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - removeService(); - } - }); - } - - private void removeService(){ - int index = serviceList.getSelectedIndex(); - if(index > 0){ - BirthmarkSpi service = (BirthmarkSpi)model.getElementAt(index); - if(service != null && service.isUserDefined()){ - model.remove(index); - for(BirthmarkServiceListener listener: listeners){ - listener.serviceRemoved(service); - } - } - } - stigmata.setNeedToSaveSettings(true); - updateView(); - } - - private void addNewService(){ - BirthmarkService service = information.createService(); - model.addElement(service); - addedService.add(service); - - for(BirthmarkServiceListener listener: listeners){ - listener.serviceAdded(service); - } - stigmata.setNeedToSaveSettings(true); - updateView(); - } - - private void listValueChanged(ListSelectionEvent e){ - int index = serviceList.getSelectedIndex(); - if(index > 0){ - BirthmarkSpi service = (BirthmarkSpi)model.getElementAt(index); - if(service != null){ - information.setService(service); - } - } - else if(index == 0){ - information.clear(); - } - updateView(); - } - - /** - * remove: enabled when selected index is greater than 0 and selected service is defined by user. - * new service: enabled when selected index is less equals than 0 or selected service is defined by user and information pane is show available service. - * - */ - private void updateView(){ - int index = serviceList.getSelectedIndex(); - ListModel model = serviceList.getModel(); - BirthmarkSpi service = null; - if(index > 0){ - service = (BirthmarkSpi)model.getElementAt(index); - } - newService.setEnabled( - (index <= 0 || service.isUserDefined()) && - information.isAvailableService() && - isAvailableServiceName(information.getType()) - ); - removeService.setEnabled(index > 0 && service.isUserDefined()); - information.setEnabled(index <= 0 || service.isUserDefined()); - } - - private boolean isAvailableServiceName(String name){ - for(BirthmarkSpi service: addedService){ - if(service.getType().equals(name)){ - return false; - } - } - return true; - } - - private static class InformationPane extends JPanel{ - private static final long serialVersionUID = 37906542932362L; - - private StigmataFrame stigmata; - private BirthmarkDefinitionPane thisPane; - private JTextField type; - private JTextField displayType; - private JTextArea description; - private JComboBox extractor; - private JComboBox comparator; - private JCheckBox expert; - private JCheckBox userDefined; - - public InformationPane(StigmataFrame stigmata, BirthmarkDefinitionPane thisPane){ - this.stigmata = stigmata; - this.thisPane = thisPane; - initLayouts(); - } - - public String getType(){ - return type.getText(); - } - - public void setEnabled(boolean flag){ - super.setEnabled(flag); - - type.setEnabled(flag); - displayType.setEnabled(flag); - description.setEnabled(flag); - extractor.setEnabled(flag); - comparator.setEnabled(flag); - } - - public BirthmarkService createService(){ - BirthmarkService service = new BirthmarkService(); - service.setType(type.getText()); - service.setDisplayType(displayType.getText()); - service.setDescription(description.getText()); - service.setExtractorClassName(extractor.getSelectedItem().toString()); - service.setComparatorClassName(comparator.getSelectedItem().toString()); - service.setUserDefined(true); - - return service; - } - - public void clear(){ - type.setText(""); - displayType.setText(""); - description.setText(""); - extractor.getModel().setSelectedItem(null); - comparator.getModel().setSelectedItem(null); - userDefined.setSelected(true); - expert.setSelected(true); - } - - public boolean isAvailableService(){ - String newType = type.getText(); - Object selectedExtractor = extractor.getSelectedItem(); - String extractorClass = "";; - if(selectedExtractor != null){ - extractorClass = selectedExtractor.toString(); - } - Object selectedComparator = comparator.getSelectedItem(); - String comparatorClass = ""; - if(selectedComparator != null){ - comparatorClass = selectedComparator.toString(); - } - BirthmarkEnvironment environment = stigmata.getEnvironment(); - - boolean flag = newType.length() > 0 - && displayType.getText().length() > 0 - && extractorClass.length() > 0 - && comparatorClass.length() > 0; - - // check inputed type is free - flag = flag && environment.getService(newType) == null; - - // check extractor/comparator classes are available - try{ - flag = flag - && environment.getClasspathContext().find(extractorClass) != null - && environment.getClasspathContext().find(comparatorClass) != null; - } catch(ClassNotFoundException e){ - flag = false; - } - - return flag; - } - - public void setService(BirthmarkSpi service){ - type.setText(service.getType()); - displayType.setText(service.getDisplayType()); - description.setText(service.getDefaultDescription()); - selectComboBoxItem(extractor, service.getExtractorClassName()); - selectComboBoxItem(comparator, service.getComparatorClassName()); - userDefined.setSelected(service.isUserDefined()); - expert.setSelected(service.isExpert()); - - setEnabled(service.isUserDefined()); - } - - public void initData(){ - comparator.addItem(""); - for(Iterator i = stigmata.getEnvironment().lookupProviders(BirthmarkComparatorSpi.class); i.hasNext();){ - BirthmarkComparatorSpi service = i.next(); - comparator.addItem(service.getComparatorClassName()); - } - extractor.addItem(""); - for(Iterator i = stigmata.getEnvironment().lookupProviders(BirthmarkExtractorSpi.class); i.hasNext();){ - BirthmarkExtractorSpi service = i.next(); - extractor.addItem(service.getExtractorClassName()); - } - } - - private void selectComboBoxItem(JComboBox box, String item){ - box.getModel().setSelectedItem(item); - } - - private void initLayouts(){ - Messages messages = stigmata.getMessages(); - type = new JTextField(); - displayType = new JTextField(); - extractor = new JComboBox(); - comparator = new JComboBox(); - expert = new JCheckBox(messages.get("define.expert.label")); - userDefined = new JCheckBox(messages.get("define.userdef.label")); - description = new JTextArea(); - JScrollPane scroll = new JScrollPane(description); - type.setColumns(10); - displayType.setColumns(20); - description.setColumns(40); - description.setRows(10); - - Box box1 = Box.createHorizontalBox(); - box1.add(type); - box1.add(displayType); - - Box box2 = Box.createHorizontalBox(); - box2.add(Box.createHorizontalGlue()); - box2.add(expert); - box2.add(Box.createHorizontalGlue()); - box2.add(userDefined); - box2.add(Box.createHorizontalGlue()); - - JPanel panel = new JPanel(new GridLayout(3, 1)); - panel.add(box1); - panel.add(extractor); - panel.add(comparator); - - setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); - add(panel); - add(box2); - add(scroll); - add(Box.createVerticalGlue()); - - GUIUtility.decorateJComponent(messages, type, "define.type"); - GUIUtility.decorateJComponent(messages, displayType, "define.displaytype"); - GUIUtility.decorateJComponent(messages, scroll, "define.description"); - GUIUtility.decorateJComponent(messages, extractor, "define.extractor"); - GUIUtility.decorateJComponent(messages, comparator, "define.comparator"); - GUIUtility.decorateJComponent(messages, expert, "define.expert"); - GUIUtility.decorateJComponent(messages, userDefined, "define.userdef"); - - userDefined.setEnabled(false); - expert.setEnabled(false); - userDefined.setSelected(true); - expert.setSelected(true); - - extractor.setEditable(true); - comparator.setEditable(true); - - DocumentListener listener = new DocumentListener(){ - public void insertUpdate(DocumentEvent e){ - thisPane.updateView(); - } - - public void removeUpdate(DocumentEvent e){ - thisPane.updateView(); - } - - public void changedUpdate(DocumentEvent e){ - thisPane.updateView(); - } - }; - - type.getDocument().addDocumentListener(listener); - displayType.getDocument().addDocumentListener(listener); - description.getDocument().addDocumentListener(listener); - ItemListener itemListener = new ItemListener(){ - public void itemStateChanged(ItemEvent e){ - thisPane.updateView(); - } - }; - comparator.addItemListener(itemListener); - extractor.addItemListener(itemListener); - ActionListener actionListener = new ActionListener(){ - public void actionPerformed(ActionEvent e){ - thisPane.updateView(); - } - }; - comparator.getEditor().addActionListener(actionListener); - extractor.getEditor().addActionListener(actionListener); - } - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import javax.swing.ListModel; +import javax.swing.border.TitledBorder; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.birthmarks.BirthmarkService; +import jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi; +import jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.talisman.i18n.Messages; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkDefinitionPane extends JPanel{ + private static final long serialVersionUID = 3932637653297802978L; + + private StigmataFrame stigmata; + private DefaultListModel model; + private InformationPane information; + private JList serviceList; + private JButton newService; + private JButton removeService; + private List addedService = new ArrayList(); + private List listeners = new ArrayList(); + + public BirthmarkDefinitionPane(StigmataFrame stigmata){ + this.stigmata = stigmata; + + initLayouts(); + initData(); + + updateView(); + } + + public void addBirthmarkServiceListener(BirthmarkServiceListener listener){ + listeners.add(listener); + } + + public void removeBirthmarkServiceListener(BirthmarkServiceListener listener){ + listeners.remove(listener); + } + + public void reset(){ + for(BirthmarkSpi service: addedService){ + model.removeElement(service); + } + } + + public void updateEnvironment(BirthmarkEnvironment environment){ + for(BirthmarkSpi service: addedService){ + if(environment.getService(service.getType()) == null){ + if(service instanceof BirthmarkService){ + ((BirthmarkService)service).setBirthmarkEnvironment(environment); + } + environment.addService(service); + } + } + } + + private void initData(){ + information.initData(); + model.addElement(stigmata.getMessages().get("newservice.definition.label")); + + for(BirthmarkSpi service: stigmata.getEnvironment().findServices()){ + model.addElement(service); + } + } + + private void initLayouts(){ + Messages messages = stigmata.getMessages(); + JPanel panel = new JPanel(new BorderLayout()); + serviceList = new JList(model = new DefaultListModel()); + serviceList.setCellRenderer(new BirthmarkServiceListCellRenderer(new Dimension(250, 20), 60)); + JScrollPane scroll = new JScrollPane(serviceList); + + scroll.setBorder(new TitledBorder(messages.get("servicelist.border"))); + serviceList.setToolTipText(messages.get("servicelist.tooltip")); + + panel.add(scroll, BorderLayout.WEST); + panel.add(information = new InformationPane(stigmata, this), BorderLayout.CENTER); + + Box buttonPanel = Box.createHorizontalBox(); + newService = GUIUtility.createButton(messages, "newservice"); + removeService = GUIUtility.createButton(messages, "removeservice"); + buttonPanel.add(Box.createHorizontalGlue()); + buttonPanel.add(newService); + buttonPanel.add(Box.createHorizontalGlue()); + buttonPanel.add(removeService); + buttonPanel.add(Box.createHorizontalGlue()); + + setLayout(new BorderLayout()); + add(panel, BorderLayout.CENTER); + add(buttonPanel, BorderLayout.SOUTH); + + removeService.setEnabled(false); + + serviceList.addListSelectionListener(new ListSelectionListener(){ + public void valueChanged(ListSelectionEvent e){ + listValueChanged(e); + } + }); + + newService.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + addNewService(); + } + }); + + removeService.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + removeService(); + } + }); + } + + private void removeService(){ + int index = serviceList.getSelectedIndex(); + if(index > 0){ + BirthmarkSpi service = (BirthmarkSpi)model.getElementAt(index); + if(service != null && service.isUserDefined()){ + model.remove(index); + for(BirthmarkServiceListener listener: listeners){ + listener.serviceRemoved(service); + } + } + } + stigmata.setNeedToSaveSettings(true); + updateView(); + } + + private void addNewService(){ + BirthmarkService service = information.createService(); + model.addElement(service); + addedService.add(service); + + for(BirthmarkServiceListener listener: listeners){ + listener.serviceAdded(service); + } + stigmata.setNeedToSaveSettings(true); + updateView(); + } + + private void listValueChanged(ListSelectionEvent e){ + int index = serviceList.getSelectedIndex(); + if(index > 0){ + BirthmarkSpi service = (BirthmarkSpi)model.getElementAt(index); + if(service != null){ + information.setService(service); + } + } + else if(index == 0){ + information.clear(); + } + updateView(); + } + + /** + * remove: enabled when selected index is greater than 0 and selected service is defined by user. + * new service: enabled when selected index is less equals than 0 or selected service is defined by user and information pane is show available service. + * + */ + private void updateView(){ + int index = serviceList.getSelectedIndex(); + ListModel model = serviceList.getModel(); + BirthmarkSpi service = null; + if(index > 0){ + service = (BirthmarkSpi)model.getElementAt(index); + } + newService.setEnabled( + (index <= 0 || service.isUserDefined()) && + information.isAvailableService() && + isAvailableServiceName(information.getType()) + ); + removeService.setEnabled(index > 0 && service.isUserDefined()); + information.setEnabled(index <= 0 || service.isUserDefined()); + } + + private boolean isAvailableServiceName(String name){ + for(BirthmarkSpi service: addedService){ + if(service.getType().equals(name)){ + return false; + } + } + return true; + } + + private static class InformationPane extends JPanel{ + private static final long serialVersionUID = 37906542932362L; + + private StigmataFrame stigmata; + private BirthmarkDefinitionPane thisPane; + private JTextField type; + private JTextField displayType; + private JTextArea description; + private JComboBox extractor; + private JComboBox comparator; + private JCheckBox expert; + private JCheckBox userDefined; + + public InformationPane(StigmataFrame stigmata, BirthmarkDefinitionPane thisPane){ + this.stigmata = stigmata; + this.thisPane = thisPane; + initLayouts(); + } + + public String getType(){ + return type.getText(); + } + + public void setEnabled(boolean flag){ + super.setEnabled(flag); + + type.setEnabled(flag); + displayType.setEnabled(flag); + description.setEnabled(flag); + extractor.setEnabled(flag); + comparator.setEnabled(flag); + } + + public BirthmarkService createService(){ + BirthmarkService service = new BirthmarkService(); + service.setType(type.getText()); + service.setDisplayType(displayType.getText()); + service.setDescription(description.getText()); + service.setExtractorClassName(extractor.getSelectedItem().toString()); + service.setComparatorClassName(comparator.getSelectedItem().toString()); + service.setUserDefined(true); + + return service; + } + + public void clear(){ + type.setText(""); + displayType.setText(""); + description.setText(""); + extractor.getModel().setSelectedItem(null); + comparator.getModel().setSelectedItem(null); + userDefined.setSelected(true); + expert.setSelected(true); + } + + public boolean isAvailableService(){ + String newType = type.getText(); + Object selectedExtractor = extractor.getSelectedItem(); + String extractorClass = "";; + if(selectedExtractor != null){ + extractorClass = selectedExtractor.toString(); + } + Object selectedComparator = comparator.getSelectedItem(); + String comparatorClass = ""; + if(selectedComparator != null){ + comparatorClass = selectedComparator.toString(); + } + BirthmarkEnvironment environment = stigmata.getEnvironment(); + + boolean flag = newType.length() > 0 + && displayType.getText().length() > 0 + && extractorClass.length() > 0 + && comparatorClass.length() > 0; + + // check inputed type is free + flag = flag && environment.getService(newType) == null; + + // check extractor/comparator classes are available + try{ + flag = flag + && environment.getClasspathContext().find(extractorClass) != null + && environment.getClasspathContext().find(comparatorClass) != null; + } catch(ClassNotFoundException e){ + flag = false; + } + + return flag; + } + + public void setService(BirthmarkSpi service){ + type.setText(service.getType()); + displayType.setText(service.getDisplayType()); + description.setText(service.getDefaultDescription()); + selectComboBoxItem(extractor, service.getExtractorClassName()); + selectComboBoxItem(comparator, service.getComparatorClassName()); + userDefined.setSelected(service.isUserDefined()); + expert.setSelected(service.isExpert()); + + setEnabled(service.isUserDefined()); + } + + public void initData(){ + comparator.addItem(""); + for(Iterator i = stigmata.getEnvironment().lookupProviders(BirthmarkComparatorSpi.class); i.hasNext();){ + BirthmarkComparatorSpi service = i.next(); + comparator.addItem(service.getComparatorClassName()); + } + extractor.addItem(""); + for(Iterator i = stigmata.getEnvironment().lookupProviders(BirthmarkExtractorSpi.class); i.hasNext();){ + BirthmarkExtractorSpi service = i.next(); + extractor.addItem(service.getExtractorClassName()); + } + } + + private void selectComboBoxItem(JComboBox box, String item){ + box.getModel().setSelectedItem(item); + } + + private void initLayouts(){ + Messages messages = stigmata.getMessages(); + type = new JTextField(); + displayType = new JTextField(); + extractor = new JComboBox(); + comparator = new JComboBox(); + expert = new JCheckBox(messages.get("define.expert.label")); + userDefined = new JCheckBox(messages.get("define.userdef.label")); + description = new JTextArea(); + JScrollPane scroll = new JScrollPane(description); + type.setColumns(10); + displayType.setColumns(20); + description.setColumns(40); + description.setRows(10); + + Box box1 = Box.createHorizontalBox(); + box1.add(type); + box1.add(displayType); + + Box box2 = Box.createHorizontalBox(); + box2.add(Box.createHorizontalGlue()); + box2.add(expert); + box2.add(Box.createHorizontalGlue()); + box2.add(userDefined); + box2.add(Box.createHorizontalGlue()); + + JPanel panel = new JPanel(new GridLayout(3, 1)); + panel.add(box1); + panel.add(extractor); + panel.add(comparator); + + setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + add(panel); + add(box2); + add(scroll); + add(Box.createVerticalGlue()); + + GUIUtility.decorateJComponent(messages, type, "define.type"); + GUIUtility.decorateJComponent(messages, displayType, "define.displaytype"); + GUIUtility.decorateJComponent(messages, scroll, "define.description"); + GUIUtility.decorateJComponent(messages, extractor, "define.extractor"); + GUIUtility.decorateJComponent(messages, comparator, "define.comparator"); + GUIUtility.decorateJComponent(messages, expert, "define.expert"); + GUIUtility.decorateJComponent(messages, userDefined, "define.userdef"); + + userDefined.setEnabled(false); + expert.setEnabled(false); + userDefined.setSelected(true); + expert.setSelected(true); + + extractor.setEditable(true); + comparator.setEditable(true); + + DocumentListener listener = new DocumentListener(){ + public void insertUpdate(DocumentEvent e){ + thisPane.updateView(); + } + + public void removeUpdate(DocumentEvent e){ + thisPane.updateView(); + } + + public void changedUpdate(DocumentEvent e){ + thisPane.updateView(); + } + }; + + type.getDocument().addDocumentListener(listener); + displayType.getDocument().addDocumentListener(listener); + description.getDocument().addDocumentListener(listener); + ItemListener itemListener = new ItemListener(){ + public void itemStateChanged(ItemEvent e){ + thisPane.updateView(); + } + }; + comparator.addItemListener(itemListener); + extractor.addItemListener(itemListener); + ActionListener actionListener = new ActionListener(){ + public void actionPerformed(ActionEvent e){ + thisPane.updateView(); + } + }; + comparator.getEditor().addActionListener(actionListener); + extractor.getEditor().addActionListener(actionListener); + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkExtractionResultPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkExtractionResultPane.java similarity index 83% rename from src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkExtractionResultPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkExtractionResultPane.java index 02c20b1..5e40e5b 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkExtractionResultPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkExtractionResultPane.java @@ -1,90 +1,90 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.event.ActionEvent; -import java.io.PrintWriter; - -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.Box; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JScrollPane; - -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.ExtractionTarget; -import jp.naist.se.stigmata.printer.ExtractionResultSetPrinter; -import jp.naist.se.stigmata.printer.PrinterManager; -import jp.naist.se.stigmata.spi.ResultPrinterSpi; -import jp.naist.se.stigmata.ui.swing.actions.PopupShowAction; -import jp.naist.se.stigmata.ui.swing.actions.SaveAction; -import jp.naist.se.stigmata.utils.AsciiDataWritable; -import jp.sourceforge.talisman.i18n.Messages; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkExtractionResultPane extends JPanel{ - private static final long serialVersionUID = 239084365756236543L; - - private StigmataFrame frame; - private ExtractionResultSet extraction; - - public BirthmarkExtractionResultPane(StigmataFrame stigmataFrame, ExtractionResultSet ers){ - this.frame = stigmataFrame; - this.extraction = ers; - - initLayouts(); - } - - private void initLayouts(){ - JComponent southPanel = Box.createHorizontalBox(); - Action saveAction = new SaveAction(frame, new AsciiDataWritable(){ - public void writeAsciiData(PrintWriter out, String format){ - ResultPrinterSpi service = PrinterManager.getInstance().getService(format); - if(service == null){ - service = PrinterManager.getDefaultFormatService(); - } - - ExtractionResultSetPrinter list = service.getExtractionResultSetPrinter(); - list.printResult(new PrintWriter(out), extraction); - } - }); - Action compareAction = new AbstractAction(){ - private static final long serialVersionUID = -1938101718384412339L; - - public void actionPerformed(ActionEvent e){ - frame.compareExtractionResult(extraction); - } - }; - Messages messages = frame.getMessages(); - JButton saveButton = GUIUtility.createButton(messages, "savebirthmark", saveAction); - JButton compareButton = GUIUtility.createButton(messages, "comparebirthmark", compareAction); - - JPopupMenu popup = new JPopupMenu(); - popup.add(GUIUtility.createJMenuItem(messages, "savebirthmark", saveAction)); - popup.add(GUIUtility.createJMenuItem(messages, "comparebirthmark", compareAction)); - - JScrollPane scroll = new JScrollPane(); - scroll.setViewportView(new BirthmarkTree(frame, extraction.getBirthmarkSets(ExtractionTarget.TARGET_BOTH))); - - setLayout(new BorderLayout()); - add(popup); - add(scroll, BorderLayout.CENTER); - add(southPanel, BorderLayout.SOUTH); - southPanel.add(Box.createHorizontalGlue()); - southPanel.add(saveButton); - southPanel.add(Box.createHorizontalGlue()); - southPanel.add(compareButton); - southPanel.add(Box.createHorizontalGlue()); - - addMouseListener(new PopupShowAction(popup)); - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.event.ActionEvent; +import java.io.PrintWriter; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; + +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.ExtractionTarget; +import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter; +import jp.sourceforge.stigmata.printer.PrinterManager; +import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.ui.swing.actions.PopupShowAction; +import jp.sourceforge.stigmata.ui.swing.actions.SaveAction; +import jp.sourceforge.stigmata.utils.AsciiDataWritable; +import jp.sourceforge.talisman.i18n.Messages; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkExtractionResultPane extends JPanel{ + private static final long serialVersionUID = 239084365756236543L; + + private StigmataFrame frame; + private ExtractionResultSet extraction; + + public BirthmarkExtractionResultPane(StigmataFrame stigmataFrame, ExtractionResultSet ers){ + this.frame = stigmataFrame; + this.extraction = ers; + + initLayouts(); + } + + private void initLayouts(){ + JComponent southPanel = Box.createHorizontalBox(); + Action saveAction = new SaveAction(frame, new AsciiDataWritable(){ + public void writeAsciiData(PrintWriter out, String format){ + ResultPrinterSpi service = PrinterManager.getInstance().getService(format); + if(service == null){ + service = PrinterManager.getDefaultFormatService(); + } + + ExtractionResultSetPrinter list = service.getExtractionResultSetPrinter(); + list.printResult(new PrintWriter(out), extraction); + } + }); + Action compareAction = new AbstractAction(){ + private static final long serialVersionUID = -1938101718384412339L; + + public void actionPerformed(ActionEvent e){ + frame.compareExtractionResult(extraction); + } + }; + Messages messages = frame.getMessages(); + JButton saveButton = GUIUtility.createButton(messages, "savebirthmark", saveAction); + JButton compareButton = GUIUtility.createButton(messages, "comparebirthmark", compareAction); + + JPopupMenu popup = new JPopupMenu(); + popup.add(GUIUtility.createJMenuItem(messages, "savebirthmark", saveAction)); + popup.add(GUIUtility.createJMenuItem(messages, "comparebirthmark", compareAction)); + + JScrollPane scroll = new JScrollPane(); + scroll.setViewportView(new BirthmarkTree(frame, extraction.getBirthmarkSets(ExtractionTarget.TARGET_BOTH))); + + setLayout(new BorderLayout()); + add(popup); + add(scroll, BorderLayout.CENTER); + add(southPanel, BorderLayout.SOUTH); + southPanel.add(Box.createHorizontalGlue()); + southPanel.add(saveButton); + southPanel.add(Box.createHorizontalGlue()); + southPanel.add(compareButton); + southPanel.add(Box.createHorizontalGlue()); + + addMouseListener(new PopupShowAction(popup)); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelectablePane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectablePane.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelectablePane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectablePane.java index 865e311..76a49fb 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelectablePane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectablePane.java @@ -1,154 +1,154 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.swing.JPanel; - -import jp.naist.se.stigmata.spi.BirthmarkSpi; -import jp.sourceforge.talisman.i18n.Messages; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public abstract class BirthmarkSelectablePane extends JPanel implements BirthmarkServiceListener{ - private StigmataFrame stigmata; - private Set selectedServices = new HashSet(); - private Map services; - private List listeners = new ArrayList(); - private boolean expertmode; - - public BirthmarkSelectablePane(StigmataFrame stigmata){ - this.stigmata = stigmata; - - initServices(); - stigmata.addBirthmarkServiceListener(this); - } - - protected abstract void updateLayouts(); - - public Messages getMessages(){ - return stigmata.getMessages(); - } - - public void setExpertMode(boolean expertmode){ - this.expertmode = expertmode; - updateLayouts(); - } - - public boolean isExpertMode(){ - return expertmode; - } - - public String[] getSelectedServiceTypes(){ - return selectedServices.toArray(new String[selectedServices.size()]); - } - - public BirthmarkSpi getService(String type){ - BirthmarkSelection elem = services.get(type); - if(elem != null){ - return elem.getService(); - } - - return null; - } - - public String[] getServiceTypes(){ - String[] serviceArray = new String[services.size()]; - int index = 0; - for(String key: services.keySet()){ - BirthmarkSpi service = services.get(key).getService(); - serviceArray[index] = service.getType(); - index++; - } - return serviceArray; - } - - public boolean hasService(String type){ - return services.get(type) != null; - } - - public void select(String type, boolean flag){ - if(flag){ - selectedServices.add(type); - } - else{ - selectedServices.remove(type); - } - fireEvent(); - } - - public void select(BirthmarkSpi service, boolean flag){ - select(service.getType(), flag); - } - - public void reset(){ - selectedServices.clear(); - initServices(); - expertmode = false; - updateLayouts(); - fireEvent(); - } - - public void addDataChangeListener(DataChangeListener listener){ - listeners.add(listener); - } - - public void serviceAdded(BirthmarkSpi service){ - if(services.get(service.getType()) == null){ - BirthmarkSelection elem = new BirthmarkSelection(service); - selectedServices.add(service.getType()); - services.put(service.getType(), elem); - } - updateLayouts(); - fireEvent(); - } - - public void serviceRemoved(BirthmarkSpi service){ - BirthmarkSelection elem = services.get(service); - if(elem != null){ - selectedServices.remove(service); - services.remove(service); - } - fireEvent(); - } - - public Iterator serviceNames(){ - return services.keySet().iterator(); - } - - protected BirthmarkSelection getSelection(String type){ - return services.get(type); - } - - protected Iterator birthmarkSelections(){ - return services.values().iterator(); - } - - protected void fireEvent(){ - for(DataChangeListener listener: listeners){ - listener.valueChanged(this); - } - } - - private void initServices(){ - BirthmarkSpi[] serviceArray = stigmata.getEnvironment().getServices(); - - services = new LinkedHashMap(); - for(BirthmarkSpi service: serviceArray){ - BirthmarkSelection elem = new BirthmarkSelection(service); - services.put(service.getType(), elem); - } - } +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.swing.JPanel; + +import jp.sourceforge.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.talisman.i18n.Messages; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public abstract class BirthmarkSelectablePane extends JPanel implements BirthmarkServiceListener{ + private StigmataFrame stigmata; + private Set selectedServices = new HashSet(); + private Map services; + private List listeners = new ArrayList(); + private boolean expertmode; + + public BirthmarkSelectablePane(StigmataFrame stigmata){ + this.stigmata = stigmata; + + initServices(); + stigmata.addBirthmarkServiceListener(this); + } + + protected abstract void updateLayouts(); + + public Messages getMessages(){ + return stigmata.getMessages(); + } + + public void setExpertMode(boolean expertmode){ + this.expertmode = expertmode; + updateLayouts(); + } + + public boolean isExpertMode(){ + return expertmode; + } + + public String[] getSelectedServiceTypes(){ + return selectedServices.toArray(new String[selectedServices.size()]); + } + + public BirthmarkSpi getService(String type){ + BirthmarkSelection elem = services.get(type); + if(elem != null){ + return elem.getService(); + } + + return null; + } + + public String[] getServiceTypes(){ + String[] serviceArray = new String[services.size()]; + int index = 0; + for(String key: services.keySet()){ + BirthmarkSpi service = services.get(key).getService(); + serviceArray[index] = service.getType(); + index++; + } + return serviceArray; + } + + public boolean hasService(String type){ + return services.get(type) != null; + } + + public void select(String type, boolean flag){ + if(flag){ + selectedServices.add(type); + } + else{ + selectedServices.remove(type); + } + fireEvent(); + } + + public void select(BirthmarkSpi service, boolean flag){ + select(service.getType(), flag); + } + + public void reset(){ + selectedServices.clear(); + initServices(); + expertmode = false; + updateLayouts(); + fireEvent(); + } + + public void addDataChangeListener(DataChangeListener listener){ + listeners.add(listener); + } + + public void serviceAdded(BirthmarkSpi service){ + if(services.get(service.getType()) == null){ + BirthmarkSelection elem = new BirthmarkSelection(service); + selectedServices.add(service.getType()); + services.put(service.getType(), elem); + } + updateLayouts(); + fireEvent(); + } + + public void serviceRemoved(BirthmarkSpi service){ + BirthmarkSelection elem = services.get(service); + if(elem != null){ + selectedServices.remove(service); + services.remove(service); + } + fireEvent(); + } + + public Iterator serviceNames(){ + return services.keySet().iterator(); + } + + protected BirthmarkSelection getSelection(String type){ + return services.get(type); + } + + protected Iterator birthmarkSelections(){ + return services.values().iterator(); + } + + protected void fireEvent(){ + for(DataChangeListener listener: listeners){ + listener.valueChanged(this); + } + } + + private void initServices(){ + BirthmarkSpi[] serviceArray = stigmata.getEnvironment().getServices(); + + services = new LinkedHashMap(); + for(BirthmarkSpi service: serviceArray){ + BirthmarkSelection elem = new BirthmarkSelection(service); + services.put(service.getType(), elem); + } + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelection.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelection.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelection.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelection.java index 0d17aae..d50f2b6 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelection.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelection.java @@ -1,44 +1,44 @@ -package jp.naist.se.stigmata.ui.swing; - -/** - * $Id$ - */ - -import java.io.Serializable; - -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -class BirthmarkSelection implements Serializable{ - private static final long serialVersionUID = -3244323970546344L; - - private BirthmarkSpi service; - private boolean selected = true; - - public BirthmarkSelection(BirthmarkSpi service){ - this.service = service; - } - - public BirthmarkSpi getService(){ - return service; - } - - public boolean isVisible(boolean expertFlag){ - return expertFlag || (!expertFlag && !service.isExpert()); - } - - public boolean isSelected(){ - return selected; - } - - public void setSelected(boolean flag){ - this.selected = flag; - } - - public String getType(){ - return service.getType(); - } +package jp.sourceforge.stigmata.ui.swing; + +/** + * $Id$ + */ + +import java.io.Serializable; + +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +class BirthmarkSelection implements Serializable{ + private static final long serialVersionUID = -3244323970546344L; + + private BirthmarkSpi service; + private boolean selected = true; + + public BirthmarkSelection(BirthmarkSpi service){ + this.service = service; + } + + public BirthmarkSpi getService(){ + return service; + } + + public boolean isVisible(boolean expertFlag){ + return expertFlag || (!expertFlag && !service.isExpert()); + } + + public boolean isSelected(){ + return selected; + } + + public void setSelected(boolean flag){ + this.selected = flag; + } + + public String getType(){ + return service.getType(); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelectionCheckSetPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionCheckSetPane.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelectionCheckSetPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionCheckSetPane.java index 16aecab..6b3f0b5 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelectionCheckSetPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionCheckSetPane.java @@ -1,112 +1,112 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.Iterator; - -import javax.swing.Box; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JPanel; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkSelectionCheckSetPane extends BirthmarkSelectablePane{ - private static final long serialVersionUID = 3209854654743223453L; - - private JPanel checks = new JPanel(); - - public BirthmarkSelectionCheckSetPane(StigmataFrame stigmata){ - super(stigmata); - - initLayouts(); - } - - private void initLayouts(){ - setLayout(new BorderLayout()); - add(checks, BorderLayout.CENTER); - - JButton checkAll = GUIUtility.createButton(getMessages(), "checkall"); - JButton uncheckAll = GUIUtility.createButton(getMessages(), "uncheckall"); - - Box box = Box.createHorizontalBox(); - box.add(Box.createHorizontalGlue()); - box.add(checkAll); - box.add(Box.createHorizontalGlue()); - box.add(uncheckAll); - box.add(Box.createHorizontalGlue()); - add(box, BorderLayout.SOUTH); - - ActionListener listener = new ActionListener(){ - public void actionPerformed(ActionEvent e){ - boolean flag = e.getActionCommand().equals("checkall"); - for(Iterator i = birthmarkSelections(); i.hasNext(); ){ - BirthmarkSelection le = i.next(); - le.setSelected(flag); - fireEvent(); - } - updateLayouts(); - } - }; - checkAll.addActionListener(listener); - uncheckAll.addActionListener(listener); - } - - /** - * update layouts and update selected birthmarks list. - */ - protected void updateLayouts(){ - checks.removeAll(); - Dimension d = calculateDimension(); - checks.setLayout(new GridLayout(d.height, d.width)); - - for(Iterator i = birthmarkSelections(); i.hasNext(); ){ - final BirthmarkSelection elem = i.next(); - if(elem.isVisible(isExpertMode())){ - JCheckBox check = new JCheckBox(elem.getService().getDisplayType()); - check.setSelected(elem.isSelected()); - check.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - JCheckBox c = (JCheckBox)e.getSource(); - elem.setSelected(c.isSelected()); - select(elem.getService().getType(), c.isSelected()); - fireEvent(); - } - }); - checks.add(check); - } - - select(elem.getType(), elem.isVisible(isExpertMode()) && elem.isSelected()); - } - updateUI(); - } - - private Dimension calculateDimension(){ - int rows = 1; - int cols = 0; - for(Iterator i = birthmarkSelections(); i.hasNext(); ){ - BirthmarkSelection selection = i.next(); - if(selection.isVisible(isExpertMode())){ - cols++; - } - } - - if(cols > 4){ - rows = (cols / 3); - if((cols % 3) != 0) rows++; - cols = 3; - } - - return new Dimension(cols, rows); - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Iterator; + +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JPanel; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkSelectionCheckSetPane extends BirthmarkSelectablePane{ + private static final long serialVersionUID = 3209854654743223453L; + + private JPanel checks = new JPanel(); + + public BirthmarkSelectionCheckSetPane(StigmataFrame stigmata){ + super(stigmata); + + initLayouts(); + } + + private void initLayouts(){ + setLayout(new BorderLayout()); + add(checks, BorderLayout.CENTER); + + JButton checkAll = GUIUtility.createButton(getMessages(), "checkall"); + JButton uncheckAll = GUIUtility.createButton(getMessages(), "uncheckall"); + + Box box = Box.createHorizontalBox(); + box.add(Box.createHorizontalGlue()); + box.add(checkAll); + box.add(Box.createHorizontalGlue()); + box.add(uncheckAll); + box.add(Box.createHorizontalGlue()); + add(box, BorderLayout.SOUTH); + + ActionListener listener = new ActionListener(){ + public void actionPerformed(ActionEvent e){ + boolean flag = e.getActionCommand().equals("checkall"); + for(Iterator i = birthmarkSelections(); i.hasNext(); ){ + BirthmarkSelection le = i.next(); + le.setSelected(flag); + fireEvent(); + } + updateLayouts(); + } + }; + checkAll.addActionListener(listener); + uncheckAll.addActionListener(listener); + } + + /** + * update layouts and update selected birthmarks list. + */ + protected void updateLayouts(){ + checks.removeAll(); + Dimension d = calculateDimension(); + checks.setLayout(new GridLayout(d.height, d.width)); + + for(Iterator i = birthmarkSelections(); i.hasNext(); ){ + final BirthmarkSelection elem = i.next(); + if(elem.isVisible(isExpertMode())){ + JCheckBox check = new JCheckBox(elem.getService().getDisplayType()); + check.setSelected(elem.isSelected()); + check.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + JCheckBox c = (JCheckBox)e.getSource(); + elem.setSelected(c.isSelected()); + select(elem.getService().getType(), c.isSelected()); + fireEvent(); + } + }); + checks.add(check); + } + + select(elem.getType(), elem.isVisible(isExpertMode()) && elem.isSelected()); + } + updateUI(); + } + + private Dimension calculateDimension(){ + int rows = 1; + int cols = 0; + for(Iterator i = birthmarkSelections(); i.hasNext(); ){ + BirthmarkSelection selection = i.next(); + if(selection.isVisible(isExpertMode())){ + cols++; + } + } + + if(cols > 4){ + rows = (cols / 3); + if((cols % 3) != 0) rows++; + cols = 3; + } + + return new Dimension(cols, rows); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelectionListPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionListPane.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelectionListPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionListPane.java index adbdbc8..3b1e215 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelectionListPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionListPane.java @@ -1,151 +1,151 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.Iterator; - -import javax.swing.Box; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JList; -import javax.swing.JScrollPane; -import javax.swing.ListCellRenderer; -import javax.swing.UIManager; -import javax.swing.border.Border; -import javax.swing.border.EmptyBorder; - -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkSelectionListPane extends BirthmarkSelectablePane{ - private static final long serialVersionUID = 3209854654743223453L; - - private DefaultListModel model; - private JList list; - - public BirthmarkSelectionListPane(StigmataFrame stigmata){ - super(stigmata); - - initLayouts(); - } - - public void serviceRemoved(BirthmarkSpi service){ - BirthmarkSelection elem = getSelection(service.getType()); - model.removeElement(elem); - - super.serviceRemoved(service); - } - - private void initLayouts(){ - setLayout(new BorderLayout()); - list = new JList(model = new DefaultListModel()); - JScrollPane scroll = new JScrollPane(list); - add(scroll, BorderLayout.CENTER); - list.setCellRenderer(new Renderer()); - list.setVisibleRowCount(5); - JButton checkAll = GUIUtility.createButton(getMessages(), "checkall"); - JButton uncheckAll = GUIUtility.createButton(getMessages(), "uncheckall"); - - Box box = Box.createHorizontalBox(); - box.add(Box.createHorizontalGlue()); - box.add(checkAll); - box.add(Box.createHorizontalGlue()); - box.add(uncheckAll); - box.add(Box.createHorizontalGlue()); - add(box, BorderLayout.SOUTH); - - ActionListener listener = new ActionListener(){ - public void actionPerformed(ActionEvent e){ - boolean flag = e.getActionCommand().equals("checkall"); - for(Iterator i = birthmarkSelections(); i.hasNext(); ){ - BirthmarkSelection le = i.next(); - le.setSelected(flag); - fireEvent(); - } - updateUI(); - } - }; - checkAll.addActionListener(listener); - uncheckAll.addActionListener(listener); - list.addMouseListener(new MouseAdapter(){ - @Override - public void mouseClicked(MouseEvent e){ - int index = list.locationToIndex(e.getPoint()); - list.setSelectedIndex(index); - BirthmarkSelection elem = (BirthmarkSelection)model.getElementAt(index); - elem.setSelected(!elem.isSelected()); - updateUI(); - } - }); - } - - /** - * update layouts and update selected birthmarks list. - */ - protected void updateLayouts(){ - model.removeAllElements(); - - for(Iterator i = birthmarkSelections(); i.hasNext(); ){ - BirthmarkSelection elem = i.next(); - if(elem.isVisible(isExpertMode())){ - model.addElement(elem); - } - - select(elem.getType(), elem.isVisible(isExpertMode()) && elem.isSelected()); - } - updateUI(); - } - - public static class Renderer extends JCheckBox implements ListCellRenderer{ - private static final long serialVersionUID = -324432943654654L; - private static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); - - public Renderer(){ - setOpaque(true); - } - - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean forcus){ - BirthmarkSelection elem = (BirthmarkSelection)value; - setText(elem.getService().getDisplayType()); - setToolTipText(elem.getService().getDescription()); - setSelected(elem.isSelected()); - - if(isSelected){ - setBackground(list.getSelectionBackground()); - setForeground(list.getSelectionForeground()); - } - else{ - setBackground(list.getBackground()); - setForeground(list.getForeground()); - } - - Border border = null; - if(forcus) { - if (isSelected) { - border = UIManager.getBorder("List.focusSelectedCellHighlightBorder"); - } - if (border == null) { - border = UIManager.getBorder("List.focusCellHighlightBorder"); - } - } else { - border = noFocusBorder; - } - setBorder(border); - - return this; - } - }; -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.Iterator; + +import javax.swing.Box; +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JList; +import javax.swing.JScrollPane; +import javax.swing.ListCellRenderer; +import javax.swing.UIManager; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; + +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkSelectionListPane extends BirthmarkSelectablePane{ + private static final long serialVersionUID = 3209854654743223453L; + + private DefaultListModel model; + private JList list; + + public BirthmarkSelectionListPane(StigmataFrame stigmata){ + super(stigmata); + + initLayouts(); + } + + public void serviceRemoved(BirthmarkSpi service){ + BirthmarkSelection elem = getSelection(service.getType()); + model.removeElement(elem); + + super.serviceRemoved(service); + } + + private void initLayouts(){ + setLayout(new BorderLayout()); + list = new JList(model = new DefaultListModel()); + JScrollPane scroll = new JScrollPane(list); + add(scroll, BorderLayout.CENTER); + list.setCellRenderer(new Renderer()); + list.setVisibleRowCount(5); + JButton checkAll = GUIUtility.createButton(getMessages(), "checkall"); + JButton uncheckAll = GUIUtility.createButton(getMessages(), "uncheckall"); + + Box box = Box.createHorizontalBox(); + box.add(Box.createHorizontalGlue()); + box.add(checkAll); + box.add(Box.createHorizontalGlue()); + box.add(uncheckAll); + box.add(Box.createHorizontalGlue()); + add(box, BorderLayout.SOUTH); + + ActionListener listener = new ActionListener(){ + public void actionPerformed(ActionEvent e){ + boolean flag = e.getActionCommand().equals("checkall"); + for(Iterator i = birthmarkSelections(); i.hasNext(); ){ + BirthmarkSelection le = i.next(); + le.setSelected(flag); + fireEvent(); + } + updateUI(); + } + }; + checkAll.addActionListener(listener); + uncheckAll.addActionListener(listener); + list.addMouseListener(new MouseAdapter(){ + @Override + public void mouseClicked(MouseEvent e){ + int index = list.locationToIndex(e.getPoint()); + list.setSelectedIndex(index); + BirthmarkSelection elem = (BirthmarkSelection)model.getElementAt(index); + elem.setSelected(!elem.isSelected()); + updateUI(); + } + }); + } + + /** + * update layouts and update selected birthmarks list. + */ + protected void updateLayouts(){ + model.removeAllElements(); + + for(Iterator i = birthmarkSelections(); i.hasNext(); ){ + BirthmarkSelection elem = i.next(); + if(elem.isVisible(isExpertMode())){ + model.addElement(elem); + } + + select(elem.getType(), elem.isVisible(isExpertMode()) && elem.isSelected()); + } + updateUI(); + } + + public static class Renderer extends JCheckBox implements ListCellRenderer{ + private static final long serialVersionUID = -324432943654654L; + private static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); + + public Renderer(){ + setOpaque(true); + } + + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean forcus){ + BirthmarkSelection elem = (BirthmarkSelection)value; + setText(elem.getService().getDisplayType()); + setToolTipText(elem.getService().getDescription()); + setSelected(elem.isSelected()); + + if(isSelected){ + setBackground(list.getSelectionBackground()); + setForeground(list.getSelectionForeground()); + } + else{ + setBackground(list.getBackground()); + setForeground(list.getForeground()); + } + + Border border = null; + if(forcus) { + if (isSelected) { + border = UIManager.getBorder("List.focusSelectedCellHighlightBorder"); + } + if (border == null) { + border = UIManager.getBorder("List.focusCellHighlightBorder"); + } + } else { + border = noFocusBorder; + } + setBorder(border); + + return this; + } + }; +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkServiceListCellRenderer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListCellRenderer.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkServiceListCellRenderer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListCellRenderer.java index 7b352ad..3ddbda7 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkServiceListCellRenderer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListCellRenderer.java @@ -1,89 +1,89 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; - -import javax.swing.BorderFactory; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.ListCellRenderer; -import javax.swing.UIManager; -import javax.swing.border.Border; -import javax.swing.border.EmptyBorder; - -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkServiceListCellRenderer extends JPanel implements ListCellRenderer{ - private static final long serialVersionUID = 3254763527508235L; - private static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); - - private final JLabel leftLabel = new JLabel(); - private final JLabel rightLabel = new JLabel(); - - public BirthmarkServiceListCellRenderer(Dimension dim, int rightw){ - super(new BorderLayout()); - leftLabel.setOpaque(true); - rightLabel.setOpaque(true); - this.setOpaque(true); - leftLabel.setBorder(BorderFactory.createEmptyBorder(0,2,0,0)); - rightLabel.setPreferredSize(new Dimension(rightw, 0)); - rightLabel.setBorder(BorderFactory.createEmptyBorder(0,5,0,0)); - this.add(leftLabel, BorderLayout.CENTER); - this.add(rightLabel, BorderLayout.EAST); - this.setPreferredSize(dim); - } - - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean hasFocus){ - if(value instanceof BirthmarkSpi){ - BirthmarkSpi service = (BirthmarkSpi)value; - leftLabel.setText(service.getDisplayType()); - rightLabel.setText("(" + service.getType() + ")"); - } - else{ - leftLabel.setText(String.valueOf(value)); - rightLabel.setText(""); - } - if(isSelected){ - setBackground(list.getSelectionBackground()); - setForeground(list.getSelectionForeground()); - leftLabel.setBackground(list.getSelectionBackground()); - leftLabel.setForeground(list.getSelectionForeground()); - rightLabel.setBackground(list.getSelectionBackground()); - rightLabel.setForeground(Color.gray.brighter()); - } - else{ - setBackground(list.getBackground()); - setForeground(list.getForeground()); - leftLabel.setBackground(list.getBackground()); - leftLabel.setForeground(list.getForeground()); - rightLabel.setBackground(list.getBackground()); - rightLabel.setForeground(Color.gray); - } - Border border = null; - if(hasFocus) { - if (isSelected) { - border = UIManager.getBorder("List.focusSelectedCellHighlightBorder"); - } - if (border == null) { - border = UIManager.getBorder("List.focusCellHighlightBorder"); - } - } else { - border = noFocusBorder; - } - setBorder(border); - - return this; - } +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; + +import javax.swing.BorderFactory; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.ListCellRenderer; +import javax.swing.UIManager; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; + +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkServiceListCellRenderer extends JPanel implements ListCellRenderer{ + private static final long serialVersionUID = 3254763527508235L; + private static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); + + private final JLabel leftLabel = new JLabel(); + private final JLabel rightLabel = new JLabel(); + + public BirthmarkServiceListCellRenderer(Dimension dim, int rightw){ + super(new BorderLayout()); + leftLabel.setOpaque(true); + rightLabel.setOpaque(true); + this.setOpaque(true); + leftLabel.setBorder(BorderFactory.createEmptyBorder(0,2,0,0)); + rightLabel.setPreferredSize(new Dimension(rightw, 0)); + rightLabel.setBorder(BorderFactory.createEmptyBorder(0,5,0,0)); + this.add(leftLabel, BorderLayout.CENTER); + this.add(rightLabel, BorderLayout.EAST); + this.setPreferredSize(dim); + } + + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean hasFocus){ + if(value instanceof BirthmarkSpi){ + BirthmarkSpi service = (BirthmarkSpi)value; + leftLabel.setText(service.getDisplayType()); + rightLabel.setText("(" + service.getType() + ")"); + } + else{ + leftLabel.setText(String.valueOf(value)); + rightLabel.setText(""); + } + if(isSelected){ + setBackground(list.getSelectionBackground()); + setForeground(list.getSelectionForeground()); + leftLabel.setBackground(list.getSelectionBackground()); + leftLabel.setForeground(list.getSelectionForeground()); + rightLabel.setBackground(list.getSelectionBackground()); + rightLabel.setForeground(Color.gray.brighter()); + } + else{ + setBackground(list.getBackground()); + setForeground(list.getForeground()); + leftLabel.setBackground(list.getBackground()); + leftLabel.setForeground(list.getForeground()); + rightLabel.setBackground(list.getBackground()); + rightLabel.setForeground(Color.gray); + } + Border border = null; + if(hasFocus) { + if (isSelected) { + border = UIManager.getBorder("List.focusSelectedCellHighlightBorder"); + } + if (border == null) { + border = UIManager.getBorder("List.focusCellHighlightBorder"); + } + } else { + border = noFocusBorder; + } + setBorder(border); + + return this; + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkServiceListener.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListener.java similarity index 69% rename from src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkServiceListener.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListener.java index 2653275..fa19500 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkServiceListener.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListener.java @@ -1,18 +1,18 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public interface BirthmarkServiceListener{ - public void serviceAdded(BirthmarkSpi service); - - public void serviceRemoved(BirthmarkSpi service); -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public interface BirthmarkServiceListener{ + public void serviceAdded(BirthmarkSpi service); + + public void serviceRemoved(BirthmarkSpi service); +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkTree.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkTree.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkTree.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkTree.java index cf3db63..b82d0fc 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkTree.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkTree.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.ui.swing; +package jp.sourceforge.stigmata.ui.swing; /* * $Id$ @@ -11,7 +11,7 @@ import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; -import jp.naist.se.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.BirthmarkSet; /** * diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkTreeNode.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkTreeNode.java similarity index 90% rename from src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkTreeNode.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkTreeNode.java index 2d81d77..81ad49e 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkTreeNode.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkTreeNode.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.ui.swing; +package jp.sourceforge.stigmata.ui.swing; /* * $Id$ @@ -6,9 +6,9 @@ package jp.naist.se.stigmata.ui.swing; import javax.swing.tree.DefaultMutableTreeNode; -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkSet; /** * diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/ClassNameObfuscator.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/ClassNameObfuscator.java similarity index 88% rename from src/main/java/jp/naist/se/stigmata/ui/swing/ClassNameObfuscator.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/ClassNameObfuscator.java index 1428c08..2e28370 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/ClassNameObfuscator.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/ClassNameObfuscator.java @@ -1,57 +1,57 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.HashMap; -import java.util.Map; - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkSet; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ClassNameObfuscator{ - private Map nameMapping = new HashMap(); - - public void outputNameMappings(File file) throws IOException{ - PrintWriter out = null; - try{ - out = new PrintWriter(new FileWriter(file)); - for(String oldName: nameMapping.keySet()){ - String newName = nameMapping.get(oldName); - out.print(oldName); - out.print(","); - out.println(newName); - } - - }finally{ - if(out != null){ - out.close(); - } - } - } - - public BirthmarkSet obfuscateClassName(BirthmarkSet orig){ - String newName = nameMapping.get(orig.getName()); - if(newName == null){ - newName = String.format("C%04d", new Object[] { new Integer(nameMapping.size() + 1), }); - nameMapping.put(orig.getName(), newName); - } - - BirthmarkSet newSet = new BirthmarkSet(newName, orig.getLocation()); - for(Birthmark birthmark: orig){ - newSet.addBirthmark(birthmark); - } - return newSet; - } - -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.Map; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkSet; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ClassNameObfuscator{ + private Map nameMapping = new HashMap(); + + public void outputNameMappings(File file) throws IOException{ + PrintWriter out = null; + try{ + out = new PrintWriter(new FileWriter(file)); + for(String oldName: nameMapping.keySet()){ + String newName = nameMapping.get(oldName); + out.print(oldName); + out.print(","); + out.println(newName); + } + + }finally{ + if(out != null){ + out.close(); + } + } + } + + public BirthmarkSet obfuscateClassName(BirthmarkSet orig){ + String newName = nameMapping.get(orig.getName()); + if(newName == null){ + newName = String.format("C%04d", new Object[] { new Integer(nameMapping.size() + 1), }); + nameMapping.put(orig.getName(), newName); + } + + BirthmarkSet newSet = new BirthmarkSet(newName, orig.getLocation()); + for(Birthmark birthmark: orig){ + newSet.addBirthmark(birthmark); + } + return newSet; + } + +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/ClasspathSettingsPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/ClasspathSettingsPane.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ui/swing/ClasspathSettingsPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/ClasspathSettingsPane.java index 85dc4f7..47dfb4f 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/ClasspathSettingsPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/ClasspathSettingsPane.java @@ -1,195 +1,195 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; - -import javax.swing.Box; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.border.TitledBorder; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; - -import jp.naist.se.stigmata.Stigmata; -import jp.naist.se.stigmata.reader.ClasspathContext; -import jp.sourceforge.talisman.i18n.Messages; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ClasspathSettingsPane extends JPanel{ - private static final long serialVersionUID = 320973463423634L; - - private StigmataFrame stigmata; - private TargetSelectionPane classpath; - private TargetSelectionPane bootClasspath; - - public ClasspathSettingsPane(StigmataFrame frame){ - this.stigmata = frame; - - initLayouts(); - } - - public void updateClasspathContext(ClasspathContext context){ - String[] cplist = classpath.getValues(); - if(cplist != null && cplist.length >= 0){ - for(int i = 0; i < cplist.length; i++){ - try{ - URL url = null; - try{ - url = new URL(cplist[i]); - } catch(MalformedURLException e){ - url = new File(cplist[i]).toURI().toURL(); - } - context.addClasspath(url); - }catch(IOException ee){ - } - } - } - } - - public void reset(){ - classpath.removeAllElements(); - bootClasspath.removeAllElements(); - try{ - ClasspathContext context = stigmata.getEnvironment().getClasspathContext(); - for(URL url: context){ - classpath.addValue(url.toString()); - } - - addClasspath(bootClasspath, System.getProperty("java.class.path")); - addClasspath(bootClasspath, System.getProperty("sun.boot.class.path")); - } catch(SecurityException e){ - e.printStackTrace(); - } - } - - private void addClasspath(TargetSelectionPane target, String classpath){ - if(classpath != null){ - target.addValues(classpath.split(System.getProperty("path.separator"))); - stigmata.setNeedToSaveSettings(true); - } - } - - private boolean findClass(String className){ - try{ - ClasspathContext b = Stigmata.getInstance().createEnvironment().getClasspathContext(); - ClasspathContext bytecode = new ClasspathContext(b); - String[] path = classpath.getValues(); - for(String cp: path){ - bytecode.addClasspath(new File(cp).toURI().toURL()); - } - return bytecode.findClass(className) != null; - }catch(ClassNotFoundException e){ - }catch(MalformedURLException e){ - } - return false; - } - - private void initLayouts(){ - final Messages messages = stigmata.getMessages(); - JComponent panel = new JPanel(new GridLayout(1, 2)); - classpath = new TargetSelectionPane(stigmata); - bootClasspath = new TargetSelectionPane(stigmata); - JComponent south = Box.createHorizontalBox(); - final JButton findButton = GUIUtility.createButton(messages, "findclass"); - final JTextField text = new JTextField(); - final JLabel label = new JLabel(); - - classpath.setBorder(new TitledBorder(stigmata.getMessages().get("userclasspath.border"))); - classpath.addTargetExtensions(stigmata.getMessages().getArray("userclasspath.extensions")); - classpath.setDescription(stigmata.getMessages().get("userclasspath.description")); - classpath.setDirectorySelectable(true); - - bootClasspath.setBorder(new TitledBorder(stigmata.getMessages().get("bootclasspath.border"))); - bootClasspath.setEnabled(false); - - findButton.setEnabled(false); - - south.setBorder(new TitledBorder(stigmata.getMessages().get("classpathchecker.border"))); - - label.setIcon(GUIUtility.getIcon(messages, "classpathchecker.default.icon")); - label.setToolTipText(stigmata.getMessages().get("classpathchecker.default.tooltip")); - - setLayout(new BorderLayout()); - add(panel, BorderLayout.CENTER); - add(south, BorderLayout.SOUTH); - - panel.add(classpath); - panel.add(bootClasspath); - - south.add(Box.createHorizontalGlue()); - south.add(text); - south.add(Box.createHorizontalGlue()); - south.add(findButton); - south.add(Box.createHorizontalGlue()); - south.add(label); - south.add(Box.createHorizontalGlue()); - - text.getDocument().addDocumentListener(new DocumentListener(){ - public void changedUpdate(DocumentEvent arg0){ - String t = text.getText(); - findButton.setEnabled(t.trim().length() > 0); - } - - public void insertUpdate(DocumentEvent arg0){ - String t = text.getText(); - findButton.setEnabled(t.trim().length() > 0); - } - - public void removeUpdate(DocumentEvent arg0){ - String t = text.getText(); - findButton.setEnabled(t.trim().length() > 0); - } - }); - ActionListener action = new ActionListener(){ - public void actionPerformed(ActionEvent e){ - String t = text.getText().trim(); - boolean flag = findClass(t); - String message = stigmata.getMessages().get("classpathchecker.found.tooltip"); - if(flag){ - label.setIcon(GUIUtility.getIcon(messages, "classpathchecker.found.icon")); - } - else{ - label.setIcon(GUIUtility.getIcon(messages, "classpathchecker.notfound.icon")); - message = stigmata.getMessages().get("classpathchecker.notfound.tooltip"); - } - label.setToolTipText(message); - String dm = String.format( - "
%s
%s
", t, message - ); - JOptionPane.showMessageDialog( - stigmata, dm, stigmata.getMessages().get("classpathchecker.dialog.title"), - JOptionPane.INFORMATION_MESSAGE - ); - } - }; - - classpath.addDataChangeListener(new DataChangeListener(){ - public void valueChanged(Object source){ - stigmata.setNeedToSaveSettings(true); - } - }); - - findButton.addActionListener(action); - text.addActionListener(action); - } +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.border.TitledBorder; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; + +import jp.sourceforge.stigmata.Stigmata; +import jp.sourceforge.stigmata.reader.ClasspathContext; +import jp.sourceforge.talisman.i18n.Messages; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ClasspathSettingsPane extends JPanel{ + private static final long serialVersionUID = 320973463423634L; + + private StigmataFrame stigmata; + private TargetSelectionPane classpath; + private TargetSelectionPane bootClasspath; + + public ClasspathSettingsPane(StigmataFrame frame){ + this.stigmata = frame; + + initLayouts(); + } + + public void updateClasspathContext(ClasspathContext context){ + String[] cplist = classpath.getValues(); + if(cplist != null && cplist.length >= 0){ + for(int i = 0; i < cplist.length; i++){ + try{ + URL url = null; + try{ + url = new URL(cplist[i]); + } catch(MalformedURLException e){ + url = new File(cplist[i]).toURI().toURL(); + } + context.addClasspath(url); + }catch(IOException ee){ + } + } + } + } + + public void reset(){ + classpath.removeAllElements(); + bootClasspath.removeAllElements(); + try{ + ClasspathContext context = stigmata.getEnvironment().getClasspathContext(); + for(URL url: context){ + classpath.addValue(url.toString()); + } + + addClasspath(bootClasspath, System.getProperty("java.class.path")); + addClasspath(bootClasspath, System.getProperty("sun.boot.class.path")); + } catch(SecurityException e){ + e.printStackTrace(); + } + } + + private void addClasspath(TargetSelectionPane target, String classpath){ + if(classpath != null){ + target.addValues(classpath.split(System.getProperty("path.separator"))); + stigmata.setNeedToSaveSettings(true); + } + } + + private boolean findClass(String className){ + try{ + ClasspathContext b = Stigmata.getInstance().createEnvironment().getClasspathContext(); + ClasspathContext bytecode = new ClasspathContext(b); + String[] path = classpath.getValues(); + for(String cp: path){ + bytecode.addClasspath(new File(cp).toURI().toURL()); + } + return bytecode.findClass(className) != null; + }catch(ClassNotFoundException e){ + }catch(MalformedURLException e){ + } + return false; + } + + private void initLayouts(){ + final Messages messages = stigmata.getMessages(); + JComponent panel = new JPanel(new GridLayout(1, 2)); + classpath = new TargetSelectionPane(stigmata); + bootClasspath = new TargetSelectionPane(stigmata); + JComponent south = Box.createHorizontalBox(); + final JButton findButton = GUIUtility.createButton(messages, "findclass"); + final JTextField text = new JTextField(); + final JLabel label = new JLabel(); + + classpath.setBorder(new TitledBorder(stigmata.getMessages().get("userclasspath.border"))); + classpath.addTargetExtensions(stigmata.getMessages().getArray("userclasspath.extensions")); + classpath.setDescription(stigmata.getMessages().get("userclasspath.description")); + classpath.setDirectorySelectable(true); + + bootClasspath.setBorder(new TitledBorder(stigmata.getMessages().get("bootclasspath.border"))); + bootClasspath.setEnabled(false); + + findButton.setEnabled(false); + + south.setBorder(new TitledBorder(stigmata.getMessages().get("classpathchecker.border"))); + + label.setIcon(GUIUtility.getIcon(messages, "classpathchecker.default.icon")); + label.setToolTipText(stigmata.getMessages().get("classpathchecker.default.tooltip")); + + setLayout(new BorderLayout()); + add(panel, BorderLayout.CENTER); + add(south, BorderLayout.SOUTH); + + panel.add(classpath); + panel.add(bootClasspath); + + south.add(Box.createHorizontalGlue()); + south.add(text); + south.add(Box.createHorizontalGlue()); + south.add(findButton); + south.add(Box.createHorizontalGlue()); + south.add(label); + south.add(Box.createHorizontalGlue()); + + text.getDocument().addDocumentListener(new DocumentListener(){ + public void changedUpdate(DocumentEvent arg0){ + String t = text.getText(); + findButton.setEnabled(t.trim().length() > 0); + } + + public void insertUpdate(DocumentEvent arg0){ + String t = text.getText(); + findButton.setEnabled(t.trim().length() > 0); + } + + public void removeUpdate(DocumentEvent arg0){ + String t = text.getText(); + findButton.setEnabled(t.trim().length() > 0); + } + }); + ActionListener action = new ActionListener(){ + public void actionPerformed(ActionEvent e){ + String t = text.getText().trim(); + boolean flag = findClass(t); + String message = stigmata.getMessages().get("classpathchecker.found.tooltip"); + if(flag){ + label.setIcon(GUIUtility.getIcon(messages, "classpathchecker.found.icon")); + } + else{ + label.setIcon(GUIUtility.getIcon(messages, "classpathchecker.notfound.icon")); + message = stigmata.getMessages().get("classpathchecker.notfound.tooltip"); + } + label.setToolTipText(message); + String dm = String.format( + "
%s
%s
", t, message + ); + JOptionPane.showMessageDialog( + stigmata, dm, stigmata.getMessages().get("classpathchecker.dialog.title"), + JOptionPane.INFORMATION_MESSAGE + ); + } + }; + + classpath.addDataChangeListener(new DataChangeListener(){ + public void valueChanged(Object source){ + stigmata.setNeedToSaveSettings(true); + } + }); + + findButton.addActionListener(action); + text.addActionListener(action); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/ClippedLRListCellRenderer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/ClippedLRListCellRenderer.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ui/swing/ClippedLRListCellRenderer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/ClippedLRListCellRenderer.java index b0531f3..d13abc3 100755 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/ClippedLRListCellRenderer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/ClippedLRListCellRenderer.java @@ -1,106 +1,106 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.SystemColor; - -import javax.swing.BorderFactory; -import javax.swing.Icon; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.ListCellRenderer; - -/** - * copy from tempura memo available at - * http://terai.xrea.jp/Swing/ClippedLRComboBox.html - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class ClippedLRListCellRenderer extends JPanel implements ListCellRenderer{ - private static final long serialVersionUID = 32943674625674235L; - - private final JLabel left = new JLabel(); - private final JLabel right = new JLabel(); - - public ClippedLRListCellRenderer(Dimension dim, int rightWidth){ - super(new BorderLayout()); - left.setOpaque(true); - right.setOpaque(true); - left.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0)); - right.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); - right.setPreferredSize(new Dimension(rightWidth, 0)); - - add(left, BorderLayout.CENTER); - add(right, BorderLayout.EAST); - setPreferredSize(dim); - } - - public Component getListCellRendererComponent(JList list, Object value, int index, - boolean isSelected, boolean cellHasFocus){ - LRItem item = (LRItem)value; - if(item != null){ - left.setText(String.valueOf(item.getLeft())); - right.setText(String.valueOf(item.getRight())); - } - - if(item.getIcon() != null){ - left.setIcon(item.getIcon()); - } - - setBackground(isSelected ? SystemColor.textHighlight: Color.white); - left.setBackground(isSelected ? SystemColor.textHighlight: Color.white); - right.setBackground(isSelected ? SystemColor.textHighlight: Color.white); - left.setForeground(isSelected ? Color.white: Color.black); - right.setForeground(isSelected ? Color.gray.brighter(): Color.gray); - - return this; - } - - public static class LRItem{ - private Object left; - private Object right; - private Icon icon; - - public LRItem(Icon icon, Object left, Object right){ - this(left, right); - setIcon(icon); - } - - public LRItem(Object left, Object right){ - setLeft(left); - setRight(right); - } - - public Icon getIcon(){ - return icon; - } - - public void setIcon(Icon icon){ - this.icon = icon; - } - - public Object getLeft(){ - return left; - } - - public void setLeft(Object left){ - this.left = left; - } - - public Object getRight(){ - return right; - } - - public void setRight(Object right){ - this.right = right; - } - } +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.SystemColor; + +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.ListCellRenderer; + +/** + * copy from tempura memo available at + * http://terai.xrea.jp/Swing/ClippedLRComboBox.html + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class ClippedLRListCellRenderer extends JPanel implements ListCellRenderer{ + private static final long serialVersionUID = 32943674625674235L; + + private final JLabel left = new JLabel(); + private final JLabel right = new JLabel(); + + public ClippedLRListCellRenderer(Dimension dim, int rightWidth){ + super(new BorderLayout()); + left.setOpaque(true); + right.setOpaque(true); + left.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0)); + right.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); + right.setPreferredSize(new Dimension(rightWidth, 0)); + + add(left, BorderLayout.CENTER); + add(right, BorderLayout.EAST); + setPreferredSize(dim); + } + + public Component getListCellRendererComponent(JList list, Object value, int index, + boolean isSelected, boolean cellHasFocus){ + LRItem item = (LRItem)value; + if(item != null){ + left.setText(String.valueOf(item.getLeft())); + right.setText(String.valueOf(item.getRight())); + } + + if(item.getIcon() != null){ + left.setIcon(item.getIcon()); + } + + setBackground(isSelected ? SystemColor.textHighlight: Color.white); + left.setBackground(isSelected ? SystemColor.textHighlight: Color.white); + right.setBackground(isSelected ? SystemColor.textHighlight: Color.white); + left.setForeground(isSelected ? Color.white: Color.black); + right.setForeground(isSelected ? Color.gray.brighter(): Color.gray); + + return this; + } + + public static class LRItem{ + private Object left; + private Object right; + private Icon icon; + + public LRItem(Icon icon, Object left, Object right){ + this(left, right); + setIcon(icon); + } + + public LRItem(Object left, Object right){ + setLeft(left); + setRight(right); + } + + public Icon getIcon(){ + return icon; + } + + public void setIcon(Icon icon){ + this.icon = icon; + } + + public Object getLeft(){ + return left; + } + + public void setLeft(Object left){ + this.left = left; + } + + public Object getRight(){ + return right; + } + + public void setRight(Object right){ + this.right = right; + } + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/CompareTableCellRenderer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/CompareTableCellRenderer.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/ui/swing/CompareTableCellRenderer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/CompareTableCellRenderer.java index 04e3cf6..ac64315 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/CompareTableCellRenderer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/CompareTableCellRenderer.java @@ -1,100 +1,100 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.Color; -import java.awt.Component; - -import javax.swing.JTable; -import javax.swing.table.DefaultTableCellRenderer; - -import jp.naist.se.stigmata.BirthmarkEnvironment; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class CompareTableCellRenderer extends DefaultTableCellRenderer{ - private static final long serialVersionUID = 234557758658567345L; - private static final double EPSILON = 1E-8d; - - private BirthmarkEnvironment environment; - - public CompareTableCellRenderer(BirthmarkEnvironment environment){ - this.environment = environment; - } - - public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, - boolean hasForcus, int row, int col){ - Object value = table.getValueAt(row, col); - Component c = super.getTableCellRendererComponent( - table, obj, isSelected, hasForcus, row, col - ); - if(value instanceof Double && !isSelected){ - double d = ((Double)value).doubleValue(); - int rank = 0; - if(d < EPSILON) rank = 0; - else if((d - 0.2d) < EPSILON) rank = 1; - else if((d - 0.4d) < EPSILON) rank = 2; - else if((d - 0.6d) < EPSILON) rank = 3; - else if((d - 0.8d) < EPSILON) rank = 4; - else if((d - 1.0d) < EPSILON) rank = 5; - - c.setBackground(getBackgroundColor(rank, environment)); - c.setForeground(getForegroundColor(rank, environment)); - } - - return c; - } - - public static Color getDefaultForegroundColor(int rank){ - int c = 180 - ((180 / 5) * rank); - return new Color(c, c, c); - } - - public static Color getDefaultBackgroundColor(int rank){ - Color c; - switch(rank){ - case 5: - c = Color.RED; - break; - case 0: case 1: case 2: case 3: case 4: - default: - c = Color.WHITE; - break; - } - return c; - } - - public static Color getBackgroundColor(int rank, BirthmarkEnvironment environment){ - Color c = getColor("backcolor_" + rank, environment); - if(c == null){ - return getDefaultBackgroundColor(rank); - } - return c; - } - - public static Color getForegroundColor(int rank, BirthmarkEnvironment environment){ - Color c = getColor("forecolor_" + rank, environment); - if(c == null){ - c = getDefaultForegroundColor(rank); - } - return c; - } - - private static Color getColor(String key, BirthmarkEnvironment environment){ - String v = environment.getProperty(key); - try{ - int color = Integer.parseInt(v, 16); - - return new Color( - (color >>> 16) & 0xff, (color >>> 8) & 0xff, color & 0xff - ); - } catch(NumberFormatException e){ - return null; - } - } +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.Color; +import java.awt.Component; + +import javax.swing.JTable; +import javax.swing.table.DefaultTableCellRenderer; + +import jp.sourceforge.stigmata.BirthmarkEnvironment; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class CompareTableCellRenderer extends DefaultTableCellRenderer{ + private static final long serialVersionUID = 234557758658567345L; + private static final double EPSILON = 1E-8d; + + private BirthmarkEnvironment environment; + + public CompareTableCellRenderer(BirthmarkEnvironment environment){ + this.environment = environment; + } + + public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, + boolean hasForcus, int row, int col){ + Object value = table.getValueAt(row, col); + Component c = super.getTableCellRendererComponent( + table, obj, isSelected, hasForcus, row, col + ); + if(value instanceof Double && !isSelected){ + double d = ((Double)value).doubleValue(); + int rank = 0; + if(d < EPSILON) rank = 0; + else if((d - 0.2d) < EPSILON) rank = 1; + else if((d - 0.4d) < EPSILON) rank = 2; + else if((d - 0.6d) < EPSILON) rank = 3; + else if((d - 0.8d) < EPSILON) rank = 4; + else if((d - 1.0d) < EPSILON) rank = 5; + + c.setBackground(getBackgroundColor(rank, environment)); + c.setForeground(getForegroundColor(rank, environment)); + } + + return c; + } + + public static Color getDefaultForegroundColor(int rank){ + int c = 180 - ((180 / 5) * rank); + return new Color(c, c, c); + } + + public static Color getDefaultBackgroundColor(int rank){ + Color c; + switch(rank){ + case 5: + c = Color.RED; + break; + case 0: case 1: case 2: case 3: case 4: + default: + c = Color.WHITE; + break; + } + return c; + } + + public static Color getBackgroundColor(int rank, BirthmarkEnvironment environment){ + Color c = getColor("backcolor_" + rank, environment); + if(c == null){ + return getDefaultBackgroundColor(rank); + } + return c; + } + + public static Color getForegroundColor(int rank, BirthmarkEnvironment environment){ + Color c = getColor("forecolor_" + rank, environment); + if(c == null){ + c = getDefaultForegroundColor(rank); + } + return c; + } + + private static Color getColor(String key, BirthmarkEnvironment environment){ + String v = environment.getProperty(key); + try{ + int color = Integer.parseInt(v, 16); + + return new Color( + (color >>> 16) & 0xff, (color >>> 8) & 0xff, color & 0xff + ); + } catch(NumberFormatException e){ + return null; + } + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/ControlPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/ControlPane.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/ui/swing/ControlPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/ControlPane.java index 85c4296..0ade5ad 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/ControlPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/ControlPane.java @@ -1,411 +1,411 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.HashMap; -import java.util.Map; - -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JComponent; -import javax.swing.JMenuItem; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JTabbedPane; -import javax.swing.border.TitledBorder; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkStoreTarget; -import jp.naist.se.stigmata.ComparisonMethod; -import jp.naist.se.stigmata.ExtractionUnit; -import jp.naist.se.stigmata.Stigmata; -import jp.naist.se.stigmata.filter.ComparisonPairFilterManager; -import jp.naist.se.stigmata.reader.ClasspathContext; -import jp.naist.se.stigmata.utils.ConfigFileExporter; -import jp.naist.se.stigmata.utils.WellknownClassManager; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ControlPane extends JPanel{ - private static final long serialVersionUID = 983547612346543645L; - - private StigmataFrame stigmata; - private BirthmarkSelectablePane birthmarks; - private TargetSelectionPane targetX; - private TargetSelectionPane targetY; - private ClasspathSettingsPane classpath; - private WellknownClassesSettingsPane wellknownClassses; - private BirthmarkDefinitionPane definition; - private PropertyEditPane properties; - private FilterManagementPane filters; - private ExtractedHistoryPane history; - private JTabbedPane controlTab; - private JButton compareButton; - private JButton extractButton; - private JButton resetButton; - private PopupButton comparePopup; - private JComboBox unitBox; - private Map unitLabels = new HashMap(); - private boolean expertmode = false; - - public ControlPane(StigmataFrame stigmata){ - this.stigmata = stigmata; - } - - void inititalize(){ - definition = new BirthmarkDefinitionPane(stigmata); - birthmarks = new BirthmarkSelectionCheckSetPane(stigmata); - properties = new PropertyEditPane(stigmata); - JComponent control = createControlPane(); - wellknownClassses = new WellknownClassesSettingsPane(stigmata); - classpath = new ClasspathSettingsPane(stigmata); - filters = new FilterManagementPane(stigmata); - history = new ExtractedHistoryPane(stigmata); - initComponents(); - - GUIUtility.addNewTab(stigmata.getMessages(), "targets", controlTab, control); - GUIUtility.addNewTab(stigmata.getMessages(), "wellknown", controlTab, wellknownClassses); - GUIUtility.addNewTab(stigmata.getMessages(), "classpath", controlTab, classpath); - GUIUtility.addNewTab(stigmata.getMessages(), "property", controlTab, properties); - reset(); - } - - public void addBirthmarkServiceListener(BirthmarkServiceListener listener){ - definition.addBirthmarkServiceListener(listener); - } - - public void removeBirthmarkServiceListener(BirthmarkServiceListener listener){ - definition.removeBirthmarkServiceListener(listener); - } - - public void reset(){ - this.expertmode = false; - definition.reset(); - birthmarks.reset(); - stigmata.setExpertMode(false); - targetX.removeAllElements(); - targetY.removeAllElements(); - - classpath.reset(); - wellknownClassses.reset(); - filters.reset(); - updateEnable(); - - int definitionTabIndex = controlTab.indexOfTab(stigmata.getMessages().get("definition.tab.label")); - if(definitionTabIndex >= 0){ - controlTab.removeTabAt(definitionTabIndex); - } - int filterTabIndex = controlTab.indexOfTab(stigmata.getMessages().get("filter.tab.label")); - if(filterTabIndex >= 0){ - controlTab.removeTabAt(filterTabIndex); - } - } - - public void saveSettings(File file){ - BirthmarkEnvironment environment = generateEnvironment(); - ConfigFileExporter bce = new ConfigFileExporter(environment); - try{ - PrintWriter out = new PrintWriter(new FileWriter(file)); - bce.export(out); - out.close(); - } catch(IOException e){ - JOptionPane.showMessageDialog( - stigmata, - stigmata.getMessages().get("error.io", e.getMessage()), - stigmata.getMessages().get("error.dialog.title"), - JOptionPane.ERROR_MESSAGE - ); - } - } - - public void exportSettings(){ - File file = stigmata.getSaveFile( - stigmata.getMessages().getArray("export.extensions"), - stigmata.getMessages().get("export.description") - ); - - if(file != null){ - if(!file.getName().endsWith(".xml")){ - file = new File(file.getParent(), file.getName() + ".xml"); - } - saveSettings(file); - } - } - - public void setExpertMode(boolean expertmode){ - this.expertmode = expertmode; - birthmarks.setExpertMode(expertmode); - stigmata.setExpertMode(expertmode); - - if(expertmode){ - GUIUtility.addNewTab(stigmata.getMessages(), "definition", controlTab, definition); - GUIUtility.addNewTab(stigmata.getMessages(), "filter", controlTab, filters); - GUIUtility.addNewTab(stigmata.getMessages(), "history", controlTab, history); - } - else{ - removeTabByName(stigmata.getMessages().get("definition.tab.label")); - removeTabByName(stigmata.getMessages().get("filter.tab.label")); - removeTabByName(stigmata.getMessages().get("history.tab.label")); - } - updateEnable(); - } - - public boolean isExpertMode(){ - return expertmode; - } - - private void removeTabByName(String tabname){ - int index = controlTab.indexOfTab(tabname); - if(index >= 0){ - controlTab.removeTabAt(index); - } - } - - private JComponent createControlPane(){ - JComponent mainPane = new Box(BoxLayout.X_AXIS); - JPanel center = new JPanel(new BorderLayout()); - targetX = new TargetSelectionPane(stigmata); - targetY = new TargetSelectionPane(stigmata); - - birthmarks.setBorder(new TitledBorder(stigmata.getMessages().get("birthmarkspane.border"))); - - targetX.addTargetExtensions(stigmata.getMessages().getArray("targets.extensions")); - targetX.setDescription(stigmata.getMessages().get("targets.description")); - targetX.setBorder(new TitledBorder(stigmata.getMessages().get("targetx.border"))); - - targetY.addTargetExtensions(stigmata.getMessages().getArray("targets.extensions")); - targetY.setDescription(stigmata.getMessages().get("targets.description")); - targetY.setBorder(new TitledBorder(stigmata.getMessages().get("targety.border"))); - - center.add(mainPane, BorderLayout.CENTER); - center.add(birthmarks, BorderLayout.SOUTH); - - mainPane.add(Box.createHorizontalGlue()); - mainPane.add(targetX); - mainPane.add(Box.createHorizontalGlue()); - mainPane.add(targetY); - mainPane.add(Box.createHorizontalGlue()); - - DataChangeListener dcl = new DataChangeListener(){ - public void valueChanged(Object source){ - updateEnable(); - } - }; - targetX.addDataChangeListener(dcl); - targetY.addDataChangeListener(dcl); - birthmarks.addDataChangeListener(dcl); - - return center; - } - - private void updateEnable(){ - String[] valueX = targetX.getValues(); - String[] valueY = targetY.getValues(); - String[] targets = birthmarks.getSelectedServiceTypes(); - - extractButton.setEnabled( - ((valueX != null && valueX.length > 0) || (valueY != null && valueY.length > 0)) - && (targets != null && targets.length > 0) - ); - - comparePopup.setEnabled( - (valueX != null && valueX.length > 0) && - (valueY != null && valueY.length > 0) && - (targets != null && targets.length > 0) - ); - } - - private void extractButtonActionPerformed(ActionEvent e){ - BirthmarkContext context = generateContext(); - context.setComparisonMethod(ComparisonMethod.ROUND_ROBIN_XY); - - String[] fileX = targetX.getValues(); - String[] fileY = targetY.getValues(); - - stigmata.extract(fileX, fileY, context); - } - - private void compareRoundRobinWithFiltering(){ - BirthmarkContext context = generateContext(); - context.setComparisonMethod(ComparisonMethod.ROUND_ROBIN_XY); - FilterSelectionPane pane = new FilterSelectionPane( - stigmata, context.getEnvironment().getFilterManager() - ); - int returnValue = JOptionPane.showConfirmDialog( - stigmata, pane, stigmata.getMessages().get("filterselection.dialog.title"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE - ); - if(returnValue == JOptionPane.OK_OPTION){ - String[] filterSetList = pane.getSelectedFilters(); - context.setFilterTypes(filterSetList); - - String[] fileX = targetX.getValues(); - String[] fileY = targetY.getValues(); - stigmata.compareRoundRobinFilter(fileX, fileY, context); - } - } - - private void compareRoundRobin(){ - BirthmarkContext context = generateContext(); - context.setComparisonMethod(ComparisonMethod.ROUND_ROBIN_XY); - String[] fileX = targetX.getValues(); - String[] fileY = targetY.getValues(); - - stigmata.compareRoundRobin(fileX, fileY, context); - } - - private void compareSpecifiedPair(){ - BirthmarkContext context = generateContext(); - context.setComparisonMethod(ComparisonMethod.SPECIFIED_PAIR); - String[] fileX = targetX.getValues(); - String[] fileY = targetY.getValues(); - stigmata.compareSpecifiedPair(fileX, fileY, context); - } - - private void compareGuessedPair(){ - BirthmarkContext context = generateContext(); - context.setComparisonMethod(ComparisonMethod.GUESSED_PAIR); - String[] fileX = targetX.getValues(); - String[] fileY = targetY.getValues(); - - stigmata.compareGuessedPair(fileX, fileY, context); - } - - private BirthmarkContext generateContext(){ - BirthmarkContext context = new BirthmarkContext(generateEnvironment()); - context.setBirthmarkTypes(birthmarks.getSelectedServiceTypes()); - context.setExtractionUnit(parseExtractionUnit()); - BirthmarkStoreTarget bst = BirthmarkStoreTarget.MEMORY; - if(context.getEnvironment().getProperty("birthmark.store.target") != null){ - bst = BirthmarkStoreTarget.valueOf(context.getEnvironment().getProperty("birthmark.store.target")); - } - if(bst == null){ - bst = BirthmarkStoreTarget.MEMORY; - } - context.setStoreTarget(bst); - - return context; - } - - private BirthmarkEnvironment generateEnvironment(){ - BirthmarkEnvironment environment = Stigmata.getInstance().createEnvironment(); - ClasspathContext bytecode = environment.getClasspathContext(); - WellknownClassManager manager = environment.getWellknownClassManager(); - ComparisonPairFilterManager filterManager = environment.getFilterManager(); - - // environment.setExtractionUnit(parseExtractionUnit()); - classpath.updateClasspathContext(bytecode); - wellknownClassses.setWellknownClasses(manager); - filters.updateFilterManager(filterManager); - definition.updateEnvironment(environment); - properties.updateEnvironment(environment); - - return environment; - } - - private ExtractionUnit parseExtractionUnit(){ - String label = (String)unitBox.getSelectedItem(); - String key = unitLabels.get(label); - ExtractionUnit unit = ExtractionUnit.CLASS; - - if(key.equals("unit.archive")){ - unit = ExtractionUnit.ARCHIVE; - } - else if(key.equals("unit.package")){ - unit = ExtractionUnit.PACKAGE; - } - else{ - unit = ExtractionUnit.CLASS; - } - return unit; - } - - private void initComponents(){ - controlTab = new JTabbedPane(); - resetButton = GUIUtility.createButton(stigmata.getMessages(), "reset"); - extractButton = GUIUtility.createButton(stigmata.getMessages(), "extract"); - compareButton = GUIUtility.createButton(stigmata.getMessages(), "roundrobin"); - comparePopup = new PopupButton(compareButton); - unitBox = new JComboBox(); - - Box south = Box.createHorizontalBox(); - south.add(Box.createHorizontalGlue()); - south.add(resetButton); - south.add(Box.createHorizontalGlue()); - south.add(extractButton); - south.add(Box.createHorizontalGlue()); - south.add(comparePopup); - south.add(Box.createHorizontalGlue()); - south.add(unitBox); - south.add(Box.createHorizontalGlue()); - - setLayout(new BorderLayout()); - add(south, BorderLayout.SOUTH); - add(controlTab, BorderLayout.CENTER); - - extractButton.setEnabled(false); - comparePopup.setEnabled(false); - - resetButton.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - reset(); - } - }); - - extractButton.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - extractButtonActionPerformed(e); - } - }); - - ActionListener compareListener = new ActionListener(){ - public void actionPerformed(ActionEvent e){ - String command = e.getActionCommand(); - - if(command.equals("roundrobin")){ - compareRoundRobin(); - } - else if(command.equals("guessedpair")){ - compareGuessedPair(); - } - else if(command.equals("specifiedpair")){ - compareSpecifiedPair(); - } - else if(command.equals("roundrobin.filtering")){ - compareRoundRobinWithFiltering(); - } - } - }; - compareButton.addActionListener(compareListener); - - String[] comparisonMethods = stigmata.getMessages().getArray("comparison.methods"); - for(int i = 1; i < comparisonMethods.length; i++){ - JMenuItem item = GUIUtility.createJMenuItem(stigmata.getMessages(), comparisonMethods[i]); - comparePopup.addMenuItem(item); - item.addActionListener(compareListener); - } - - String[] extractionUnits = stigmata.getMessages().getArray("extraction.units"); - for(int i = 0; i < extractionUnits.length; i++){ - String label = stigmata.getMessages().get(extractionUnits[i]); - unitLabels.put(label, extractionUnits[i]); - unitBox.addItem(label); - } - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTabbedPane; +import javax.swing.border.TitledBorder; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkStoreTarget; +import jp.sourceforge.stigmata.ComparisonMethod; +import jp.sourceforge.stigmata.ExtractionUnit; +import jp.sourceforge.stigmata.Stigmata; +import jp.sourceforge.stigmata.filter.ComparisonPairFilterManager; +import jp.sourceforge.stigmata.reader.ClasspathContext; +import jp.sourceforge.stigmata.utils.ConfigFileExporter; +import jp.sourceforge.stigmata.utils.WellknownClassManager; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ControlPane extends JPanel{ + private static final long serialVersionUID = 983547612346543645L; + + private StigmataFrame stigmata; + private BirthmarkSelectablePane birthmarks; + private TargetSelectionPane targetX; + private TargetSelectionPane targetY; + private ClasspathSettingsPane classpath; + private WellknownClassesSettingsPane wellknownClassses; + private BirthmarkDefinitionPane definition; + private PropertyEditPane properties; + private FilterManagementPane filters; + private ExtractedHistoryPane history; + private JTabbedPane controlTab; + private JButton compareButton; + private JButton extractButton; + private JButton resetButton; + private PopupButton comparePopup; + private JComboBox unitBox; + private Map unitLabels = new HashMap(); + private boolean expertmode = false; + + public ControlPane(StigmataFrame stigmata){ + this.stigmata = stigmata; + } + + void inititalize(){ + definition = new BirthmarkDefinitionPane(stigmata); + birthmarks = new BirthmarkSelectionCheckSetPane(stigmata); + properties = new PropertyEditPane(stigmata); + JComponent control = createControlPane(); + wellknownClassses = new WellknownClassesSettingsPane(stigmata); + classpath = new ClasspathSettingsPane(stigmata); + filters = new FilterManagementPane(stigmata); + history = new ExtractedHistoryPane(stigmata); + initComponents(); + + GUIUtility.addNewTab(stigmata.getMessages(), "targets", controlTab, control); + GUIUtility.addNewTab(stigmata.getMessages(), "wellknown", controlTab, wellknownClassses); + GUIUtility.addNewTab(stigmata.getMessages(), "classpath", controlTab, classpath); + GUIUtility.addNewTab(stigmata.getMessages(), "property", controlTab, properties); + reset(); + } + + public void addBirthmarkServiceListener(BirthmarkServiceListener listener){ + definition.addBirthmarkServiceListener(listener); + } + + public void removeBirthmarkServiceListener(BirthmarkServiceListener listener){ + definition.removeBirthmarkServiceListener(listener); + } + + public void reset(){ + this.expertmode = false; + definition.reset(); + birthmarks.reset(); + stigmata.setExpertMode(false); + targetX.removeAllElements(); + targetY.removeAllElements(); + + classpath.reset(); + wellknownClassses.reset(); + filters.reset(); + updateEnable(); + + int definitionTabIndex = controlTab.indexOfTab(stigmata.getMessages().get("definition.tab.label")); + if(definitionTabIndex >= 0){ + controlTab.removeTabAt(definitionTabIndex); + } + int filterTabIndex = controlTab.indexOfTab(stigmata.getMessages().get("filter.tab.label")); + if(filterTabIndex >= 0){ + controlTab.removeTabAt(filterTabIndex); + } + } + + public void saveSettings(File file){ + BirthmarkEnvironment environment = generateEnvironment(); + ConfigFileExporter bce = new ConfigFileExporter(environment); + try{ + PrintWriter out = new PrintWriter(new FileWriter(file)); + bce.export(out); + out.close(); + } catch(IOException e){ + JOptionPane.showMessageDialog( + stigmata, + stigmata.getMessages().get("error.io", e.getMessage()), + stigmata.getMessages().get("error.dialog.title"), + JOptionPane.ERROR_MESSAGE + ); + } + } + + public void exportSettings(){ + File file = stigmata.getSaveFile( + stigmata.getMessages().getArray("export.extensions"), + stigmata.getMessages().get("export.description") + ); + + if(file != null){ + if(!file.getName().endsWith(".xml")){ + file = new File(file.getParent(), file.getName() + ".xml"); + } + saveSettings(file); + } + } + + public void setExpertMode(boolean expertmode){ + this.expertmode = expertmode; + birthmarks.setExpertMode(expertmode); + stigmata.setExpertMode(expertmode); + + if(expertmode){ + GUIUtility.addNewTab(stigmata.getMessages(), "definition", controlTab, definition); + GUIUtility.addNewTab(stigmata.getMessages(), "filter", controlTab, filters); + GUIUtility.addNewTab(stigmata.getMessages(), "history", controlTab, history); + } + else{ + removeTabByName(stigmata.getMessages().get("definition.tab.label")); + removeTabByName(stigmata.getMessages().get("filter.tab.label")); + removeTabByName(stigmata.getMessages().get("history.tab.label")); + } + updateEnable(); + } + + public boolean isExpertMode(){ + return expertmode; + } + + private void removeTabByName(String tabname){ + int index = controlTab.indexOfTab(tabname); + if(index >= 0){ + controlTab.removeTabAt(index); + } + } + + private JComponent createControlPane(){ + JComponent mainPane = new Box(BoxLayout.X_AXIS); + JPanel center = new JPanel(new BorderLayout()); + targetX = new TargetSelectionPane(stigmata); + targetY = new TargetSelectionPane(stigmata); + + birthmarks.setBorder(new TitledBorder(stigmata.getMessages().get("birthmarkspane.border"))); + + targetX.addTargetExtensions(stigmata.getMessages().getArray("targets.extensions")); + targetX.setDescription(stigmata.getMessages().get("targets.description")); + targetX.setBorder(new TitledBorder(stigmata.getMessages().get("targetx.border"))); + + targetY.addTargetExtensions(stigmata.getMessages().getArray("targets.extensions")); + targetY.setDescription(stigmata.getMessages().get("targets.description")); + targetY.setBorder(new TitledBorder(stigmata.getMessages().get("targety.border"))); + + center.add(mainPane, BorderLayout.CENTER); + center.add(birthmarks, BorderLayout.SOUTH); + + mainPane.add(Box.createHorizontalGlue()); + mainPane.add(targetX); + mainPane.add(Box.createHorizontalGlue()); + mainPane.add(targetY); + mainPane.add(Box.createHorizontalGlue()); + + DataChangeListener dcl = new DataChangeListener(){ + public void valueChanged(Object source){ + updateEnable(); + } + }; + targetX.addDataChangeListener(dcl); + targetY.addDataChangeListener(dcl); + birthmarks.addDataChangeListener(dcl); + + return center; + } + + private void updateEnable(){ + String[] valueX = targetX.getValues(); + String[] valueY = targetY.getValues(); + String[] targets = birthmarks.getSelectedServiceTypes(); + + extractButton.setEnabled( + ((valueX != null && valueX.length > 0) || (valueY != null && valueY.length > 0)) + && (targets != null && targets.length > 0) + ); + + comparePopup.setEnabled( + (valueX != null && valueX.length > 0) && + (valueY != null && valueY.length > 0) && + (targets != null && targets.length > 0) + ); + } + + private void extractButtonActionPerformed(ActionEvent e){ + BirthmarkContext context = generateContext(); + context.setComparisonMethod(ComparisonMethod.ROUND_ROBIN_XY); + + String[] fileX = targetX.getValues(); + String[] fileY = targetY.getValues(); + + stigmata.extract(fileX, fileY, context); + } + + private void compareRoundRobinWithFiltering(){ + BirthmarkContext context = generateContext(); + context.setComparisonMethod(ComparisonMethod.ROUND_ROBIN_XY); + FilterSelectionPane pane = new FilterSelectionPane( + stigmata, context.getEnvironment().getFilterManager() + ); + int returnValue = JOptionPane.showConfirmDialog( + stigmata, pane, stigmata.getMessages().get("filterselection.dialog.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE + ); + if(returnValue == JOptionPane.OK_OPTION){ + String[] filterSetList = pane.getSelectedFilters(); + context.setFilterTypes(filterSetList); + + String[] fileX = targetX.getValues(); + String[] fileY = targetY.getValues(); + stigmata.compareRoundRobinFilter(fileX, fileY, context); + } + } + + private void compareRoundRobin(){ + BirthmarkContext context = generateContext(); + context.setComparisonMethod(ComparisonMethod.ROUND_ROBIN_XY); + String[] fileX = targetX.getValues(); + String[] fileY = targetY.getValues(); + + stigmata.compareRoundRobin(fileX, fileY, context); + } + + private void compareSpecifiedPair(){ + BirthmarkContext context = generateContext(); + context.setComparisonMethod(ComparisonMethod.SPECIFIED_PAIR); + String[] fileX = targetX.getValues(); + String[] fileY = targetY.getValues(); + stigmata.compareSpecifiedPair(fileX, fileY, context); + } + + private void compareGuessedPair(){ + BirthmarkContext context = generateContext(); + context.setComparisonMethod(ComparisonMethod.GUESSED_PAIR); + String[] fileX = targetX.getValues(); + String[] fileY = targetY.getValues(); + + stigmata.compareGuessedPair(fileX, fileY, context); + } + + private BirthmarkContext generateContext(){ + BirthmarkContext context = new BirthmarkContext(generateEnvironment()); + context.setBirthmarkTypes(birthmarks.getSelectedServiceTypes()); + context.setExtractionUnit(parseExtractionUnit()); + BirthmarkStoreTarget bst = BirthmarkStoreTarget.MEMORY; + if(context.getEnvironment().getProperty("birthmark.store.target") != null){ + bst = BirthmarkStoreTarget.valueOf(context.getEnvironment().getProperty("birthmark.store.target")); + } + if(bst == null){ + bst = BirthmarkStoreTarget.MEMORY; + } + context.setStoreTarget(bst); + + return context; + } + + private BirthmarkEnvironment generateEnvironment(){ + BirthmarkEnvironment environment = Stigmata.getInstance().createEnvironment(); + ClasspathContext bytecode = environment.getClasspathContext(); + WellknownClassManager manager = environment.getWellknownClassManager(); + ComparisonPairFilterManager filterManager = environment.getFilterManager(); + + // environment.setExtractionUnit(parseExtractionUnit()); + classpath.updateClasspathContext(bytecode); + wellknownClassses.setWellknownClasses(manager); + filters.updateFilterManager(filterManager); + definition.updateEnvironment(environment); + properties.updateEnvironment(environment); + + return environment; + } + + private ExtractionUnit parseExtractionUnit(){ + String label = (String)unitBox.getSelectedItem(); + String key = unitLabels.get(label); + ExtractionUnit unit = ExtractionUnit.CLASS; + + if(key.equals("unit.archive")){ + unit = ExtractionUnit.ARCHIVE; + } + else if(key.equals("unit.package")){ + unit = ExtractionUnit.PACKAGE; + } + else{ + unit = ExtractionUnit.CLASS; + } + return unit; + } + + private void initComponents(){ + controlTab = new JTabbedPane(); + resetButton = GUIUtility.createButton(stigmata.getMessages(), "reset"); + extractButton = GUIUtility.createButton(stigmata.getMessages(), "extract"); + compareButton = GUIUtility.createButton(stigmata.getMessages(), "roundrobin"); + comparePopup = new PopupButton(compareButton); + unitBox = new JComboBox(); + + Box south = Box.createHorizontalBox(); + south.add(Box.createHorizontalGlue()); + south.add(resetButton); + south.add(Box.createHorizontalGlue()); + south.add(extractButton); + south.add(Box.createHorizontalGlue()); + south.add(comparePopup); + south.add(Box.createHorizontalGlue()); + south.add(unitBox); + south.add(Box.createHorizontalGlue()); + + setLayout(new BorderLayout()); + add(south, BorderLayout.SOUTH); + add(controlTab, BorderLayout.CENTER); + + extractButton.setEnabled(false); + comparePopup.setEnabled(false); + + resetButton.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + reset(); + } + }); + + extractButton.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + extractButtonActionPerformed(e); + } + }); + + ActionListener compareListener = new ActionListener(){ + public void actionPerformed(ActionEvent e){ + String command = e.getActionCommand(); + + if(command.equals("roundrobin")){ + compareRoundRobin(); + } + else if(command.equals("guessedpair")){ + compareGuessedPair(); + } + else if(command.equals("specifiedpair")){ + compareSpecifiedPair(); + } + else if(command.equals("roundrobin.filtering")){ + compareRoundRobinWithFiltering(); + } + } + }; + compareButton.addActionListener(compareListener); + + String[] comparisonMethods = stigmata.getMessages().getArray("comparison.methods"); + for(int i = 1; i < comparisonMethods.length; i++){ + JMenuItem item = GUIUtility.createJMenuItem(stigmata.getMessages(), comparisonMethods[i]); + comparePopup.addMenuItem(item); + item.addActionListener(compareListener); + } + + String[] extractionUnits = stigmata.getMessages().getArray("extraction.units"); + for(int i = 0; i < extractionUnits.length; i++){ + String label = stigmata.getMessages().get(extractionUnits[i]); + unitLabels.put(label, extractionUnits[i]); + unitBox.addItem(label); + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/DataChangeListener.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/DataChangeListener.java similarity index 80% rename from src/main/java/jp/naist/se/stigmata/ui/swing/DataChangeListener.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/DataChangeListener.java index c17245c..49c3244 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/DataChangeListener.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/DataChangeListener.java @@ -1,18 +1,18 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.util.EventListener; - -/** - * - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface DataChangeListener extends EventListener{ - public void valueChanged(Object source); -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.util.EventListener; + +/** + * + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface DataChangeListener extends EventListener{ + public void valueChanged(Object source); +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/ExtensionFilter.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/ExtensionFilter.java similarity index 97% rename from src/main/java/jp/naist/se/stigmata/ui/swing/ExtensionFilter.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/ExtensionFilter.java index 1df43f3..5356fc8 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/ExtensionFilter.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/ExtensionFilter.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.ui.swing; +package jp.sourceforge.stigmata.ui.swing; /* * $Id$ diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/ExtractedHistoryPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/ExtractedHistoryPane.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/ui/swing/ExtractedHistoryPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/ExtractedHistoryPane.java index 6e46818..50bbcb9 100755 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/ExtractedHistoryPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/ExtractedHistoryPane.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.ui.swing; +package jp.sourceforge.stigmata.ui.swing; /* * $Id$ @@ -24,10 +24,10 @@ import javax.swing.ListSelectionModel; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.result.history.ExtractedBirthmarkHistory; -import jp.naist.se.stigmata.result.history.ExtractedBirthmarkServiceManager; -import jp.naist.se.stigmata.ui.swing.actions.PopupShowAction; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkHistory; +import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkServiceManager; +import jp.sourceforge.stigmata.ui.swing.actions.PopupShowAction; import jp.sourceforge.talisman.i18n.Messages; /** diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/FileIOManager.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/FileIOManager.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ui/swing/FileIOManager.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/FileIOManager.java index 428c940..731befd 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/FileIOManager.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/FileIOManager.java @@ -1,127 +1,127 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.Component; -import java.io.File; -import java.text.MessageFormat; - -import javax.swing.JFileChooser; -import javax.swing.SwingUtilities; -import javax.swing.filechooser.FileFilter; - -import jp.naist.se.stigmata.BirthmarkEnvironment; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class FileIOManager{ - private Component parent; - private File currentDirectory; - private BirthmarkEnvironment env; - - public FileIOManager(Component parent, BirthmarkEnvironment env){ - this.parent = parent; - this.env = env; - if(env.getProperty(".current.directory") != null){ - currentDirectory = new File(env.getProperty(".current.directory")); - } - if(env.getProperty("startup.directory") != null){ - currentDirectory = new File(env.getProperty("startup.directory")); - } - if(currentDirectory == null && System.getProperty("execution.directory") != null){ - currentDirectory = new File(System.getProperty("execution.directory")); - } - if(currentDirectory == null){ - currentDirectory = new File("."); - } - } - - public File getCurrentDirectory(){ - return currentDirectory; - } - - public void setCurrentDirectory(File directory) throws IllegalArgumentException{ - if(!directory.isDirectory()){ - throw new IllegalArgumentException(directory.getName() + " is not directory"); - } - this.currentDirectory = directory; - env.addProperty(".current.directory", directory.getAbsolutePath()); - } - - public File findFile(boolean open){ - return findFile(open, new String[0], ""); - } - - public File[] openFiles(FileFilter[] filters, boolean multi, boolean directory){ - JFileChooser chooser = new JFileChooser(getCurrentDirectory()); - if(filters != null){ - for(int i = 0; i < filters.length; i++){ - chooser.addChoosableFileFilter(filters[i]); - } - } - chooser.setMultiSelectionEnabled(multi); - if(directory){ - chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); - } - else{ - chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); - } - int returnValue = chooser.showOpenDialog(SwingUtilities.getRootPane(parent)); - if(returnValue == JFileChooser.APPROVE_OPTION){ - setCurrentDirectory(chooser.getCurrentDirectory()); - return chooser.getSelectedFiles(); - } - return new File[0]; - } - - public File findFile(boolean open, String[] exts, String desc){ - JFileChooser chooser = new JFileChooser(getCurrentDirectory()); - if(exts != null){ - MessageFormat formatter = new MessageFormat(desc); - for(int i = 0; i < exts.length; i++){ - chooser.addChoosableFileFilter( - new ExtensionFilter(exts[i], formatter.format(new Object[] { exts[i], })) - ); - } - } - int returnValue = -1; - if(open){ - returnValue = chooser.showOpenDialog(SwingUtilities.getRootPane(parent)); - } - else{ - returnValue = chooser.showSaveDialog(SwingUtilities.getRootPane(parent)); - } - if(returnValue == JFileChooser.APPROVE_OPTION){ - setCurrentDirectory(chooser.getCurrentDirectory()); - File file = chooser.getSelectedFile(); - if(!open){ - FileFilter filter = chooser.getFileFilter(); - if(filter instanceof ExtensionFilter){ - ExtensionFilter ef = (ExtensionFilter)filter; - if(!filter.accept(file)){ - String[] extensions = ef.getExtensions(); - file = setExtension(file, extensions[0]); - } - } - } - return file; - } - return null; - } - - private File setExtension(File file, String ext){ - String name = file.getName(); - int index = name.lastIndexOf('.'); - String n = name; - if(index > 0){ - n = n.substring(0, index); - } - name = n + '.' + ext; - return new File(file.getParentFile(), name); - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.Component; +import java.io.File; +import java.text.MessageFormat; + +import javax.swing.JFileChooser; +import javax.swing.SwingUtilities; +import javax.swing.filechooser.FileFilter; + +import jp.sourceforge.stigmata.BirthmarkEnvironment; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class FileIOManager{ + private Component parent; + private File currentDirectory; + private BirthmarkEnvironment env; + + public FileIOManager(Component parent, BirthmarkEnvironment env){ + this.parent = parent; + this.env = env; + if(env.getProperty(".current.directory") != null){ + currentDirectory = new File(env.getProperty(".current.directory")); + } + if(env.getProperty("startup.directory") != null){ + currentDirectory = new File(env.getProperty("startup.directory")); + } + if(currentDirectory == null && System.getProperty("execution.directory") != null){ + currentDirectory = new File(System.getProperty("execution.directory")); + } + if(currentDirectory == null){ + currentDirectory = new File("."); + } + } + + public File getCurrentDirectory(){ + return currentDirectory; + } + + public void setCurrentDirectory(File directory) throws IllegalArgumentException{ + if(!directory.isDirectory()){ + throw new IllegalArgumentException(directory.getName() + " is not directory"); + } + this.currentDirectory = directory; + env.addProperty(".current.directory", directory.getAbsolutePath()); + } + + public File findFile(boolean open){ + return findFile(open, new String[0], ""); + } + + public File[] openFiles(FileFilter[] filters, boolean multi, boolean directory){ + JFileChooser chooser = new JFileChooser(getCurrentDirectory()); + if(filters != null){ + for(int i = 0; i < filters.length; i++){ + chooser.addChoosableFileFilter(filters[i]); + } + } + chooser.setMultiSelectionEnabled(multi); + if(directory){ + chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); + } + else{ + chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + } + int returnValue = chooser.showOpenDialog(SwingUtilities.getRootPane(parent)); + if(returnValue == JFileChooser.APPROVE_OPTION){ + setCurrentDirectory(chooser.getCurrentDirectory()); + return chooser.getSelectedFiles(); + } + return new File[0]; + } + + public File findFile(boolean open, String[] exts, String desc){ + JFileChooser chooser = new JFileChooser(getCurrentDirectory()); + if(exts != null){ + MessageFormat formatter = new MessageFormat(desc); + for(int i = 0; i < exts.length; i++){ + chooser.addChoosableFileFilter( + new ExtensionFilter(exts[i], formatter.format(new Object[] { exts[i], })) + ); + } + } + int returnValue = -1; + if(open){ + returnValue = chooser.showOpenDialog(SwingUtilities.getRootPane(parent)); + } + else{ + returnValue = chooser.showSaveDialog(SwingUtilities.getRootPane(parent)); + } + if(returnValue == JFileChooser.APPROVE_OPTION){ + setCurrentDirectory(chooser.getCurrentDirectory()); + File file = chooser.getSelectedFile(); + if(!open){ + FileFilter filter = chooser.getFileFilter(); + if(filter instanceof ExtensionFilter){ + ExtensionFilter ef = (ExtensionFilter)filter; + if(!filter.accept(file)){ + String[] extensions = ef.getExtensions(); + file = setExtension(file, extensions[0]); + } + } + } + return file; + } + return null; + } + + private File setExtension(File file, String ext){ + String name = file.getName(); + int index = name.lastIndexOf('.'); + String n = name; + if(index > 0){ + n = n.substring(0, index); + } + name = n + '.' + ext; + return new File(file.getParentFile(), name); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/FilterManagementPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/FilterManagementPane.java similarity index 90% rename from src/main/java/jp/naist/se/stigmata/ui/swing/FilterManagementPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/FilterManagementPane.java index 5d1a6d6..7dc0676 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/FilterManagementPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/FilterManagementPane.java @@ -1,181 +1,181 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.HashMap; -import java.util.Map; - -import javax.swing.Box; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.ComparisonPairFilterSet; -import jp.naist.se.stigmata.filter.ComparisonPairFilterManager; -import jp.naist.se.stigmata.ui.swing.filter.ComparisonPairFilterRetainable; -import jp.naist.se.stigmata.ui.swing.filter.FilterEditingPane; -import jp.naist.se.stigmata.ui.swing.filter.FilterSetDefinitionPane; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class FilterManagementPane extends JPanel implements ComparisonPairFilterRetainable{ - private static final long serialVersionUID = 972135792354L; - - private StigmataFrame stigmata; - private FilterSetDefinitionPane definition; - private FilterEditingPane filterPane; - private JList list; - private DefaultListModel model; - private Map filters = new HashMap(); - - public FilterManagementPane(StigmataFrame stigmata){ - this.stigmata = stigmata; - - initLayouts(); - } - - public void reset(){ - definition.reset(); - filterPane.reset(); - model.removeAllElements(); - - ComparisonPairFilterManager manager = stigmata.getEnvironment().getFilterManager(); - for(ComparisonPairFilterSet filterset: manager.getFilterSets()){ - addFilterSet(filterset); - } - } - - public void updateFilterManager(ComparisonPairFilterManager manager){ - for(ComparisonPairFilterSet filterset: filters.values()){ - manager.addFilterSet(filterset); - } - } - - public void addFilterSet(ComparisonPairFilterSet filterset){ - filters.put(filterset.getName(), filterset); - - model.addElement(filterset.getName()); - list.setSelectedIndex(model.getSize() - 1); - } - - public void removeFilterSet(String name){ - filters.remove(name); - model.removeElement(name); - - list.clearSelection(); - } - - public void updateFilterSet(String oldName, ComparisonPairFilterSet newfilter){ - for(int i = 0; i < model.getSize(); i++){ - if(oldName.equals(model.getElementAt(i))){ - model.setElementAt(newfilter.getName(), i); - break; - } - } - filters.remove(oldName); - filters.put(newfilter.getName(), newfilter); - } - - public ComparisonPairFilterSet getFilterSet(String name){ - return filters.get(name); - } - - public void filterSelected(ComparisonPairFilter filter){ - filterPane.setFilter(filter); - } - - private void initLayouts(){ - definition = new FilterSetDefinitionPane(stigmata, this); - filterPane = new FilterEditingPane(stigmata); - filterPane.addComparisonPairFilterListener(definition); - JComponent filtersetlist = createFilterSetPane(); - - GUIUtility.decorateJComponent(stigmata.getMessages(), filtersetlist, "filtersetlist.pane"); - GUIUtility.decorateJComponent(stigmata.getMessages(), definition, "filterdefinition.pane"); - GUIUtility.decorateJComponent(stigmata.getMessages(), filterPane, "filter.pane"); - - setLayout(new GridLayout(1, 3)); - add(filtersetlist); - add(definition); - add(filterPane); - } - - private JComponent createFilterSetPane(){ - model = new DefaultListModel(); - list = new JList(model); - - final JButton upButton = GUIUtility.createButton(stigmata.getMessages(), "moveup"); - final JButton downButton = GUIUtility.createButton(stigmata.getMessages(), "movedown"); - - Box south = Box.createHorizontalBox(); - south.add(Box.createHorizontalGlue()); - south.add(upButton); - south.add(Box.createHorizontalGlue()); - south.add(downButton); - south.add(Box.createHorizontalGlue()); - - list.addMouseListener(new MouseAdapter(){ - @Override - public void mouseClicked(MouseEvent e){ - int index = list.locationToIndex(e.getPoint()); - list.setSelectedIndex(index); - updateUI(); - } - }); - list.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ - public void valueChanged(ListSelectionEvent e){ - int[] indexes = list.getSelectedIndices(); - int rows = model.getSize(); - - upButton.setEnabled(indexes.length == 1 && rows > 1 && indexes[0] != 0); - downButton.setEnabled(indexes.length == 1 && rows > 1 && indexes[0] != (rows - 1)); - if(indexes.length != 1){ - definition.setFilterSet(null); - } - else{ - definition.setFilterSet(filters.get(model.getElementAt(indexes[0]))); - } - } - }); - ActionListener listener = new ActionListener(){ - public void actionPerformed(ActionEvent e){ - int step = 1; - if(e.getActionCommand().equals("moveup")){ - step = -1; - } - int index = list.getSelectedIndex(); - Object e1 = model.getElementAt(index); - Object e2 = model.getElementAt(index + step); - model.setElementAt(e1, index + step); - model.setElementAt(e2, index); - list.setSelectedIndex(index + step); - } - }; - upButton.addActionListener(listener); - downButton.addActionListener(listener); - upButton.setEnabled(false); - downButton.setEnabled(false); - - JPanel panel = new JPanel(new BorderLayout()); - panel.add(new JScrollPane(list), BorderLayout.CENTER); - panel.add(south, BorderLayout.SOUTH); - - return panel; - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.Box; +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.ComparisonPairFilterSet; +import jp.sourceforge.stigmata.filter.ComparisonPairFilterManager; +import jp.sourceforge.stigmata.ui.swing.filter.ComparisonPairFilterRetainable; +import jp.sourceforge.stigmata.ui.swing.filter.FilterEditingPane; +import jp.sourceforge.stigmata.ui.swing.filter.FilterSetDefinitionPane; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class FilterManagementPane extends JPanel implements ComparisonPairFilterRetainable{ + private static final long serialVersionUID = 972135792354L; + + private StigmataFrame stigmata; + private FilterSetDefinitionPane definition; + private FilterEditingPane filterPane; + private JList list; + private DefaultListModel model; + private Map filters = new HashMap(); + + public FilterManagementPane(StigmataFrame stigmata){ + this.stigmata = stigmata; + + initLayouts(); + } + + public void reset(){ + definition.reset(); + filterPane.reset(); + model.removeAllElements(); + + ComparisonPairFilterManager manager = stigmata.getEnvironment().getFilterManager(); + for(ComparisonPairFilterSet filterset: manager.getFilterSets()){ + addFilterSet(filterset); + } + } + + public void updateFilterManager(ComparisonPairFilterManager manager){ + for(ComparisonPairFilterSet filterset: filters.values()){ + manager.addFilterSet(filterset); + } + } + + public void addFilterSet(ComparisonPairFilterSet filterset){ + filters.put(filterset.getName(), filterset); + + model.addElement(filterset.getName()); + list.setSelectedIndex(model.getSize() - 1); + } + + public void removeFilterSet(String name){ + filters.remove(name); + model.removeElement(name); + + list.clearSelection(); + } + + public void updateFilterSet(String oldName, ComparisonPairFilterSet newfilter){ + for(int i = 0; i < model.getSize(); i++){ + if(oldName.equals(model.getElementAt(i))){ + model.setElementAt(newfilter.getName(), i); + break; + } + } + filters.remove(oldName); + filters.put(newfilter.getName(), newfilter); + } + + public ComparisonPairFilterSet getFilterSet(String name){ + return filters.get(name); + } + + public void filterSelected(ComparisonPairFilter filter){ + filterPane.setFilter(filter); + } + + private void initLayouts(){ + definition = new FilterSetDefinitionPane(stigmata, this); + filterPane = new FilterEditingPane(stigmata); + filterPane.addComparisonPairFilterListener(definition); + JComponent filtersetlist = createFilterSetPane(); + + GUIUtility.decorateJComponent(stigmata.getMessages(), filtersetlist, "filtersetlist.pane"); + GUIUtility.decorateJComponent(stigmata.getMessages(), definition, "filterdefinition.pane"); + GUIUtility.decorateJComponent(stigmata.getMessages(), filterPane, "filter.pane"); + + setLayout(new GridLayout(1, 3)); + add(filtersetlist); + add(definition); + add(filterPane); + } + + private JComponent createFilterSetPane(){ + model = new DefaultListModel(); + list = new JList(model); + + final JButton upButton = GUIUtility.createButton(stigmata.getMessages(), "moveup"); + final JButton downButton = GUIUtility.createButton(stigmata.getMessages(), "movedown"); + + Box south = Box.createHorizontalBox(); + south.add(Box.createHorizontalGlue()); + south.add(upButton); + south.add(Box.createHorizontalGlue()); + south.add(downButton); + south.add(Box.createHorizontalGlue()); + + list.addMouseListener(new MouseAdapter(){ + @Override + public void mouseClicked(MouseEvent e){ + int index = list.locationToIndex(e.getPoint()); + list.setSelectedIndex(index); + updateUI(); + } + }); + list.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ + public void valueChanged(ListSelectionEvent e){ + int[] indexes = list.getSelectedIndices(); + int rows = model.getSize(); + + upButton.setEnabled(indexes.length == 1 && rows > 1 && indexes[0] != 0); + downButton.setEnabled(indexes.length == 1 && rows > 1 && indexes[0] != (rows - 1)); + if(indexes.length != 1){ + definition.setFilterSet(null); + } + else{ + definition.setFilterSet(filters.get(model.getElementAt(indexes[0]))); + } + } + }); + ActionListener listener = new ActionListener(){ + public void actionPerformed(ActionEvent e){ + int step = 1; + if(e.getActionCommand().equals("moveup")){ + step = -1; + } + int index = list.getSelectedIndex(); + Object e1 = model.getElementAt(index); + Object e2 = model.getElementAt(index + step); + model.setElementAt(e1, index + step); + model.setElementAt(e2, index); + list.setSelectedIndex(index + step); + } + }; + upButton.addActionListener(listener); + downButton.addActionListener(listener); + upButton.setEnabled(false); + downButton.setEnabled(false); + + JPanel panel = new JPanel(new BorderLayout()); + panel.add(new JScrollPane(list), BorderLayout.CENTER); + panel.add(south, BorderLayout.SOUTH); + + return panel; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/FilterSelectionPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/FilterSelectionPane.java similarity index 91% rename from src/main/java/jp/naist/se/stigmata/ui/swing/FilterSelectionPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/FilterSelectionPane.java index 96ac273..b329bad 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/FilterSelectionPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/FilterSelectionPane.java @@ -1,176 +1,176 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.swing.DefaultListModel; -import javax.swing.JCheckBox; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.ListCellRenderer; -import javax.swing.ListSelectionModel; -import javax.swing.UIManager; -import javax.swing.border.Border; -import javax.swing.border.EmptyBorder; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.ComparisonPairFilterSet; -import jp.naist.se.stigmata.filter.ComparisonPairFilterManager; -import jp.naist.se.stigmata.ui.swing.filter.ComparisonPairFilterRetainable; -import jp.naist.se.stigmata.ui.swing.filter.FilterSetDefinitionPane; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class FilterSelectionPane extends JPanel implements ComparisonPairFilterRetainable{ - private static final long serialVersionUID = 1825547576389498336L; - private static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); - - private StigmataFrame stigmata; - private ComparisonPairFilterManager manager; - private FilterSetDefinitionPane filterDef; - private Map enableMap = new HashMap(); - private Map filters = new HashMap(); - private DefaultListModel model; - private JList list; - - public FilterSelectionPane(StigmataFrame stigmata, ComparisonPairFilterManager manager){ - this.stigmata = stigmata; - this.manager = manager; - - initLayout(); - } - - public void addFilterSet(ComparisonPairFilterSet filter){ - filters.put(filter.getName(), filter); - enableMap.put(filter.getName(), false); - model.addElement(filter.getName()); - } - - public void filterSelected(ComparisonPairFilter filter){ - } - - public ComparisonPairFilterSet getFilterSet(String name){ - return filters.get(name); - } - - public void removeFilterSet(String name){ - filters.remove(name); - enableMap.remove(name); - model.removeElement(name); - } - - public void updateFilterSet(String name, ComparisonPairFilterSet filter){ - int index = model.indexOf(name); - model.set(index, filter.getName()); - filters.put(filter.getName(), filter); - enableMap.put(filter.getName(), enableMap.get(name)); - - if(!name.equals(filter.getName())){ - enableMap.remove(name); - filters.remove(name); - } - } - - public String[] getSelectedFilters(){ - List list = new ArrayList(); - for(String key: enableMap.keySet()){ - if(enableMap.get(key)){ - list.add(key); - } - } - return list.toArray(new String[list.size()]); - } - - private void initLayout(){ - setLayout(new BorderLayout()); - model = new DefaultListModel(); - list = new JList(model); - list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - list.setCellRenderer(new CheckableListCellRenderer()); - - JScrollPane scroll = new JScrollPane(list); - filterDef = new FilterSetDefinitionPane(stigmata, this, false); - - add(scroll, BorderLayout.WEST); - add(filterDef, BorderLayout.CENTER); - - list.addListSelectionListener(new ListSelectionListener(){ - public void valueChanged(ListSelectionEvent e){ - String name = (String)list.getSelectedValue(); - filterDef.setFilterSet(filters.get(name)); - - updateUI(); - } - }); - list.addMouseListener(new MouseAdapter(){ - @Override - public void mouseClicked(MouseEvent e){ - int index = list.locationToIndex(e.getPoint()); - String value = (String)model.getElementAt(index); - enableMap.put(value, !enableMap.get(value)); - updateUI(); - } - }); - - for(ComparisonPairFilterSet filterset: manager.getFilterSets()){ - enableMap.put(filterset.getName(), false); - filters.put(filterset.getName(), filterset); - model.addElement(filterset.getName()); - } - } - - private class CheckableListCellRenderer extends JCheckBox implements ListCellRenderer{ - private static final long serialVersionUID = 2120743754620361163L; - - public CheckableListCellRenderer(){ - setOpaque(true); - } - - public Component getListCellRendererComponent(JList list, Object v, int index, boolean isSelected, boolean cellHasFocus){ - String value = (String)v; - setText(value); - setSelected(enableMap.get(value)); - - if(isSelected){ - setBackground(list.getSelectionBackground()); - setForeground(list.getSelectionForeground()); - } - else{ - setBackground(list.getBackground()); - setForeground(list.getForeground()); - } - Border border = null; - if(cellHasFocus){ - if(isSelected){ - border = UIManager.getBorder("List.focusSelectedCellHighlightBorder"); - } - if(border == null){ - border = UIManager.getBorder("List.focusCellHighlightBorder"); - } - } - else{ - border = noFocusBorder; - } - setBorder(border); - - return this; - } - - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.swing.DefaultListModel; +import javax.swing.JCheckBox; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.ListCellRenderer; +import javax.swing.ListSelectionModel; +import javax.swing.UIManager; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.ComparisonPairFilterSet; +import jp.sourceforge.stigmata.filter.ComparisonPairFilterManager; +import jp.sourceforge.stigmata.ui.swing.filter.ComparisonPairFilterRetainable; +import jp.sourceforge.stigmata.ui.swing.filter.FilterSetDefinitionPane; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class FilterSelectionPane extends JPanel implements ComparisonPairFilterRetainable{ + private static final long serialVersionUID = 1825547576389498336L; + private static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); + + private StigmataFrame stigmata; + private ComparisonPairFilterManager manager; + private FilterSetDefinitionPane filterDef; + private Map enableMap = new HashMap(); + private Map filters = new HashMap(); + private DefaultListModel model; + private JList list; + + public FilterSelectionPane(StigmataFrame stigmata, ComparisonPairFilterManager manager){ + this.stigmata = stigmata; + this.manager = manager; + + initLayout(); + } + + public void addFilterSet(ComparisonPairFilterSet filter){ + filters.put(filter.getName(), filter); + enableMap.put(filter.getName(), false); + model.addElement(filter.getName()); + } + + public void filterSelected(ComparisonPairFilter filter){ + } + + public ComparisonPairFilterSet getFilterSet(String name){ + return filters.get(name); + } + + public void removeFilterSet(String name){ + filters.remove(name); + enableMap.remove(name); + model.removeElement(name); + } + + public void updateFilterSet(String name, ComparisonPairFilterSet filter){ + int index = model.indexOf(name); + model.set(index, filter.getName()); + filters.put(filter.getName(), filter); + enableMap.put(filter.getName(), enableMap.get(name)); + + if(!name.equals(filter.getName())){ + enableMap.remove(name); + filters.remove(name); + } + } + + public String[] getSelectedFilters(){ + List list = new ArrayList(); + for(String key: enableMap.keySet()){ + if(enableMap.get(key)){ + list.add(key); + } + } + return list.toArray(new String[list.size()]); + } + + private void initLayout(){ + setLayout(new BorderLayout()); + model = new DefaultListModel(); + list = new JList(model); + list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + list.setCellRenderer(new CheckableListCellRenderer()); + + JScrollPane scroll = new JScrollPane(list); + filterDef = new FilterSetDefinitionPane(stigmata, this, false); + + add(scroll, BorderLayout.WEST); + add(filterDef, BorderLayout.CENTER); + + list.addListSelectionListener(new ListSelectionListener(){ + public void valueChanged(ListSelectionEvent e){ + String name = (String)list.getSelectedValue(); + filterDef.setFilterSet(filters.get(name)); + + updateUI(); + } + }); + list.addMouseListener(new MouseAdapter(){ + @Override + public void mouseClicked(MouseEvent e){ + int index = list.locationToIndex(e.getPoint()); + String value = (String)model.getElementAt(index); + enableMap.put(value, !enableMap.get(value)); + updateUI(); + } + }); + + for(ComparisonPairFilterSet filterset: manager.getFilterSets()){ + enableMap.put(filterset.getName(), false); + filters.put(filterset.getName(), filterset); + model.addElement(filterset.getName()); + } + } + + private class CheckableListCellRenderer extends JCheckBox implements ListCellRenderer{ + private static final long serialVersionUID = 2120743754620361163L; + + public CheckableListCellRenderer(){ + setOpaque(true); + } + + public Component getListCellRendererComponent(JList list, Object v, int index, boolean isSelected, boolean cellHasFocus){ + String value = (String)v; + setText(value); + setSelected(enableMap.get(value)); + + if(isSelected){ + setBackground(list.getSelectionBackground()); + setForeground(list.getSelectionForeground()); + } + else{ + setBackground(list.getBackground()); + setForeground(list.getForeground()); + } + Border border = null; + if(cellHasFocus){ + if(isSelected){ + border = UIManager.getBorder("List.focusSelectedCellHighlightBorder"); + } + if(border == null){ + border = UIManager.getBorder("List.focusCellHighlightBorder"); + } + } + else{ + border = noFocusBorder; + } + setBorder(border); + + return this; + } + + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/GUIUtility.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/GUIUtility.java similarity index 96% rename from src/main/java/jp/naist/se/stigmata/ui/swing/GUIUtility.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/GUIUtility.java index a82d633..567a1f7 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/GUIUtility.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/GUIUtility.java @@ -1,198 +1,198 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.Component; -import java.awt.Image; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.net.URL; -import java.text.MessageFormat; - -import javax.swing.Action; -import javax.swing.Icon; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JCheckBoxMenuItem; -import javax.swing.JComponent; -import javax.swing.JMenu; -import javax.swing.JMenuItem; -import javax.swing.JTabbedPane; -import javax.swing.border.TitledBorder; - -import jp.sourceforge.talisman.i18n.Messages; - -/** - * Utility routines for building GUI. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class GUIUtility{ - private GUIUtility(){ - } - - public static void decorateJComponent(Messages messages, JComponent component, String label){ - if(messages.hasValue(label + ".tooltip")){ - component.setToolTipText(messages.get(label + ".tooltip")); - } - if(messages.hasValue(label + ".border")){ - component.setBorder(new TitledBorder(messages.get(label + ".border"))); - } - try{ - Icon icon = getIcon(messages, label + ".icon"); - if(icon != null){ - Method[] methods = component.getClass().getMethods(); - for(Method m: methods){ - if(m.getName().equals("setIcon")){ - m.invoke(component, icon); - } - } - } - } catch(IllegalAccessException e){ - throw new InternalError(e.getMessage()); - } catch(InvocationTargetException e){ - throw new InternalError(e.getMessage()); - } - } - - public static JButton createButton(Messages messages, String label, Action action){ - JButton button = new JButton(action); - button.setText(messages.get(label + ".button.label")); - button.setActionCommand(label); - if(messages.hasValue(label + ".button.tooltip")){ - button.setToolTipText(messages.get(label + ".button.tooltip")); - } - Icon icon = getIcon(messages, label + ".button.icon"); - if(icon != null){ - button.setIcon(icon); - } - - return button; - } - - public static JButton createButton(Messages messages, String label){ - JButton button = new JButton(messages.get(label + ".button.label")); - button.setActionCommand(label); - if(messages.hasValue(label + ".button.tooltip")){ - button.setToolTipText(messages.get(label + ".button.tooltip")); - } - Icon icon = getIcon(messages, label + ".button.icon"); - if(icon != null){ - button.setIcon(icon); - } - - return button; - } - - public static JCheckBoxMenuItem createJCheckBoxMenuItem(Messages messages, String label){ - return createJCheckBoxMenuItem(messages, label, false); - } - - public static JCheckBoxMenuItem createJCheckBoxMenuItem(Messages messages, String label, boolean status){ - JCheckBoxMenuItem item = new JCheckBoxMenuItem(messages.get(label + ".menuitem.label"), status); - item.setActionCommand(label); - if(messages.hasValue(label + ".menuitem.tooltip")){ - item.setToolTipText(messages.get(label + ".menuitem.tooltip")); - } - Icon icon = getIcon(messages, label + ".menuitem.icon"); - if(icon != null){ - item.setIcon(icon); - } - return item; - } - - public static JMenuItem createJMenuItem(Messages messages, String label, Action action){ - JMenuItem item = new JMenuItem(action); - item.setText(messages.get(label + ".menuitem.label")); - item.setActionCommand(label); - if(messages.hasValue(label + ".menuitem.tooltip")){ - item.setToolTipText(messages.get(label + ".menuitem.tooltip")); - } - Icon icon = getIcon(messages, label + ".menuitem.icon"); - if(icon != null){ - item.setIcon(icon); - } - return item; - } - - public static JMenuItem createJMenuItem(Messages messages, String label){ - JMenuItem item = new JMenuItem(messages.get(label + ".menuitem.label")); - item.setActionCommand(label); - if(messages.hasValue(label + ".menuitem.tooltip")){ - item.setToolTipText(messages.get(label + ".menuitem.tooltip")); - } - Icon icon = getIcon(messages, label + ".menuitem.icon"); - if(icon != null){ - item.setIcon(icon); - } - return item; - } - - public static JMenu createJMenu(Messages messages, String label){ - JMenu menu = new JMenu(messages.get(label + ".menu.label")); - menu.setActionCommand(label); - if(messages.hasValue(label + ".menu.tooltip")){ - menu.setToolTipText(messages.get(label + ".menu.tooltip")); - } - Icon icon = getIcon(messages, label + ".menu.icon"); - if(icon != null){ - menu.setIcon(icon); - } - return menu; - } - - public static URL getResource(Messages messages, String resourcePathLabel, String resourcePathPrefix){ - if(messages.hasValue(resourcePathLabel)){ - String resourcePath = messages.get(resourcePathLabel); - if(resourcePathPrefix != null){ - resourcePath = resourcePathPrefix + resourcePath; - } - return GUIUtility.class.getResource(resourcePath); - } - return null; - } - - public static URL getResource(Messages messages, String resourcePathLabel){ - return getResource(messages, resourcePathLabel, null); - } - - public static Icon getIcon(Messages messages, String label){ - URL url = getResource(messages, label, messages.get("icon.path")); - if(url != null){ - ImageIcon icon = new ImageIcon(url); - return icon; - } - - return null; - } - - public static Image getImage(Messages messages, String imageFilePathLabel){ - Icon icon = getIcon(messages, imageFilePathLabel); - if(icon != null && icon instanceof ImageIcon){ - return ((ImageIcon)icon).getImage(); - } - return null; - } - - public static void addNewTab(Messages messages, String key, JTabbedPane tabPane, Component comp){ - addNewTab(messages, key, tabPane, comp, null, null); - } - - public static void addNewTab(Messages messages, String key, JTabbedPane tabPane, Component comp, Object[] tabnameValues, Object[] values){ - String tabName = messages.get(key + ".tab.label"); - String tooltip = messages.get(key + ".tab.tooltip"); - Icon icon = getIcon(messages, key + ".tab.icon"); - - if(tabnameValues != null){ - tabName = MessageFormat.format(tabName, tabnameValues); - } - - if(values != null){ - tooltip = MessageFormat.format(tooltip, values); - } - tabPane.addTab(tabName, icon, comp, tooltip); - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.Component; +import java.awt.Image; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.net.URL; +import java.text.MessageFormat; + +import javax.swing.Action; +import javax.swing.Icon; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JComponent; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JTabbedPane; +import javax.swing.border.TitledBorder; + +import jp.sourceforge.talisman.i18n.Messages; + +/** + * Utility routines for building GUI. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class GUIUtility{ + private GUIUtility(){ + } + + public static void decorateJComponent(Messages messages, JComponent component, String label){ + if(messages.hasValue(label + ".tooltip")){ + component.setToolTipText(messages.get(label + ".tooltip")); + } + if(messages.hasValue(label + ".border")){ + component.setBorder(new TitledBorder(messages.get(label + ".border"))); + } + try{ + Icon icon = getIcon(messages, label + ".icon"); + if(icon != null){ + Method[] methods = component.getClass().getMethods(); + for(Method m: methods){ + if(m.getName().equals("setIcon")){ + m.invoke(component, icon); + } + } + } + } catch(IllegalAccessException e){ + throw new InternalError(e.getMessage()); + } catch(InvocationTargetException e){ + throw new InternalError(e.getMessage()); + } + } + + public static JButton createButton(Messages messages, String label, Action action){ + JButton button = new JButton(action); + button.setText(messages.get(label + ".button.label")); + button.setActionCommand(label); + if(messages.hasValue(label + ".button.tooltip")){ + button.setToolTipText(messages.get(label + ".button.tooltip")); + } + Icon icon = getIcon(messages, label + ".button.icon"); + if(icon != null){ + button.setIcon(icon); + } + + return button; + } + + public static JButton createButton(Messages messages, String label){ + JButton button = new JButton(messages.get(label + ".button.label")); + button.setActionCommand(label); + if(messages.hasValue(label + ".button.tooltip")){ + button.setToolTipText(messages.get(label + ".button.tooltip")); + } + Icon icon = getIcon(messages, label + ".button.icon"); + if(icon != null){ + button.setIcon(icon); + } + + return button; + } + + public static JCheckBoxMenuItem createJCheckBoxMenuItem(Messages messages, String label){ + return createJCheckBoxMenuItem(messages, label, false); + } + + public static JCheckBoxMenuItem createJCheckBoxMenuItem(Messages messages, String label, boolean status){ + JCheckBoxMenuItem item = new JCheckBoxMenuItem(messages.get(label + ".menuitem.label"), status); + item.setActionCommand(label); + if(messages.hasValue(label + ".menuitem.tooltip")){ + item.setToolTipText(messages.get(label + ".menuitem.tooltip")); + } + Icon icon = getIcon(messages, label + ".menuitem.icon"); + if(icon != null){ + item.setIcon(icon); + } + return item; + } + + public static JMenuItem createJMenuItem(Messages messages, String label, Action action){ + JMenuItem item = new JMenuItem(action); + item.setText(messages.get(label + ".menuitem.label")); + item.setActionCommand(label); + if(messages.hasValue(label + ".menuitem.tooltip")){ + item.setToolTipText(messages.get(label + ".menuitem.tooltip")); + } + Icon icon = getIcon(messages, label + ".menuitem.icon"); + if(icon != null){ + item.setIcon(icon); + } + return item; + } + + public static JMenuItem createJMenuItem(Messages messages, String label){ + JMenuItem item = new JMenuItem(messages.get(label + ".menuitem.label")); + item.setActionCommand(label); + if(messages.hasValue(label + ".menuitem.tooltip")){ + item.setToolTipText(messages.get(label + ".menuitem.tooltip")); + } + Icon icon = getIcon(messages, label + ".menuitem.icon"); + if(icon != null){ + item.setIcon(icon); + } + return item; + } + + public static JMenu createJMenu(Messages messages, String label){ + JMenu menu = new JMenu(messages.get(label + ".menu.label")); + menu.setActionCommand(label); + if(messages.hasValue(label + ".menu.tooltip")){ + menu.setToolTipText(messages.get(label + ".menu.tooltip")); + } + Icon icon = getIcon(messages, label + ".menu.icon"); + if(icon != null){ + menu.setIcon(icon); + } + return menu; + } + + public static URL getResource(Messages messages, String resourcePathLabel, String resourcePathPrefix){ + if(messages.hasValue(resourcePathLabel)){ + String resourcePath = messages.get(resourcePathLabel); + if(resourcePathPrefix != null){ + resourcePath = resourcePathPrefix + resourcePath; + } + return GUIUtility.class.getResource(resourcePath); + } + return null; + } + + public static URL getResource(Messages messages, String resourcePathLabel){ + return getResource(messages, resourcePathLabel, null); + } + + public static Icon getIcon(Messages messages, String label){ + URL url = getResource(messages, label, messages.get("icon.path")); + if(url != null){ + ImageIcon icon = new ImageIcon(url); + return icon; + } + + return null; + } + + public static Image getImage(Messages messages, String imageFilePathLabel){ + Icon icon = getIcon(messages, imageFilePathLabel); + if(icon != null && icon instanceof ImageIcon){ + return ((ImageIcon)icon).getImage(); + } + return null; + } + + public static void addNewTab(Messages messages, String key, JTabbedPane tabPane, Component comp){ + addNewTab(messages, key, tabPane, comp, null, null); + } + + public static void addNewTab(Messages messages, String key, JTabbedPane tabPane, Component comp, Object[] tabnameValues, Object[] values){ + String tabName = messages.get(key + ".tab.label"); + String tooltip = messages.get(key + ".tab.tooltip"); + Icon icon = getIcon(messages, key + ".tab.icon"); + + if(tabnameValues != null){ + tabName = MessageFormat.format(tabName, tabnameValues); + } + + if(values != null){ + tooltip = MessageFormat.format(tooltip, values); + } + tabPane.addTab(tabName, icon, comp, tooltip); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/PairComparisonPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonPane.java similarity index 89% rename from src/main/java/jp/naist/se/stigmata/ui/swing/PairComparisonPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonPane.java index 4969d09..27b7255 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/PairComparisonPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonPane.java @@ -1,122 +1,122 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.GridLayout; -import java.io.IOException; -import java.io.PrintWriter; - -import javax.swing.BorderFactory; -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JSplitPane; -import javax.swing.JTree; -import javax.swing.border.TitledBorder; - -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.ComparisonPairElement; -import jp.naist.se.stigmata.printer.PrinterManager; -import jp.naist.se.stigmata.spi.ResultPrinterSpi; -import jp.naist.se.stigmata.ui.swing.actions.SaveAction; -import jp.naist.se.stigmata.utils.AsciiDataWritable; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class PairComparisonPane extends JPanel{ - private static final long serialVersionUID = 2342856785474356234L; - - private StigmataFrame frame; - private ComparisonPair pair; - - public PairComparisonPane(StigmataFrame frame, ComparisonPair pair){ - this.frame = frame; - this.pair = pair; - - initialize(frame); - } - - private void initialize(StigmataFrame frame){ - this.setLayout(new java.awt.BorderLayout()); - this.add(getSouthPanel(frame), java.awt.BorderLayout.SOUTH); - this.add(getMainPane(frame), java.awt.BorderLayout.CENTER); - } - - private JPanel getSouthPanel(StigmataFrame stigmata){ - JPanel panel = new JPanel(); - panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); - JPanel similarityPanel = new JPanel(); - similarityPanel.setLayout(new GridLayout(1, 3)); - - JLabel label = new JLabel(Double.toString(pair.calculateSimilarity())); - label.setBorder(BorderFactory.createTitledBorder(stigmata.getMessages().get("result.border"))); - JComboBox combo = new JComboBox(); - for(ComparisonPairElement elem : pair){ - combo.addItem(new ClippedLRListCellRenderer.LRItem(elem.getType(), elem.getSimilarity())); - } - combo.setRenderer(new ClippedLRListCellRenderer(new Dimension(100, combo.getPreferredSize().height), 50)); - combo.setBorder(BorderFactory.createTitledBorder(stigmata.getMessages().get("eachbirthmarksimilarity.border"))); - similarityPanel.add(label); - similarityPanel.add(combo); - similarityPanel.setBorder(new TitledBorder(stigmata.getMessages().get("similarity.border"))); - - panel.add(similarityPanel); - - JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); - JButton saveButton = GUIUtility.createButton( - frame.getMessages(), "savecomparison", new SaveAction(frame, new AsciiDataWritable(){ - public void writeAsciiData(PrintWriter out, String format) throws IOException{ - ResultPrinterSpi service = PrinterManager.getInstance().getService(format); - if(service == null){ - service = PrinterManager.getDefaultFormatService(); - } - - service.getComparisonPairPrinter().printResult(out, pair); - } - }) - ); - - buttonPanel.add(saveButton); - panel.add(buttonPanel); - - return panel; - } - - private JSplitPane getMainPane(StigmataFrame frame){ - JSplitPane spliter = new javax.swing.JSplitPane(); - spliter.setLeftComponent(getSpliterPanel(frame, pair.getTarget1())); - spliter.setRightComponent(getSpliterPanel(frame, pair.getTarget2())); - spliter.setDividerLocation((spliter.getWidth() - spliter.getDividerSize()) / 2); - spliter.setContinuousLayout(true); - - return spliter; - } - - private JPanel getSpliterPanel(StigmataFrame stigmata, BirthmarkSet birthmark){ - JPanel panel = new JPanel(); - panel.setLayout(new BorderLayout()); - JTree tree = new JTree(new BirthmarkTreeNode(birthmark)); - - panel.add(new JScrollPane(tree), BorderLayout.CENTER); - JPanel south = new JPanel(new BorderLayout()); - panel.add(south, BorderLayout.SOUTH); - - JLabel elementCount = new JLabel(Integer.toString(birthmark.getSumOfElementCount())); - elementCount.setBorder(new TitledBorder(stigmata.getMessages().get("elementcount.border"))); - south.add(elementCount, BorderLayout.CENTER); - - return panel; - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.GridLayout; +import java.io.IOException; +import java.io.PrintWriter; + +import javax.swing.BorderFactory; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JSplitPane; +import javax.swing.JTree; +import javax.swing.border.TitledBorder; + +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.ComparisonPairElement; +import jp.sourceforge.stigmata.printer.PrinterManager; +import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.ui.swing.actions.SaveAction; +import jp.sourceforge.stigmata.utils.AsciiDataWritable; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class PairComparisonPane extends JPanel{ + private static final long serialVersionUID = 2342856785474356234L; + + private StigmataFrame frame; + private ComparisonPair pair; + + public PairComparisonPane(StigmataFrame frame, ComparisonPair pair){ + this.frame = frame; + this.pair = pair; + + initialize(frame); + } + + private void initialize(StigmataFrame frame){ + this.setLayout(new java.awt.BorderLayout()); + this.add(getSouthPanel(frame), java.awt.BorderLayout.SOUTH); + this.add(getMainPane(frame), java.awt.BorderLayout.CENTER); + } + + private JPanel getSouthPanel(StigmataFrame stigmata){ + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + JPanel similarityPanel = new JPanel(); + similarityPanel.setLayout(new GridLayout(1, 3)); + + JLabel label = new JLabel(Double.toString(pair.calculateSimilarity())); + label.setBorder(BorderFactory.createTitledBorder(stigmata.getMessages().get("result.border"))); + JComboBox combo = new JComboBox(); + for(ComparisonPairElement elem : pair){ + combo.addItem(new ClippedLRListCellRenderer.LRItem(elem.getType(), elem.getSimilarity())); + } + combo.setRenderer(new ClippedLRListCellRenderer(new Dimension(100, combo.getPreferredSize().height), 50)); + combo.setBorder(BorderFactory.createTitledBorder(stigmata.getMessages().get("eachbirthmarksimilarity.border"))); + similarityPanel.add(label); + similarityPanel.add(combo); + similarityPanel.setBorder(new TitledBorder(stigmata.getMessages().get("similarity.border"))); + + panel.add(similarityPanel); + + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); + JButton saveButton = GUIUtility.createButton( + frame.getMessages(), "savecomparison", new SaveAction(frame, new AsciiDataWritable(){ + public void writeAsciiData(PrintWriter out, String format) throws IOException{ + ResultPrinterSpi service = PrinterManager.getInstance().getService(format); + if(service == null){ + service = PrinterManager.getDefaultFormatService(); + } + + service.getComparisonPairPrinter().printResult(out, pair); + } + }) + ); + + buttonPanel.add(saveButton); + panel.add(buttonPanel); + + return panel; + } + + private JSplitPane getMainPane(StigmataFrame frame){ + JSplitPane spliter = new javax.swing.JSplitPane(); + spliter.setLeftComponent(getSpliterPanel(frame, pair.getTarget1())); + spliter.setRightComponent(getSpliterPanel(frame, pair.getTarget2())); + spliter.setDividerLocation((spliter.getWidth() - spliter.getDividerSize()) / 2); + spliter.setContinuousLayout(true); + + return spliter; + } + + private JPanel getSpliterPanel(StigmataFrame stigmata, BirthmarkSet birthmark){ + JPanel panel = new JPanel(); + panel.setLayout(new BorderLayout()); + JTree tree = new JTree(new BirthmarkTreeNode(birthmark)); + + panel.add(new JScrollPane(tree), BorderLayout.CENTER); + JPanel south = new JPanel(new BorderLayout()); + panel.add(south, BorderLayout.SOUTH); + + JLabel elementCount = new JLabel(Integer.toString(birthmark.getSumOfElementCount())); + elementCount.setBorder(new TitledBorder(stigmata.getMessages().get("elementcount.border"))); + south.add(elementCount, BorderLayout.CENTER); + + return panel; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/PairComparisonResultSetPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonResultSetPane.java similarity index 90% rename from src/main/java/jp/naist/se/stigmata/ui/swing/PairComparisonResultSetPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonResultSetPane.java index 905739d..fe7c2af 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/PairComparisonResultSetPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonResultSetPane.java @@ -1,211 +1,211 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import javax.swing.Box; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.border.TitledBorder; -import javax.swing.table.DefaultTableModel; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.ComparisonResultSet; -import jp.naist.se.stigmata.printer.PrinterManager; -import jp.naist.se.stigmata.result.CertainPairComparisonResultSet; -import jp.naist.se.stigmata.spi.ResultPrinterSpi; -import jp.naist.se.stigmata.ui.swing.actions.SaveAction; -import jp.naist.se.stigmata.ui.swing.actions.UpdateBirthmarkCellColorAction; -import jp.naist.se.stigmata.utils.AsciiDataWritable; - -/** - * - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class PairComparisonResultSetPane extends JPanel{ - private static final long serialVersionUID = 3298346465652354302L; - - private StigmataFrame frame; - private ComparisonResultSet comparison; - private DefaultTableModel model = new PairComparisonResultSetTableModel(); - private JTable table = new JTable(model); - private JLabel averageLabel, maximumLabel, minimumLabel; - private double average, maximum, minimum; - - public PairComparisonResultSetPane(StigmataFrame frame, ComparisonResultSet resultset){ - this.frame = frame; - this.comparison = resultset; - - initComponent(); - initData(model, resultset); - } - - private void obfuscateClassNames(){ - ClassNameObfuscator obfuscator = new ClassNameObfuscator(); - List newList = new ArrayList(); - BirthmarkContext context = comparison.getContext(); - - for(Iterator i = comparison.iterator(); i.hasNext(); ){ - ComparisonPair pair = i.next(); - BirthmarkSet set1 = obfuscator.obfuscateClassName(pair.getTarget1()); - BirthmarkSet set2 = obfuscator.obfuscateClassName(pair.getTarget2()); - - context = comparison.getContext(); - newList.add(new ComparisonPair(set1, set2, context)); - } - - try{ - File file = frame.getSaveFile(frame.getMessages().getArray("obfuscationmapping.extension"), - frame.getMessages().get("obfuscationmapping.description")); - if(file == null){ - return; - } - obfuscator.outputNameMappings(file); - }catch(IOException e){ - JOptionPane.showMessageDialog( - this, e.getMessage(), frame.getMessages().get("error.dialog.title"), - JOptionPane.ERROR_MESSAGE - ); - return; - } - - DefaultTableModel newModel = new PairComparisonResultSetTableModel(); - initData(newModel, new CertainPairComparisonResultSet(newList.toArray(new ComparisonPair[newList.size()]), context)); - model = newModel; - table.setModel(newModel); - } - - private void initData(DefaultTableModel model, ComparisonResultSet comparison){ - maximum = 0d; - minimum = 1d; - average = 0d; - model.setColumnIdentifiers(frame.getMessages().getArray("comparepair.table.columns")); - - for(Iterator i = comparison.iterator(); i.hasNext(); ){ - ComparisonPair pair = i.next(); - double similarity = pair.calculateSimilarity(); - if(similarity > maximum) maximum = similarity; - if(similarity < minimum) minimum = similarity; - average += similarity; - - model.addRow(new Object[] { pair.getTarget1().getName(), - pair.getTarget2().getName(), new Double(similarity) }); - } - average = average / comparison.getPairCount(); - - averageLabel.setText(Double.toString(average)); - maximumLabel.setText(Double.toString(maximum)); - minimumLabel.setText(Double.toString(minimum)); - } - - private void initComponent(){ - JComponent buttonPanel = Box.createHorizontalBox(); - JPanel similarityPane = new JPanel(new GridLayout(1, 3)); - JComponent southPanel = Box.createVerticalBox(); - JButton saveButton = GUIUtility.createButton( - frame.getMessages(), "savecomparison", new SaveAction(frame, new AsciiDataWritable(){ - public void writeAsciiData(PrintWriter out, String format) throws IOException{ - ResultPrinterSpi service = PrinterManager.getInstance().getService(format); - if(service == null){ - service = PrinterManager.getDefaultFormatService(); - } - service.getComparisonResultSetPrinter().printResult(out, comparison); - } - }) - ); - JButton updateColorButton = GUIUtility.createButton( - frame.getMessages(), "updatecellcolor", new UpdateBirthmarkCellColorAction(frame, comparison.getEnvironment()) - ); - JButton obfuscateButton = GUIUtility.createButton(frame.getMessages(), "obfuscate"); - JScrollPane scroll = new JScrollPane(); - averageLabel = new JLabel(Double.toString(average), JLabel.RIGHT); - maximumLabel = new JLabel(Double.toString(maximum), JLabel.RIGHT); - minimumLabel = new JLabel(Double.toString(minimum), JLabel.RIGHT); - - scroll.setViewportView(table); - table.setDefaultRenderer(Double.class, new CompareTableCellRenderer(comparison.getEnvironment())); - similarityPane.setBorder(new TitledBorder(frame.getMessages().get("similarity.border"))); - averageLabel.setBorder(new TitledBorder(frame.getMessages().get("average.border"))); - maximumLabel.setBorder(new TitledBorder(frame.getMessages().get("maximum.border"))); - minimumLabel.setBorder(new TitledBorder(frame.getMessages().get("minimum.border"))); - - setLayout(new BorderLayout()); - add(scroll, BorderLayout.CENTER); - add(southPanel, BorderLayout.SOUTH); - similarityPane.add(averageLabel); - similarityPane.add(maximumLabel); - similarityPane.add(minimumLabel); - southPanel.add(similarityPane); - southPanel.add(buttonPanel); - buttonPanel.add(Box.createHorizontalGlue()); - buttonPanel.add(saveButton); - buttonPanel.add(Box.createHorizontalGlue()); - buttonPanel.add(updateColorButton); - buttonPanel.add(Box.createHorizontalGlue()); - buttonPanel.add(obfuscateButton); - buttonPanel.add(Box.createHorizontalGlue()); - - table.addMouseListener(new MouseAdapter(){ - public void mouseClicked(MouseEvent e){ - if(e.getClickCount() == 2){ - int row = table.rowAtPoint(e.getPoint()); - int col = table.columnAtPoint(e.getPoint()); - if(col >= 1 && col < table.getColumnCount() && row >= 0 - && row < table.getRowCount()){ - ComparisonPair pair = comparison.getPairAt(row); - - frame.compareDetails(pair.getTarget1(), pair.getTarget2(), comparison.getContext()); - } - } - } - }); - - obfuscateButton.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - obfuscateClassNames(); - } - }); - } - - private static class PairComparisonResultSetTableModel extends DefaultTableModel{ - private static final long serialVersionUID = 93457234571623497L; - - @Override - public boolean isCellEditable(int row, int column){ - return false; - } - - @Override - public Class getColumnClass(int column){ - if(column == 2){ - return Double.class; - } - else{ - return String.class; - } - } - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.border.TitledBorder; +import javax.swing.table.DefaultTableModel; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.ComparisonResultSet; +import jp.sourceforge.stigmata.printer.PrinterManager; +import jp.sourceforge.stigmata.result.CertainPairComparisonResultSet; +import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.ui.swing.actions.SaveAction; +import jp.sourceforge.stigmata.ui.swing.actions.UpdateBirthmarkCellColorAction; +import jp.sourceforge.stigmata.utils.AsciiDataWritable; + +/** + * + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class PairComparisonResultSetPane extends JPanel{ + private static final long serialVersionUID = 3298346465652354302L; + + private StigmataFrame frame; + private ComparisonResultSet comparison; + private DefaultTableModel model = new PairComparisonResultSetTableModel(); + private JTable table = new JTable(model); + private JLabel averageLabel, maximumLabel, minimumLabel; + private double average, maximum, minimum; + + public PairComparisonResultSetPane(StigmataFrame frame, ComparisonResultSet resultset){ + this.frame = frame; + this.comparison = resultset; + + initComponent(); + initData(model, resultset); + } + + private void obfuscateClassNames(){ + ClassNameObfuscator obfuscator = new ClassNameObfuscator(); + List newList = new ArrayList(); + BirthmarkContext context = comparison.getContext(); + + for(Iterator i = comparison.iterator(); i.hasNext(); ){ + ComparisonPair pair = i.next(); + BirthmarkSet set1 = obfuscator.obfuscateClassName(pair.getTarget1()); + BirthmarkSet set2 = obfuscator.obfuscateClassName(pair.getTarget2()); + + context = comparison.getContext(); + newList.add(new ComparisonPair(set1, set2, context)); + } + + try{ + File file = frame.getSaveFile(frame.getMessages().getArray("obfuscationmapping.extension"), + frame.getMessages().get("obfuscationmapping.description")); + if(file == null){ + return; + } + obfuscator.outputNameMappings(file); + }catch(IOException e){ + JOptionPane.showMessageDialog( + this, e.getMessage(), frame.getMessages().get("error.dialog.title"), + JOptionPane.ERROR_MESSAGE + ); + return; + } + + DefaultTableModel newModel = new PairComparisonResultSetTableModel(); + initData(newModel, new CertainPairComparisonResultSet(newList.toArray(new ComparisonPair[newList.size()]), context)); + model = newModel; + table.setModel(newModel); + } + + private void initData(DefaultTableModel model, ComparisonResultSet comparison){ + maximum = 0d; + minimum = 1d; + average = 0d; + model.setColumnIdentifiers(frame.getMessages().getArray("comparepair.table.columns")); + + for(Iterator i = comparison.iterator(); i.hasNext(); ){ + ComparisonPair pair = i.next(); + double similarity = pair.calculateSimilarity(); + if(similarity > maximum) maximum = similarity; + if(similarity < minimum) minimum = similarity; + average += similarity; + + model.addRow(new Object[] { pair.getTarget1().getName(), + pair.getTarget2().getName(), new Double(similarity) }); + } + average = average / comparison.getPairCount(); + + averageLabel.setText(Double.toString(average)); + maximumLabel.setText(Double.toString(maximum)); + minimumLabel.setText(Double.toString(minimum)); + } + + private void initComponent(){ + JComponent buttonPanel = Box.createHorizontalBox(); + JPanel similarityPane = new JPanel(new GridLayout(1, 3)); + JComponent southPanel = Box.createVerticalBox(); + JButton saveButton = GUIUtility.createButton( + frame.getMessages(), "savecomparison", new SaveAction(frame, new AsciiDataWritable(){ + public void writeAsciiData(PrintWriter out, String format) throws IOException{ + ResultPrinterSpi service = PrinterManager.getInstance().getService(format); + if(service == null){ + service = PrinterManager.getDefaultFormatService(); + } + service.getComparisonResultSetPrinter().printResult(out, comparison); + } + }) + ); + JButton updateColorButton = GUIUtility.createButton( + frame.getMessages(), "updatecellcolor", new UpdateBirthmarkCellColorAction(frame, comparison.getEnvironment()) + ); + JButton obfuscateButton = GUIUtility.createButton(frame.getMessages(), "obfuscate"); + JScrollPane scroll = new JScrollPane(); + averageLabel = new JLabel(Double.toString(average), JLabel.RIGHT); + maximumLabel = new JLabel(Double.toString(maximum), JLabel.RIGHT); + minimumLabel = new JLabel(Double.toString(minimum), JLabel.RIGHT); + + scroll.setViewportView(table); + table.setDefaultRenderer(Double.class, new CompareTableCellRenderer(comparison.getEnvironment())); + similarityPane.setBorder(new TitledBorder(frame.getMessages().get("similarity.border"))); + averageLabel.setBorder(new TitledBorder(frame.getMessages().get("average.border"))); + maximumLabel.setBorder(new TitledBorder(frame.getMessages().get("maximum.border"))); + minimumLabel.setBorder(new TitledBorder(frame.getMessages().get("minimum.border"))); + + setLayout(new BorderLayout()); + add(scroll, BorderLayout.CENTER); + add(southPanel, BorderLayout.SOUTH); + similarityPane.add(averageLabel); + similarityPane.add(maximumLabel); + similarityPane.add(minimumLabel); + southPanel.add(similarityPane); + southPanel.add(buttonPanel); + buttonPanel.add(Box.createHorizontalGlue()); + buttonPanel.add(saveButton); + buttonPanel.add(Box.createHorizontalGlue()); + buttonPanel.add(updateColorButton); + buttonPanel.add(Box.createHorizontalGlue()); + buttonPanel.add(obfuscateButton); + buttonPanel.add(Box.createHorizontalGlue()); + + table.addMouseListener(new MouseAdapter(){ + public void mouseClicked(MouseEvent e){ + if(e.getClickCount() == 2){ + int row = table.rowAtPoint(e.getPoint()); + int col = table.columnAtPoint(e.getPoint()); + if(col >= 1 && col < table.getColumnCount() && row >= 0 + && row < table.getRowCount()){ + ComparisonPair pair = comparison.getPairAt(row); + + frame.compareDetails(pair.getTarget1(), pair.getTarget2(), comparison.getContext()); + } + } + } + }); + + obfuscateButton.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + obfuscateClassNames(); + } + }); + } + + private static class PairComparisonResultSetTableModel extends DefaultTableModel{ + private static final long serialVersionUID = 93457234571623497L; + + @Override + public boolean isCellEditable(int row, int column){ + return false; + } + + @Override + public Class getColumnClass(int column){ + if(column == 2){ + return Double.class; + } + else{ + return String.class; + } + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/PopupButton.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/PopupButton.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ui/swing/PopupButton.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/PopupButton.java index 4796e15..eda5b76 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/PopupButton.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/PopupButton.java @@ -1,88 +1,88 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.Point; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.Icon; -import javax.swing.JButton; -import javax.swing.JMenuItem; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.plaf.metal.MetalComboBoxIcon; - -/** - * Popup button. - * - * @author tamada - * @version $Revision$ $Date$ - */ -public class PopupButton extends JPanel{ - private static final long serialVersionUID = -4428839967597028837L; - - private JButton button; - private JPopupMenu popup; - private JButton arrowButton; - private Icon icon; - - public PopupButton(JButton initButton){ - setLayout(new BorderLayout()); - - button = initButton; - icon = new MetalComboBoxIcon(); - arrowButton = new JButton(icon); - popup = new JPopupMenu(); - add(button, BorderLayout.CENTER); - add(arrowButton, BorderLayout.EAST); - - arrowButton.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - Point p = button.getLocation(); - popup.show(PopupButton.this, p.x, button.getHeight()); - } - }); - updateUI(); - } - - @Override - public void setEnabled(boolean enabled){ - super.setEnabled(enabled); - button.setEnabled(enabled); - arrowButton.setEnabled(enabled); - } - - public JButton getButton(){ - return button; - } - - public JMenuItem addMenuItem(JMenuItem menuItem){ - return popup.add(menuItem); - } - - public void updateUI(){ - super.updateUI(); - if(button != null){ - Dimension prefferedSize = button.getPreferredSize(); - - arrowButton.setPreferredSize(new Dimension(icon.getIconWidth() + 4, prefferedSize.height)); - setPreferredSize(new Dimension(prefferedSize.width + icon.getIconWidth() + 4, prefferedSize.height)); - - Dimension maxSize = button.getMaximumSize(); - arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, maxSize.height)); - setMaximumSize(new Dimension(maxSize.width + icon.getIconWidth() + 4, maxSize.height)); - - Dimension minSize = button.getMinimumSize(); - arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, minSize.height)); - setMinimumSize(new Dimension(minSize.width + icon.getIconWidth() + 4, minSize.height)); - - arrowButton.setSize(arrowButton.getPreferredSize()); - setSize(getPreferredSize()); - } - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.Icon; +import javax.swing.JButton; +import javax.swing.JMenuItem; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.plaf.metal.MetalComboBoxIcon; + +/** + * Popup button. + * + * @author tamada + * @version $Revision$ $Date$ + */ +public class PopupButton extends JPanel{ + private static final long serialVersionUID = -4428839967597028837L; + + private JButton button; + private JPopupMenu popup; + private JButton arrowButton; + private Icon icon; + + public PopupButton(JButton initButton){ + setLayout(new BorderLayout()); + + button = initButton; + icon = new MetalComboBoxIcon(); + arrowButton = new JButton(icon); + popup = new JPopupMenu(); + add(button, BorderLayout.CENTER); + add(arrowButton, BorderLayout.EAST); + + arrowButton.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + Point p = button.getLocation(); + popup.show(PopupButton.this, p.x, button.getHeight()); + } + }); + updateUI(); + } + + @Override + public void setEnabled(boolean enabled){ + super.setEnabled(enabled); + button.setEnabled(enabled); + arrowButton.setEnabled(enabled); + } + + public JButton getButton(){ + return button; + } + + public JMenuItem addMenuItem(JMenuItem menuItem){ + return popup.add(menuItem); + } + + public void updateUI(){ + super.updateUI(); + if(button != null){ + Dimension prefferedSize = button.getPreferredSize(); + + arrowButton.setPreferredSize(new Dimension(icon.getIconWidth() + 4, prefferedSize.height)); + setPreferredSize(new Dimension(prefferedSize.width + icon.getIconWidth() + 4, prefferedSize.height)); + + Dimension maxSize = button.getMaximumSize(); + arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, maxSize.height)); + setMaximumSize(new Dimension(maxSize.width + icon.getIconWidth() + 4, maxSize.height)); + + Dimension minSize = button.getMinimumSize(); + arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, minSize.height)); + setMinimumSize(new Dimension(minSize.width + icon.getIconWidth() + 4, minSize.height)); + + arrowButton.setSize(arrowButton.getPreferredSize()); + setSize(getPreferredSize()); + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/PropertyEditPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/PropertyEditPane.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ui/swing/PropertyEditPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/PropertyEditPane.java index 37291f0..e3c3573 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/PropertyEditPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/PropertyEditPane.java @@ -1,244 +1,244 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.awt.event.ActionEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.Iterator; - -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.Box; -import javax.swing.JButton; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.JTextField; -import javax.swing.ListSelectionModel; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import javax.swing.table.DefaultTableModel; - -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.ui.swing.actions.PopupShowAction; -import jp.sourceforge.talisman.i18n.Messages; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class PropertyEditPane extends JPanel{ - private static final long serialVersionUID = 12397342543653L; - - private StigmataFrame stigmata; - private JTable table; - private DefaultTableModel model; - - public PropertyEditPane(StigmataFrame stigmata){ - this.stigmata = stigmata; - - initLayouts(); - initData(); - } - - public void updateEnvironment(BirthmarkEnvironment environment){ - environment.clearProperties(); - for(int i = 0; i < model.getRowCount(); i++){ - environment.addProperty( - (String)model.getValueAt(i, 0), - (String)model.getValueAt(i, 1) - ); - } - } - - private void initData(){ - BirthmarkEnvironment environment = stigmata.getEnvironment(); - environment.addPropertyListener(new PropertyChangeListener(){ - public void propertyChange(PropertyChangeEvent evt){ - String name = evt.getPropertyName(); - String value = (String)evt.getNewValue(); - if(value == null){ - removeProperty(name); - } - else{ - addOrUpdateProperty(name, value); - } - } - }); - for(Iterator i = environment.propertyKeys(); i.hasNext(); ){ - String key = i.next(); - model.addRow(new Object[] { key, environment.getProperty(key), }); - } - } - - private void removeProperty(String name){ - int index = findIndex(name); - if(index >= 0){ - model.removeRow(index); - } - stigmata.setNeedToSaveSettings(true); - } - - private void addOrUpdateProperty(String name, String value){ - int index = findIndex(name); - if(index >= 0){ - model.setValueAt(value, index, 1); - } - else{ - model.addRow(new Object[] { name, value, }); - } - stigmata.setNeedToSaveSettings(true); - } - - private int findIndex(String name){ - for(int i = 0; i < model.getRowCount(); i++){ - String v = (String)model.getValueAt(i, 0); - if(v.equals(name)){ - return i; - } - } - return -1; - } - - private void addNewProperty(int index){ - final Messages messages = stigmata.getMessages(); - GridBagLayout layout = new GridBagLayout(); - JPanel panel = new JPanel(layout); - JLabel nameLabel = new JLabel(messages.get("propertyname.label")); - JLabel valueLabel = new JLabel(messages.get("propertyvalue.label")); - JTextField name = new JTextField(15); - JTextField value = new JTextField(15); - - GridBagConstraints gbc = new GridBagConstraints(); - gbc.gridx = 0; gbc.gridwidth = 1; - gbc.gridy = 0; gbc.gridheight = 1; - gbc.insets = new Insets(5, 5, 5, 0); - layout.setConstraints(nameLabel, gbc); - panel.add(nameLabel); - - gbc.gridx = 1; gbc.gridwidth = 2; - gbc.gridy = 0; gbc.gridheight = 1; - gbc.fill = GridBagConstraints.HORIZONTAL; - layout.setConstraints(name, gbc); - panel.add(name); - - gbc.gridx = 0; gbc.gridwidth = 1; - gbc.gridy = 1; gbc.gridheight = 1; - layout.setConstraints(valueLabel, gbc); - panel.add(valueLabel); - - gbc.gridx = 1; gbc.gridwidth = 2; - gbc.gridy = 1; gbc.gridheight = 1; - gbc.fill = GridBagConstraints.HORIZONTAL; - layout.setConstraints(value, gbc); - panel.add(value); - - if(index >= 0){ - String keyValue = String.valueOf(table.getValueAt(index, 0)); - String valueValue = String.valueOf(table.getValueAt(index, 1)); - if(keyValue != null) name.setText(keyValue); - if(valueValue != null) value.setText(valueValue); - } - - int val = JOptionPane.showConfirmDialog( - stigmata, panel, messages.get("propertyadd.dialog.title"), - JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE - ); - if(val == JOptionPane.YES_OPTION){ - if(index >= 0){ - model.setValueAt(name.getText(), index, 0); - model.setValueAt(value.getText(), index, 1); - } - else{ - model.addRow(new Object[] { - name.getText().trim(), - value.getText() - }); - } - stigmata.setNeedToSaveSettings(true); - } - } - - private void removeSelectedProperty(){ - int[] indexes = table.getSelectedRows(); - for(int i = indexes.length - 1; i >= 0; i--){ - model.removeRow(indexes[i]); - } - stigmata.setNeedToSaveSettings(true); - } - - private void initLayouts(){ - final Messages messages = stigmata.getMessages(); - model = new DefaultTableModel(); - model.addColumn(messages.get("propertyname.label")); - model.addColumn(messages.get("propertyvalue.label")); - table = new JTable(model); - table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - table.setColumnSelectionAllowed(false); - - Action addAction = new AbstractAction(){ - private static final long serialVersionUID = 1283676936119122278L; - - public void actionPerformed(ActionEvent e){ - addNewProperty(-1); - } - }; - final Action removeAction = new AbstractAction(){ - private static final long serialVersionUID = -411260949451039374L; - - public void actionPerformed(ActionEvent e){ - removeSelectedProperty(); - } - }; - final Action changeAction = new AbstractAction(){ - private static final long serialVersionUID = -7406073660916286349L; - - public void actionPerformed(ActionEvent e){ - addNewProperty(table.getSelectedRow()); - } - }; - JButton addButton = GUIUtility.createButton(messages, "propertyadd", addAction); - JButton changeButton = GUIUtility.createButton(messages, "propertychange", changeAction); - JButton removeButton = GUIUtility.createButton(messages, "propertyremove", removeAction); - - final JPopupMenu popup = new JPopupMenu(); - popup.add(GUIUtility.createJMenuItem(messages, "propertyadd", addAction)); - popup.add(GUIUtility.createJMenuItem(messages, "propertychange", changeAction)); - popup.add(GUIUtility.createJMenuItem(messages, "propertyremove", removeAction)); - - setLayout(new BorderLayout()); - JScrollPane scroll = new JScrollPane(table); - Box box = Box.createHorizontalBox(); - box.add(Box.createHorizontalGlue()); - box.add(addButton); - box.add(Box.createHorizontalGlue()); - box.add(changeButton); - box.add(Box.createHorizontalGlue()); - box.add(removeButton); - box.add(Box.createHorizontalGlue()); - - add(scroll, BorderLayout.CENTER); - add(box, BorderLayout.SOUTH); - - table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ - public void valueChanged(ListSelectionEvent arg0){ - removeAction.setEnabled(table.getSelectedRowCount() != 0); - changeAction.setEnabled(table.getSelectedRowCount() == 1); - } - }); - table.addMouseListener(new PopupShowAction(popup)); - changeAction.setEnabled(false); - removeAction.setEnabled(false); - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.Iterator; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.table.DefaultTableModel; + +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.ui.swing.actions.PopupShowAction; +import jp.sourceforge.talisman.i18n.Messages; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class PropertyEditPane extends JPanel{ + private static final long serialVersionUID = 12397342543653L; + + private StigmataFrame stigmata; + private JTable table; + private DefaultTableModel model; + + public PropertyEditPane(StigmataFrame stigmata){ + this.stigmata = stigmata; + + initLayouts(); + initData(); + } + + public void updateEnvironment(BirthmarkEnvironment environment){ + environment.clearProperties(); + for(int i = 0; i < model.getRowCount(); i++){ + environment.addProperty( + (String)model.getValueAt(i, 0), + (String)model.getValueAt(i, 1) + ); + } + } + + private void initData(){ + BirthmarkEnvironment environment = stigmata.getEnvironment(); + environment.addPropertyListener(new PropertyChangeListener(){ + public void propertyChange(PropertyChangeEvent evt){ + String name = evt.getPropertyName(); + String value = (String)evt.getNewValue(); + if(value == null){ + removeProperty(name); + } + else{ + addOrUpdateProperty(name, value); + } + } + }); + for(Iterator i = environment.propertyKeys(); i.hasNext(); ){ + String key = i.next(); + model.addRow(new Object[] { key, environment.getProperty(key), }); + } + } + + private void removeProperty(String name){ + int index = findIndex(name); + if(index >= 0){ + model.removeRow(index); + } + stigmata.setNeedToSaveSettings(true); + } + + private void addOrUpdateProperty(String name, String value){ + int index = findIndex(name); + if(index >= 0){ + model.setValueAt(value, index, 1); + } + else{ + model.addRow(new Object[] { name, value, }); + } + stigmata.setNeedToSaveSettings(true); + } + + private int findIndex(String name){ + for(int i = 0; i < model.getRowCount(); i++){ + String v = (String)model.getValueAt(i, 0); + if(v.equals(name)){ + return i; + } + } + return -1; + } + + private void addNewProperty(int index){ + final Messages messages = stigmata.getMessages(); + GridBagLayout layout = new GridBagLayout(); + JPanel panel = new JPanel(layout); + JLabel nameLabel = new JLabel(messages.get("propertyname.label")); + JLabel valueLabel = new JLabel(messages.get("propertyvalue.label")); + JTextField name = new JTextField(15); + JTextField value = new JTextField(15); + + GridBagConstraints gbc = new GridBagConstraints(); + gbc.gridx = 0; gbc.gridwidth = 1; + gbc.gridy = 0; gbc.gridheight = 1; + gbc.insets = new Insets(5, 5, 5, 0); + layout.setConstraints(nameLabel, gbc); + panel.add(nameLabel); + + gbc.gridx = 1; gbc.gridwidth = 2; + gbc.gridy = 0; gbc.gridheight = 1; + gbc.fill = GridBagConstraints.HORIZONTAL; + layout.setConstraints(name, gbc); + panel.add(name); + + gbc.gridx = 0; gbc.gridwidth = 1; + gbc.gridy = 1; gbc.gridheight = 1; + layout.setConstraints(valueLabel, gbc); + panel.add(valueLabel); + + gbc.gridx = 1; gbc.gridwidth = 2; + gbc.gridy = 1; gbc.gridheight = 1; + gbc.fill = GridBagConstraints.HORIZONTAL; + layout.setConstraints(value, gbc); + panel.add(value); + + if(index >= 0){ + String keyValue = String.valueOf(table.getValueAt(index, 0)); + String valueValue = String.valueOf(table.getValueAt(index, 1)); + if(keyValue != null) name.setText(keyValue); + if(valueValue != null) value.setText(valueValue); + } + + int val = JOptionPane.showConfirmDialog( + stigmata, panel, messages.get("propertyadd.dialog.title"), + JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE + ); + if(val == JOptionPane.YES_OPTION){ + if(index >= 0){ + model.setValueAt(name.getText(), index, 0); + model.setValueAt(value.getText(), index, 1); + } + else{ + model.addRow(new Object[] { + name.getText().trim(), + value.getText() + }); + } + stigmata.setNeedToSaveSettings(true); + } + } + + private void removeSelectedProperty(){ + int[] indexes = table.getSelectedRows(); + for(int i = indexes.length - 1; i >= 0; i--){ + model.removeRow(indexes[i]); + } + stigmata.setNeedToSaveSettings(true); + } + + private void initLayouts(){ + final Messages messages = stigmata.getMessages(); + model = new DefaultTableModel(); + model.addColumn(messages.get("propertyname.label")); + model.addColumn(messages.get("propertyvalue.label")); + table = new JTable(model); + table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + table.setColumnSelectionAllowed(false); + + Action addAction = new AbstractAction(){ + private static final long serialVersionUID = 1283676936119122278L; + + public void actionPerformed(ActionEvent e){ + addNewProperty(-1); + } + }; + final Action removeAction = new AbstractAction(){ + private static final long serialVersionUID = -411260949451039374L; + + public void actionPerformed(ActionEvent e){ + removeSelectedProperty(); + } + }; + final Action changeAction = new AbstractAction(){ + private static final long serialVersionUID = -7406073660916286349L; + + public void actionPerformed(ActionEvent e){ + addNewProperty(table.getSelectedRow()); + } + }; + JButton addButton = GUIUtility.createButton(messages, "propertyadd", addAction); + JButton changeButton = GUIUtility.createButton(messages, "propertychange", changeAction); + JButton removeButton = GUIUtility.createButton(messages, "propertyremove", removeAction); + + final JPopupMenu popup = new JPopupMenu(); + popup.add(GUIUtility.createJMenuItem(messages, "propertyadd", addAction)); + popup.add(GUIUtility.createJMenuItem(messages, "propertychange", changeAction)); + popup.add(GUIUtility.createJMenuItem(messages, "propertyremove", removeAction)); + + setLayout(new BorderLayout()); + JScrollPane scroll = new JScrollPane(table); + Box box = Box.createHorizontalBox(); + box.add(Box.createHorizontalGlue()); + box.add(addButton); + box.add(Box.createHorizontalGlue()); + box.add(changeButton); + box.add(Box.createHorizontalGlue()); + box.add(removeButton); + box.add(Box.createHorizontalGlue()); + + add(scroll, BorderLayout.CENTER); + add(box, BorderLayout.SOUTH); + + table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ + public void valueChanged(ListSelectionEvent arg0){ + removeAction.setEnabled(table.getSelectedRowCount() != 0); + changeAction.setEnabled(table.getSelectedRowCount() == 1); + } + }); + table.addMouseListener(new PopupShowAction(popup)); + changeAction.setEnabled(false); + removeAction.setEnabled(false); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/RoundRobinComparisonResultPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/RoundRobinComparisonResultPane.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/ui/swing/RoundRobinComparisonResultPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/RoundRobinComparisonResultPane.java index 8ca2ce0..0a9d28e 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/RoundRobinComparisonResultPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/RoundRobinComparisonResultPane.java @@ -1,430 +1,430 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.net.URL; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import javax.swing.Box; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JMenuItem; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.border.TitledBorder; -import javax.swing.table.DefaultTableModel; - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkComparator; -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.BirthmarkStoreException; -import jp.naist.se.stigmata.ComparisonResultSet; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.ExtractionTarget; -import jp.naist.se.stigmata.filter.FilteredComparisonResultSet; -import jp.naist.se.stigmata.printer.PrinterManager; -import jp.naist.se.stigmata.result.CertainPairComparisonResultSet; -import jp.naist.se.stigmata.result.RoundRobinComparisonResultSet; -import jp.naist.se.stigmata.spi.ResultPrinterSpi; -import jp.naist.se.stigmata.ui.swing.actions.SaveAction; -import jp.naist.se.stigmata.ui.swing.actions.UpdateBirthmarkCellColorAction; -import jp.naist.se.stigmata.utils.AsciiDataWritable; -import jp.sourceforge.talisman.i18n.Messages; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class RoundRobinComparisonResultPane extends JPanel{ - private static final long serialVersionUID = 2134574576543623L; - - private StigmataFrame stigmata; - private ExtractionResultSet extraction; - private JTable table; - private DefaultTableModel model; - private JLabel classCount, comparisonCount, distinctionRatio; - private JLabel average, minimum, maximum; - - public RoundRobinComparisonResultPane(StigmataFrame stigmata, ExtractionResultSet resultset){ - this.stigmata = stigmata; - this.extraction = resultset; - initialize(); - compare(model); - } - - private void compare(DefaultTableModel model){ - ExtractionTarget targetX = ExtractionTarget.TARGET_X; - ExtractionTarget targetY = ExtractionTarget.TARGET_Y; - int countX = extraction.getBirthmarkSetSize(targetX); - int countY = extraction.getBirthmarkSetSize(targetY); - int comparisonCount = countX * countY; - if(countX == 0 && countY == 0){ - targetX = ExtractionTarget.TARGET_XY; - targetY = ExtractionTarget.TARGET_XY; - countX = extraction.getBirthmarkSetSize(targetX); - countY = extraction.getBirthmarkSetSize(targetY); - comparisonCount = countX * (countY - 1) / 2; - } - else if(countX == 0 || countY == 0){ - targetX = ExtractionTarget.TARGET_BOTH; - targetY = ExtractionTarget.TARGET_BOTH; - countX = extraction.getBirthmarkSetSize(targetX); - countY = extraction.getBirthmarkSetSize(targetY); - comparisonCount = countX * (countY - 1) / 2; - } - - classCount.setText(Integer.toString(countX + countY)); - this.comparisonCount.setText(Integer.toString(comparisonCount)); - int correct = 0; - double avg = 0d; - double max = 0d; - double min = 100d; - model.addColumn(""); - for(Iterator i = extraction.birthmarkSets(targetX); i.hasNext(); ){ - BirthmarkSet x = i.next(); - model.addColumn(x.getName()); - } - int sizeX = extraction.getBirthmarkSetSize(targetX); - for(Iterator i = extraction.birthmarkSets(targetY); i.hasNext(); ){ - Object[] rows = new Object[sizeX + 1]; - BirthmarkSet setY = i.next(); - rows[0] = setY.getName(); - - int index = 0; - for(Iterator j = extraction.birthmarkSets(targetX); j.hasNext(); ){ - BirthmarkSet setX = j.next(); - double similarity = compare(setX, setY, extraction.getEnvironment()); - rows[index + 1] = new Double(similarity); - - if(Math.abs(similarity - 1) < 1E-8){ - correct += 1; - } - avg += similarity; - if(max < similarity) max = similarity; - if(min > similarity) min = similarity; - index++; - } - model.addRow(rows); - } - distinctionRatio.setText( - Double.toString((double)(comparisonCount - correct) / (double)comparisonCount) - ); - avg = avg / comparisonCount; - average.setText(Double.toString(avg)); - minimum.setText(Double.toString(min)); - maximum.setText(Double.toString(max)); - } - - private double compare(BirthmarkSet x, BirthmarkSet y, BirthmarkEnvironment environment){ - double similarity = 0d; - int count = 0; - - for(String type: x.getBirthmarkTypes()){ - Birthmark b1 = x.getBirthmark(type); - Birthmark b2 = y.getBirthmark(type); - if(b1 != null && b2 != null){ - BirthmarkComparator comparator = environment.getService(type).getComparator(); - double result = comparator.compare(b1, b2); - if(!Double.isNaN(result)){ - similarity += result; - count++; - } - } - } - return similarity / count; - } - - private Component getMainPane(){ - JPanel panel = new JPanel(); - panel.setLayout(new BorderLayout()); - - model = new RoundRobinComparisonResultSetTableModel(); - table = new JTable(model); - table.setDefaultRenderer(Double.class, new CompareTableCellRenderer(extraction.getEnvironment())); - table.addMouseListener(new MouseAdapter(){ - public void mouseClicked(MouseEvent e){ - if(e.getClickCount() == 2){ - int row = table.rowAtPoint(e.getPoint()); - int col = table.columnAtPoint(e.getPoint()); - if(col >= 1 && col < table.getColumnCount() && row >= 0 - && row < table.getRowCount()){ - BirthmarkSet b1 = extraction.getBirthmarkSet(ExtractionTarget.TARGET_X, col - 1); - BirthmarkSet b2 = extraction.getBirthmarkSet(ExtractionTarget.TARGET_Y, row); - - stigmata.compareDetails(b1, b2, extraction.getContext()); - } - } - } - }); - table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - table.setCellSelectionEnabled(true); - JScrollPane scroll = new JScrollPane(); - scroll.setViewportView(table); - scroll.setWheelScrollingEnabled(true); - panel.add(scroll, BorderLayout.CENTER); - JComponent south = Box.createVerticalBox(); - JPanel box1 = new JPanel(new GridLayout(1, 3)); - box1.add(classCount = new JLabel()); - box1.add(comparisonCount = new JLabel()); - box1.add(distinctionRatio = new JLabel()); - south.add(box1); - JPanel box2 = new JPanel(new GridLayout(1, 3)); - box2.setBorder(new TitledBorder(stigmata.getMessages().get("similarity.border"))); - box2.add(average = new JLabel()); - box2.add(minimum = new JLabel()); - box2.add(maximum = new JLabel()); - south.add(box2); - - classCount.setBorder(new TitledBorder(stigmata.getMessages().get("numberofclasses.border"))); - comparisonCount.setBorder(new TitledBorder(stigmata.getMessages().get("comparisoncount.border"))); - distinctionRatio.setBorder(new TitledBorder(stigmata.getMessages().get("distinctionratio.border"))); - average.setBorder(new TitledBorder(stigmata.getMessages().get("average.border"))); - minimum.setBorder(new TitledBorder(stigmata.getMessages().get("minimum.border"))); - maximum.setBorder(new TitledBorder(stigmata.getMessages().get("maximum.border"))); - - panel.add(south, BorderLayout.SOUTH); - - return panel; - } - - private void mdsButtonActionPerformed(ActionEvent e){ - Map map = new HashMap(); - for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_X); i.hasNext(); ){ - BirthmarkSet bs = i.next(); - map.put(bs.getLocation(), bs); - } - for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_Y); i.hasNext(); ){ - BirthmarkSet bs = i.next(); - map.put(bs.getLocation(), bs); - } - int index = 0; - BirthmarkSet[] set = new BirthmarkSet[map.size()]; - for(Map.Entry entry: map.entrySet()){ - set[index] = entry.getValue(); - index++; - } - - stigmata.showMDSGraph(set, extraction.getContext()); - } - - private void graphButtonActionPerformed(ActionEvent e){ - Map values = new HashMap(); - for(int i = 0; i < table.getRowCount(); i++){ - for(int j = 1; j < table.getColumnCount(); j++){ - Double d = (Double)table.getValueAt(i, j); - int similarity = (int)Math.round(d.doubleValue() * 100); - Integer dist = values.get(new Integer(similarity)); - if(dist == null){ - dist = new Integer(0); - } - dist = new Integer(dist.intValue() + 1); - values.put(new Integer(similarity), dist); - } - } - stigmata.showSimilarityDistributionGraph(values); - } - - private void initialize(){ - final Messages messages = stigmata.getMessages(); - JButton save = GUIUtility.createButton( - messages, "savecomparison", new SaveAction(stigmata, new AsciiDataWritable(){ - public void writeAsciiData(PrintWriter out, String format){ - ResultPrinterSpi service = PrinterManager.getInstance().getService(format); - if(service == null){ - service = PrinterManager.getDefaultFormatService(); - } - - service.getComparisonResultSetPrinter().printResult( - out, new RoundRobinComparisonResultSet(extraction) - ); - } - } - )); - JButton graph = GUIUtility.createButton(messages, "showgraph"); - JButton obfuscate = GUIUtility.createButton(messages, "obfuscate"); - JButton compare = GUIUtility.createButton(messages, "guessedpair"); - JButton updateColor = GUIUtility.createButton( - messages, "updatecellcolor", - new UpdateBirthmarkCellColorAction(stigmata, extraction.getEnvironment()) - ); - JMenuItem mdsMenu = GUIUtility.createJMenuItem(messages, "mdsmap"); - - PopupButton comparePopup = new PopupButton(compare); - PopupButton graphPopup = new PopupButton(graph); - - JComponent southPanel = Box.createHorizontalBox(); - - setLayout(new BorderLayout()); - add(getMainPane(), BorderLayout.CENTER); - add(southPanel, BorderLayout.SOUTH); - southPanel.add(Box.createHorizontalGlue()); - southPanel.add(save); - southPanel.add(Box.createHorizontalGlue()); - southPanel.add(updateColor); - southPanel.add(Box.createHorizontalGlue()); - southPanel.add(graphPopup); - southPanel.add(Box.createHorizontalGlue()); - southPanel.add(obfuscate); - southPanel.add(Box.createHorizontalGlue()); - southPanel.add(comparePopup); - southPanel.add(Box.createHorizontalGlue()); - - graph.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - graphButtonActionPerformed(e); - } - }); - mdsMenu.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - mdsButtonActionPerformed(e); - } - }); - - obfuscate.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - obfuscateClassNames(); - } - }); - - ActionListener compareListener = new ActionListener(){ - public void actionPerformed(ActionEvent e){ - String item = e.getActionCommand(); - if(item.equals("guessedpair")){ - compareGuessedPair(); - } - else if(item.equals("specifiedpair")){ - compareSpecifiedPair(); - } - else if(item.equals("roundrobin.filtering")){ - compareRoundRobinWithFiltering(); - } - } - }; - - compare.addActionListener(compareListener); - String[] comparisonMethods = stigmata.getMessages().getArray("comparison.methods.inroundrobinresult"); - for(int i = 1; i < comparisonMethods.length; i++){ - JMenuItem item = GUIUtility.createJMenuItem(messages, comparisonMethods[i]); - comparePopup.addMenuItem(item); - item.addActionListener(compareListener); - } - graphPopup.addMenuItem(mdsMenu); - } - - private void compareRoundRobinWithFiltering(){ - FilterSelectionPane pane = new FilterSelectionPane( - stigmata, extraction.getEnvironment().getFilterManager() - ); - int returnValue = JOptionPane.showConfirmDialog( - stigmata, pane, stigmata.getMessages().get("filterselection.dialog.title"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE - ); - if(returnValue == JOptionPane.OK_OPTION){ - String[] filterSetList = pane.getSelectedFilters(); - - ComparisonResultSet rs = new RoundRobinComparisonResultSet(extraction); - - ComparisonResultSet filterResultSet = new FilteredComparisonResultSet( - rs, extraction.getEnvironment().getFilterManager().getFilterSets(filterSetList) - ); - stigmata.showComparisonResultSet(filterResultSet); - } - } - - private void compareGuessedPair(){ - ComparisonResultSet rs = new CertainPairComparisonResultSet(extraction); - stigmata.showComparisonResultSet(rs); - } - - private void compareSpecifiedPair(){ - File file = stigmata.getOpenFile( - stigmata.getMessages().getArray("comparemapping.extension"), - stigmata.getMessages().get("comparemapping.description") - ); - if(file != null){ - Map mapping = stigmata.constructMapping(file); - - ComparisonResultSet comparison = new CertainPairComparisonResultSet(extraction, mapping); - stigmata.showComparisonResultSet(comparison); - } - } - - private void obfuscateClassNames(){ - ClassNameObfuscator obfuscator = new ClassNameObfuscator(); - - try{ - File file = stigmata.getSaveFile( - stigmata.getMessages().getArray("obfuscationmapping.extension"), - stigmata.getMessages().get("obfuscationmapping.description") - ); - if(file != null){ - BirthmarkContext context = extraction.getContext(); - BirthmarkEnvironment env = context.getEnvironment(); - ExtractionResultSet ers = env.getHistoryManager().createDefaultResultSet(context); - try{ - for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_X); i.hasNext(); ){ - BirthmarkSet bs = i.next(); - ers.addBirthmarkSet(ExtractionTarget.TARGET_X, obfuscator.obfuscateClassName(bs)); - } - for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_Y); i.hasNext(); ){ - BirthmarkSet bs = i.next(); - ers.addBirthmarkSet(ExtractionTarget.TARGET_Y, obfuscator.obfuscateClassName(bs)); - } - } catch(BirthmarkStoreException e){ - } - this.extraction = ers; - obfuscator.outputNameMappings(file); - } - }catch(IOException e){ - JOptionPane.showMessageDialog( - this, e.getMessage(), stigmata.getMessages().get("error.dialog.title"), - JOptionPane.ERROR_MESSAGE - ); - return; - } - - DefaultTableModel model = new RoundRobinComparisonResultSetTableModel(); - compare(model); - table.setModel(model); - this.model = model; - } - - private static class RoundRobinComparisonResultSetTableModel extends DefaultTableModel{ - private static final long serialVersionUID = 765435324523543242L; - - @Override - public boolean isCellEditable(int row, int col){ - return false; - } - - public Class getColumnClass(int column){ - if(column == 0){ - return String.class; - } - else{ - return Double.class; - } - } - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URL; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.border.TitledBorder; +import javax.swing.table.DefaultTableModel; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.BirthmarkStoreException; +import jp.sourceforge.stigmata.ComparisonResultSet; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.ExtractionTarget; +import jp.sourceforge.stigmata.filter.FilteredComparisonResultSet; +import jp.sourceforge.stigmata.printer.PrinterManager; +import jp.sourceforge.stigmata.result.CertainPairComparisonResultSet; +import jp.sourceforge.stigmata.result.RoundRobinComparisonResultSet; +import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.ui.swing.actions.SaveAction; +import jp.sourceforge.stigmata.ui.swing.actions.UpdateBirthmarkCellColorAction; +import jp.sourceforge.stigmata.utils.AsciiDataWritable; +import jp.sourceforge.talisman.i18n.Messages; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class RoundRobinComparisonResultPane extends JPanel{ + private static final long serialVersionUID = 2134574576543623L; + + private StigmataFrame stigmata; + private ExtractionResultSet extraction; + private JTable table; + private DefaultTableModel model; + private JLabel classCount, comparisonCount, distinctionRatio; + private JLabel average, minimum, maximum; + + public RoundRobinComparisonResultPane(StigmataFrame stigmata, ExtractionResultSet resultset){ + this.stigmata = stigmata; + this.extraction = resultset; + initialize(); + compare(model); + } + + private void compare(DefaultTableModel model){ + ExtractionTarget targetX = ExtractionTarget.TARGET_X; + ExtractionTarget targetY = ExtractionTarget.TARGET_Y; + int countX = extraction.getBirthmarkSetSize(targetX); + int countY = extraction.getBirthmarkSetSize(targetY); + int comparisonCount = countX * countY; + if(countX == 0 && countY == 0){ + targetX = ExtractionTarget.TARGET_XY; + targetY = ExtractionTarget.TARGET_XY; + countX = extraction.getBirthmarkSetSize(targetX); + countY = extraction.getBirthmarkSetSize(targetY); + comparisonCount = countX * (countY - 1) / 2; + } + else if(countX == 0 || countY == 0){ + targetX = ExtractionTarget.TARGET_BOTH; + targetY = ExtractionTarget.TARGET_BOTH; + countX = extraction.getBirthmarkSetSize(targetX); + countY = extraction.getBirthmarkSetSize(targetY); + comparisonCount = countX * (countY - 1) / 2; + } + + classCount.setText(Integer.toString(countX + countY)); + this.comparisonCount.setText(Integer.toString(comparisonCount)); + int correct = 0; + double avg = 0d; + double max = 0d; + double min = 100d; + model.addColumn(""); + for(Iterator i = extraction.birthmarkSets(targetX); i.hasNext(); ){ + BirthmarkSet x = i.next(); + model.addColumn(x.getName()); + } + int sizeX = extraction.getBirthmarkSetSize(targetX); + for(Iterator i = extraction.birthmarkSets(targetY); i.hasNext(); ){ + Object[] rows = new Object[sizeX + 1]; + BirthmarkSet setY = i.next(); + rows[0] = setY.getName(); + + int index = 0; + for(Iterator j = extraction.birthmarkSets(targetX); j.hasNext(); ){ + BirthmarkSet setX = j.next(); + double similarity = compare(setX, setY, extraction.getEnvironment()); + rows[index + 1] = new Double(similarity); + + if(Math.abs(similarity - 1) < 1E-8){ + correct += 1; + } + avg += similarity; + if(max < similarity) max = similarity; + if(min > similarity) min = similarity; + index++; + } + model.addRow(rows); + } + distinctionRatio.setText( + Double.toString((double)(comparisonCount - correct) / (double)comparisonCount) + ); + avg = avg / comparisonCount; + average.setText(Double.toString(avg)); + minimum.setText(Double.toString(min)); + maximum.setText(Double.toString(max)); + } + + private double compare(BirthmarkSet x, BirthmarkSet y, BirthmarkEnvironment environment){ + double similarity = 0d; + int count = 0; + + for(String type: x.getBirthmarkTypes()){ + Birthmark b1 = x.getBirthmark(type); + Birthmark b2 = y.getBirthmark(type); + if(b1 != null && b2 != null){ + BirthmarkComparator comparator = environment.getService(type).getComparator(); + double result = comparator.compare(b1, b2); + if(!Double.isNaN(result)){ + similarity += result; + count++; + } + } + } + return similarity / count; + } + + private Component getMainPane(){ + JPanel panel = new JPanel(); + panel.setLayout(new BorderLayout()); + + model = new RoundRobinComparisonResultSetTableModel(); + table = new JTable(model); + table.setDefaultRenderer(Double.class, new CompareTableCellRenderer(extraction.getEnvironment())); + table.addMouseListener(new MouseAdapter(){ + public void mouseClicked(MouseEvent e){ + if(e.getClickCount() == 2){ + int row = table.rowAtPoint(e.getPoint()); + int col = table.columnAtPoint(e.getPoint()); + if(col >= 1 && col < table.getColumnCount() && row >= 0 + && row < table.getRowCount()){ + BirthmarkSet b1 = extraction.getBirthmarkSet(ExtractionTarget.TARGET_X, col - 1); + BirthmarkSet b2 = extraction.getBirthmarkSet(ExtractionTarget.TARGET_Y, row); + + stigmata.compareDetails(b1, b2, extraction.getContext()); + } + } + } + }); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + table.setCellSelectionEnabled(true); + JScrollPane scroll = new JScrollPane(); + scroll.setViewportView(table); + scroll.setWheelScrollingEnabled(true); + panel.add(scroll, BorderLayout.CENTER); + JComponent south = Box.createVerticalBox(); + JPanel box1 = new JPanel(new GridLayout(1, 3)); + box1.add(classCount = new JLabel()); + box1.add(comparisonCount = new JLabel()); + box1.add(distinctionRatio = new JLabel()); + south.add(box1); + JPanel box2 = new JPanel(new GridLayout(1, 3)); + box2.setBorder(new TitledBorder(stigmata.getMessages().get("similarity.border"))); + box2.add(average = new JLabel()); + box2.add(minimum = new JLabel()); + box2.add(maximum = new JLabel()); + south.add(box2); + + classCount.setBorder(new TitledBorder(stigmata.getMessages().get("numberofclasses.border"))); + comparisonCount.setBorder(new TitledBorder(stigmata.getMessages().get("comparisoncount.border"))); + distinctionRatio.setBorder(new TitledBorder(stigmata.getMessages().get("distinctionratio.border"))); + average.setBorder(new TitledBorder(stigmata.getMessages().get("average.border"))); + minimum.setBorder(new TitledBorder(stigmata.getMessages().get("minimum.border"))); + maximum.setBorder(new TitledBorder(stigmata.getMessages().get("maximum.border"))); + + panel.add(south, BorderLayout.SOUTH); + + return panel; + } + + private void mdsButtonActionPerformed(ActionEvent e){ + Map map = new HashMap(); + for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_X); i.hasNext(); ){ + BirthmarkSet bs = i.next(); + map.put(bs.getLocation(), bs); + } + for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_Y); i.hasNext(); ){ + BirthmarkSet bs = i.next(); + map.put(bs.getLocation(), bs); + } + int index = 0; + BirthmarkSet[] set = new BirthmarkSet[map.size()]; + for(Map.Entry entry: map.entrySet()){ + set[index] = entry.getValue(); + index++; + } + + stigmata.showMDSGraph(set, extraction.getContext()); + } + + private void graphButtonActionPerformed(ActionEvent e){ + Map values = new HashMap(); + for(int i = 0; i < table.getRowCount(); i++){ + for(int j = 1; j < table.getColumnCount(); j++){ + Double d = (Double)table.getValueAt(i, j); + int similarity = (int)Math.round(d.doubleValue() * 100); + Integer dist = values.get(new Integer(similarity)); + if(dist == null){ + dist = new Integer(0); + } + dist = new Integer(dist.intValue() + 1); + values.put(new Integer(similarity), dist); + } + } + stigmata.showSimilarityDistributionGraph(values); + } + + private void initialize(){ + final Messages messages = stigmata.getMessages(); + JButton save = GUIUtility.createButton( + messages, "savecomparison", new SaveAction(stigmata, new AsciiDataWritable(){ + public void writeAsciiData(PrintWriter out, String format){ + ResultPrinterSpi service = PrinterManager.getInstance().getService(format); + if(service == null){ + service = PrinterManager.getDefaultFormatService(); + } + + service.getComparisonResultSetPrinter().printResult( + out, new RoundRobinComparisonResultSet(extraction) + ); + } + } + )); + JButton graph = GUIUtility.createButton(messages, "showgraph"); + JButton obfuscate = GUIUtility.createButton(messages, "obfuscate"); + JButton compare = GUIUtility.createButton(messages, "guessedpair"); + JButton updateColor = GUIUtility.createButton( + messages, "updatecellcolor", + new UpdateBirthmarkCellColorAction(stigmata, extraction.getEnvironment()) + ); + JMenuItem mdsMenu = GUIUtility.createJMenuItem(messages, "mdsmap"); + + PopupButton comparePopup = new PopupButton(compare); + PopupButton graphPopup = new PopupButton(graph); + + JComponent southPanel = Box.createHorizontalBox(); + + setLayout(new BorderLayout()); + add(getMainPane(), BorderLayout.CENTER); + add(southPanel, BorderLayout.SOUTH); + southPanel.add(Box.createHorizontalGlue()); + southPanel.add(save); + southPanel.add(Box.createHorizontalGlue()); + southPanel.add(updateColor); + southPanel.add(Box.createHorizontalGlue()); + southPanel.add(graphPopup); + southPanel.add(Box.createHorizontalGlue()); + southPanel.add(obfuscate); + southPanel.add(Box.createHorizontalGlue()); + southPanel.add(comparePopup); + southPanel.add(Box.createHorizontalGlue()); + + graph.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + graphButtonActionPerformed(e); + } + }); + mdsMenu.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + mdsButtonActionPerformed(e); + } + }); + + obfuscate.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + obfuscateClassNames(); + } + }); + + ActionListener compareListener = new ActionListener(){ + public void actionPerformed(ActionEvent e){ + String item = e.getActionCommand(); + if(item.equals("guessedpair")){ + compareGuessedPair(); + } + else if(item.equals("specifiedpair")){ + compareSpecifiedPair(); + } + else if(item.equals("roundrobin.filtering")){ + compareRoundRobinWithFiltering(); + } + } + }; + + compare.addActionListener(compareListener); + String[] comparisonMethods = stigmata.getMessages().getArray("comparison.methods.inroundrobinresult"); + for(int i = 1; i < comparisonMethods.length; i++){ + JMenuItem item = GUIUtility.createJMenuItem(messages, comparisonMethods[i]); + comparePopup.addMenuItem(item); + item.addActionListener(compareListener); + } + graphPopup.addMenuItem(mdsMenu); + } + + private void compareRoundRobinWithFiltering(){ + FilterSelectionPane pane = new FilterSelectionPane( + stigmata, extraction.getEnvironment().getFilterManager() + ); + int returnValue = JOptionPane.showConfirmDialog( + stigmata, pane, stigmata.getMessages().get("filterselection.dialog.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE + ); + if(returnValue == JOptionPane.OK_OPTION){ + String[] filterSetList = pane.getSelectedFilters(); + + ComparisonResultSet rs = new RoundRobinComparisonResultSet(extraction); + + ComparisonResultSet filterResultSet = new FilteredComparisonResultSet( + rs, extraction.getEnvironment().getFilterManager().getFilterSets(filterSetList) + ); + stigmata.showComparisonResultSet(filterResultSet); + } + } + + private void compareGuessedPair(){ + ComparisonResultSet rs = new CertainPairComparisonResultSet(extraction); + stigmata.showComparisonResultSet(rs); + } + + private void compareSpecifiedPair(){ + File file = stigmata.getOpenFile( + stigmata.getMessages().getArray("comparemapping.extension"), + stigmata.getMessages().get("comparemapping.description") + ); + if(file != null){ + Map mapping = stigmata.constructMapping(file); + + ComparisonResultSet comparison = new CertainPairComparisonResultSet(extraction, mapping); + stigmata.showComparisonResultSet(comparison); + } + } + + private void obfuscateClassNames(){ + ClassNameObfuscator obfuscator = new ClassNameObfuscator(); + + try{ + File file = stigmata.getSaveFile( + stigmata.getMessages().getArray("obfuscationmapping.extension"), + stigmata.getMessages().get("obfuscationmapping.description") + ); + if(file != null){ + BirthmarkContext context = extraction.getContext(); + BirthmarkEnvironment env = context.getEnvironment(); + ExtractionResultSet ers = env.getHistoryManager().createDefaultResultSet(context); + try{ + for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_X); i.hasNext(); ){ + BirthmarkSet bs = i.next(); + ers.addBirthmarkSet(ExtractionTarget.TARGET_X, obfuscator.obfuscateClassName(bs)); + } + for(Iterator i = extraction.birthmarkSets(ExtractionTarget.TARGET_Y); i.hasNext(); ){ + BirthmarkSet bs = i.next(); + ers.addBirthmarkSet(ExtractionTarget.TARGET_Y, obfuscator.obfuscateClassName(bs)); + } + } catch(BirthmarkStoreException e){ + } + this.extraction = ers; + obfuscator.outputNameMappings(file); + } + }catch(IOException e){ + JOptionPane.showMessageDialog( + this, e.getMessage(), stigmata.getMessages().get("error.dialog.title"), + JOptionPane.ERROR_MESSAGE + ); + return; + } + + DefaultTableModel model = new RoundRobinComparisonResultSetTableModel(); + compare(model); + table.setModel(model); + this.model = model; + } + + private static class RoundRobinComparisonResultSetTableModel extends DefaultTableModel{ + private static final long serialVersionUID = 765435324523543242L; + + @Override + public boolean isCellEditable(int row, int col){ + return false; + } + + public Class getColumnClass(int column){ + if(column == 0){ + return String.class; + } + else{ + return Double.class; + } + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/StigmataFrame.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/StigmataFrame.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/ui/swing/StigmataFrame.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/StigmataFrame.java index 84f3499..e86e5fe 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/StigmataFrame.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/StigmataFrame.java @@ -1,724 +1,724 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Image; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import javax.swing.ButtonGroup; -import javax.swing.JCheckBoxMenuItem; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JMenu; -import javax.swing.JMenuBar; -import javax.swing.JMenuItem; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JSeparator; -import javax.swing.JTabbedPane; -import javax.swing.JTextArea; -import javax.swing.LookAndFeel; -import javax.swing.SwingUtilities; -import javax.swing.UIManager; -import javax.swing.WindowConstants; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import javax.swing.filechooser.FileFilter; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkElementClassNotFoundException; -import jp.naist.se.stigmata.BirthmarkEngine; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkExtractionFailedException; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.ComparisonResultSet; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.Main; -import jp.naist.se.stigmata.Stigmata; -import jp.naist.se.stigmata.event.BirthmarkEngineAdapter; -import jp.naist.se.stigmata.event.BirthmarkEngineEvent; -import jp.naist.se.stigmata.event.WarningMessages; -import jp.naist.se.stigmata.result.CertainPairComparisonResultSet; -import jp.naist.se.stigmata.ui.swing.actions.AboutAction; -import jp.naist.se.stigmata.ui.swing.actions.LicenseAction; -import jp.naist.se.stigmata.ui.swing.graph.SimilarityDistributionGraphPane; -import jp.naist.se.stigmata.ui.swing.mds.MDSGraphPanel; -import jp.naist.se.stigmata.ui.swing.tab.EditableTabbedPane; -import jp.naist.se.stigmata.utils.Utility; -import jp.sourceforge.talisman.i18n.Messages; -import jp.sourceforge.talisman.i18n.ResourceNotFoundException; - -import org.apache.commons.cli.ParseException; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class StigmataFrame extends JFrame{ - private static final long serialVersionUID = 92345543665342134L; - - private Messages messages; - private JTabbedPane tabPane; - private JMenuItem closeTabMenu; - private JMenuItem saveMenu; - private JCheckBoxMenuItem expertmodeMenu; - private Stigmata stigmata; - private BirthmarkEnvironment environment; - private ControlPane control; - private FileIOManager fileio; - private Map countmap = new HashMap(); - - public StigmataFrame(){ - this(Stigmata.getInstance()); - } - - public StigmataFrame(Stigmata stigmata){ - this(stigmata, BirthmarkEnvironment.getDefaultEnvironment()); - } - - public StigmataFrame(Stigmata stigmata, BirthmarkEnvironment environment){ - this.stigmata = stigmata; - this.environment = environment; - this.fileio = new FileIOManager(this, environment); - try{ - this.messages = new Messages("resources.messages"); - } catch(ResourceNotFoundException e){ - throw new InternalError(e.getMessage()); - } - Image iconImage = GUIUtility.getImage(getMessages(), "stigmata.icon"); - if(iconImage != null){ - setIconImage(iconImage); - } - - stigmata.addBirthmarkEngineListener(new BirthmarkEngineAdapter(){ - @Override - public void operationDone(BirthmarkEngineEvent e){ - showWarnings(e.getMessage()); - } - }); - - initLayouts(); - } - - public Messages getMessages(){ - return messages; - } - - public boolean isNeedToSaveSettings(){ - return saveMenu.isEnabled(); - } - - public void setNeedToSaveSettings(boolean flag){ - saveMenu.setEnabled(flag); - } - - public Stigmata getStigmata(){ - return stigmata; - } - - public BirthmarkEnvironment getEnvironment(){ - return environment; - } - - public File getCurrentDirectory(){ - return fileio.getCurrentDirectory(); - } - - public void setCurrentDirectory(File file){ - try{ - fileio.setCurrentDirectory(file); - } catch(IllegalArgumentException e){ - JOptionPane.showMessageDialog( - this, - getMessages().get("notdirectory.dialog.message", file.getName()), - getMessages().get("notdirectory.dialog.title"), - JOptionPane.ERROR_MESSAGE - ); - } catch(Exception e){ - showExceptionMessage(e); - } - } - - public File[] openFiles(FileFilter[] filters, boolean multipleSelectable, boolean directorySelectable){ - return fileio.openFiles(filters, multipleSelectable, directorySelectable); - } - - /** - * Find file to open it. - */ - public File getOpenFile(String[] exts, String desc){ - return fileio.findFile(true, exts, desc); - } - - /** - * Find file for storing data to it. - * Extension of found file is correct as selected extension. - */ - public File getSaveFile(String[] exts, String desc){ - return fileio.findFile(false, exts, desc); - } - - public void addBirthmarkServiceListener(BirthmarkServiceListener listener){ - control.addBirthmarkServiceListener(listener); - } - - public void removeBirthmarkServiceListener(BirthmarkServiceListener listener){ - control.removeBirthmarkServiceListener(listener); - } - - public void compareDetails(BirthmarkSet target1, BirthmarkSet target2, BirthmarkContext context){ - PairComparisonPane detail = new PairComparisonPane( - this, new ComparisonPair(target1, target2, context) - ); - int compareDetail = getNextCount("compare_detail"); - - GUIUtility.addNewTab(getMessages(), "comparedetail", tabPane, detail, - new Object[] { new Integer(compareDetail), }, - new Object[] { - Utility.array2String(target1.getBirthmarkTypes()), - target1.getName(), - target2.getName(), - } - ); - tabPane.setSelectedIndex(tabPane.getTabCount() - 1); - } - - public void compareRoundRobin(String[] targetX, String[] targetY, - BirthmarkContext context){ - try{ - BirthmarkEngine engine = getStigmata().createEngine(context.getEnvironment()); - ExtractionResultSet ers = engine.extract(targetX, targetY, context); - - RoundRobinComparisonResultPane compare = new RoundRobinComparisonResultPane(this, ers); - int compareCount = getNextCount("compare"); - GUIUtility.addNewTab( - getMessages(), "compare", tabPane, compare, - new Object[] { new Integer(compareCount), }, - new Object[] { - Utility.array2String(context.getBirthmarkTypes()), - Utility.array2String(targetX), - Utility.array2String(targetY), - } - ); - tabPane.setSelectedIndex(tabPane.getTabCount() - 1); - } catch(Throwable e){ - showExceptionMessage(e); - } - } - - public void compareRoundRobinFilter(String[] targetX, String[] targetY, - BirthmarkContext context){ - try{ - BirthmarkEngine engine = getStigmata().createEngine(context.getEnvironment()); - - ExtractionResultSet ers = engine.extract(targetX, targetY, context); - ComparisonResultSet resultset = engine.compare(ers); - if(context.hasFilter()){ - resultset = engine.filter(resultset); - } - int compareCount = getNextCount("compare"); - GUIUtility.addNewTab( - getMessages(), "compare", tabPane, new PairComparisonResultSetPane(this, resultset), - new Object[] { new Integer(compareCount), }, - new Object[] { - Utility.array2String(context.getBirthmarkTypes()), - Utility.array2String(targetX), - Utility.array2String(targetY), - } - ); - tabPane.setSelectedIndex(tabPane.getTabCount() - 1); - } catch(Throwable e){ - showExceptionMessage(e); - } - } - - public void compareGuessedPair(String[] targetX, String[] targetY, BirthmarkContext context){ - try{ - BirthmarkEngine engine = getStigmata().createEngine(context.getEnvironment()); - ExtractionResultSet extraction = engine.extract(targetX, targetY, context); - int comparePair = getNextCount("compare_pair"); - - ComparisonResultSet resultset = new CertainPairComparisonResultSet(extraction); - GUIUtility.addNewTab( - getMessages(), "comparepair", tabPane, - new PairComparisonResultSetPane(this, resultset), - new Object[] { new Integer(comparePair), }, - new Object[] { - Utility.array2String(context.getBirthmarkTypes()), - Utility.array2String(targetX), - Utility.array2String(targetY), - } - ); - tabPane.setSelectedIndex(tabPane.getTabCount() - 1); - }catch(Throwable e){ - showExceptionMessage(e); - } - } - - public void compareSpecifiedPair(String[] targetX, String[] targetY, BirthmarkContext context){ - File file = getOpenFile( - getMessages().getArray("comparemapping.extension"), - getMessages().get("comparemapping.description") - ); - - if(file != null){ - Map mapping = constructMapping(file); - - try{ - BirthmarkEngine engine = getStigmata().createEngine(context.getEnvironment()); - context.setNameMappings(mapping); - ComparisonResultSet crs = engine.compare(targetX, targetY, context); - int comparePair = getNextCount("compare_pair"); - - GUIUtility.addNewTab( - getMessages(), "comparepair", tabPane, - new PairComparisonResultSetPane(this, crs), - new Object[] { new Integer(comparePair), }, - new Object[] { - Utility.array2String(context.getBirthmarkTypes()), - Utility.array2String(targetX), - Utility.array2String(targetY), - } - ); - tabPane.setSelectedIndex(tabPane.getTabCount() - 1); - }catch(Exception e){ - showExceptionMessage(e); - } - } - } - - public void showComparisonResultSet(ComparisonResultSet resultset){ - int comparePair = getNextCount("compare_pair"); - GUIUtility.addNewTab( - getMessages(), "comparisonresultset", tabPane, - new PairComparisonResultSetPane(this, resultset), - new Object[] { new Integer(comparePair), }, null - ); - tabPane.setSelectedIndex(tabPane.getTabCount() - 1); - } - - public void showMDSGraph(BirthmarkSet[] set, BirthmarkContext context){ - try{ - MDSGraphPanel panel = new MDSGraphPanel(this, set, context); - int mappingGraphCount = getNextCount("mds_graph"); - GUIUtility.addNewTab( - getMessages(), "mappinggraph", tabPane, panel, - new Object[] { new Integer(mappingGraphCount), }, null - ); - tabPane.setSelectedIndex(tabPane.getTabCount() - 1); - } catch(Exception e){ - showExceptionMessage(e); - } - } - - public void showSimilarityDistributionGraph(Map distributions){ - SimilarityDistributionGraphPane graph = new SimilarityDistributionGraphPane(this, distributions); - - int similarityGraphCount = getNextCount("similarity_graph"); - GUIUtility.addNewTab( - getMessages(), "similaritygraph", tabPane, graph, - new Object[] { new Integer(similarityGraphCount), }, null - ); - tabPane.setSelectedIndex(tabPane.getTabCount() - 1); - } - - public void compareExtractionResult(ExtractionResultSet ers){ - RoundRobinComparisonResultPane compare = new RoundRobinComparisonResultPane(this, ers); - int compareCount = getNextCount("compare"); - GUIUtility.addNewTab( - getMessages(), "compare", tabPane, compare, - new Object[] { new Integer(compareCount), }, - new Object[] { - Utility.array2String(ers.getBirthmarkTypes()), - Utility.array2String(new String[0]), - Utility.array2String(new String[0]), - } - ); - tabPane.setSelectedIndex(tabPane.getTabCount() - 1); - } - - public void showExtractionResult(ExtractionResultSet ers){ - int extractCount = getNextCount("extract"); - BirthmarkExtractionResultPane viewer = new BirthmarkExtractionResultPane(this, ers); - GUIUtility.addNewTab( - getMessages(), "extract", tabPane, viewer, - new Object[] { new Integer(extractCount), }, - new Object[] { Utility.array2String(ers.getBirthmarkTypes()), } - ); - tabPane.setSelectedIndex(tabPane.getTabCount() - 1); - - } - - public void extract(String[] targetX, String[] targetY, BirthmarkContext context){ - try{ - BirthmarkEngine engine = getStigmata().createEngine(context.getEnvironment()); - ExtractionResultSet ers = engine.extract(targetX, targetY, context); - showExtractionResult(ers); - }catch(Throwable e){ - showExceptionMessage(e); - } - } - - /** - * csv file to Map. - */ - public Map constructMapping(File file){ - Map mapping = new HashMap(); - BufferedReader in = null; - try{ - in = new BufferedReader(new FileReader(file)); - String line; - while((line = in.readLine()) != null){ - String[] tokens = line.split(", *"); - if(tokens.length >= 2){ - mapping.put(tokens[0], tokens[1]); - } - } - - }catch(Exception e){ - showExceptionMessage(e); - }finally{ - if(in != null){ - try{ - in.close(); - }catch(IOException e){ - } - } - } - return mapping; - } - - private void reloadSettings(String[] args){ - try{ - setVisible(false); - dispose(); - new Main(args); - } catch(ParseException e){ - } - } - - private void clearSettings(){ - Utility.deleteDirectory(new File(BirthmarkEnvironment.getStigmataHome())); - reloadSettings(new String[] { "--reset-config", "--mode", "gui", }); - } - - private void initLayouts(){ - setTitle(getMessages().get("stigmata.frame.title")); - initComponents(); - - GUIUtility.addNewTab(getMessages(), "control", tabPane, control = new ControlPane(this), null, null); - control.inititalize(); - tabPane.setSelectedIndex(tabPane.getTabCount() - 1); - - setNeedToSaveSettings(false); - setSize(900, 600); - } - - private void showWarnings(WarningMessages warnings){ - if(warnings.getWarningCount() > 0){ - StringBuilder sb = new StringBuilder("
"); - for(Iterator i = warnings.exceptions(); i.hasNext(); ){ - Exception e = i.next(); - sb.append("
").append(e.getClass().getName()).append("
"); - sb.append("
").append(e.getMessage()).append("
"); - sb.append("
").append(warnings.getString(e)).append("
"); - } - sb.append("
"); - - JOptionPane.showMessageDialog( - this, new String(sb), getMessages().get("warning.dialog.title"), - JOptionPane.WARNING_MESSAGE - ); - } - } - - private void initComponents(){ - setDefaultUI(); - JMenuBar menubar = new JMenuBar(); - menubar.add(createFileMenu()); - menubar.add(createHelpMenu()); - - setJMenuBar(menubar); - - tabPane = new EditableTabbedPane(this); - add(tabPane, BorderLayout.CENTER); - - tabPane.addChangeListener(new ChangeListener(){ - public void stateChanged(ChangeEvent arg0){ - String title = tabPane.getTitleAt(tabPane.getSelectedIndex()); - closeTabMenu.setEnabled(!title.equals(getMessages().get("control.tab.label"))); - } - }); - addWindowListener(new WindowAdapter(){ - @Override - public void windowClosing(WindowEvent e){ - boolean closeFlag = true; - if(isNeedToSaveSettings()){ - int returnValue = JOptionPane.showConfirmDialog( - StigmataFrame.this, - getMessages().get("needtosave.settings.message"), - getMessages().get("needtosave.settings.title"), - JOptionPane.YES_NO_CANCEL_OPTION, - JOptionPane.WARNING_MESSAGE - ); - closeFlag = returnValue != JOptionPane.CANCEL_OPTION; - if(returnValue == JOptionPane.YES_OPTION){ - control.saveSettings(new File(BirthmarkEnvironment.getStigmataHome(), "stigmata.xml")); - } - } - if(closeFlag){ - setVisible(false); - dispose(); - } - } - }); - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - } - - private JMenu createFileMenu(){ - JMenu fileMenu = GUIUtility.createJMenu(getMessages(), "fileMenu"); - JMenuItem newFrameMenu = GUIUtility.createJMenuItem(getMessages(), "newframe"); - JMenuItem saveMenu = GUIUtility.createJMenuItem(getMessages(), "savesetting"); - JMenuItem exportMenu = GUIUtility.createJMenuItem(getMessages(), "exportsetting"); - JMenuItem clearMenu = GUIUtility.createJMenuItem(getMessages(), "clearsetting"); - JMenuItem refreshMenu = GUIUtility.createJMenuItem(getMessages(), "refreshsetting"); - JMenuItem closeTabMenu = GUIUtility.createJMenuItem(getMessages(), "closetab"); - JMenuItem closeMenu = GUIUtility.createJMenuItem(getMessages(), "closeframe"); - JMenuItem exitMenu = GUIUtility.createJMenuItem(getMessages(), "exit"); - this.closeTabMenu = closeTabMenu; - this.saveMenu = saveMenu; - saveMenu.setEnabled(false); - - fileMenu.add(newFrameMenu); - fileMenu.add(new JSeparator()); - fileMenu.add(saveMenu); - fileMenu.add(exportMenu); - fileMenu.add(refreshMenu); - fileMenu.add(clearMenu); - fileMenu.add(new JSeparator()); - fileMenu.add(closeTabMenu); - fileMenu.add(closeMenu); - fileMenu.add(new JSeparator()); - fileMenu.add(exitMenu); - - newFrameMenu.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent evt){ - StigmataFrame frame = new StigmataFrame(stigmata, environment); - frame.setVisible(true); - } - }); - saveMenu.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - control.saveSettings(new File(BirthmarkEnvironment.getStigmataHome(), "stigmata.xml")); - setNeedToSaveSettings(false); - } - }); - - exportMenu.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - control.exportSettings(); - } - }); - - closeTabMenu.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent evt){ - closeTabMenuActionPerformed(); - } - }); - - clearMenu.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent evt){ - clearSettings(); - } - }); - refreshMenu.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent evt){ - reloadSettings(new String[] { "--mode", "gui", }); - } - }); - - closeMenu.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent evt){ - setVisible(false); - dispose(); - } - }); - - exitMenu.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent evt){ - System.exit(0); - } - }); - return fileMenu; - } - - private JMenu createHelpMenu(){ - JMenu menu = GUIUtility.createJMenu(getMessages(), "helpmenu"); - JMenuItem about = GUIUtility.createJMenuItem(getMessages(), "about", new AboutAction(this)); - JMenuItem license = GUIUtility.createJMenuItem(getMessages(), "license", new LicenseAction(this)); - JMenuItem help = GUIUtility.createJMenuItem(getMessages(), "helpmenu"); - expertmodeMenu = GUIUtility.createJCheckBoxMenuItem(getMessages(), "expertmenu"); - - menu.add(about); - menu.add(license); - menu.add(help); - menu.add(new JSeparator()); - menu.add(createLookAndFeelMenu()); - menu.add(new JSeparator()); - menu.add(expertmodeMenu); - - expertmodeMenu.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - expertMenuActionPerformed(((JCheckBoxMenuItem)e.getSource()).getState()); - } - }); - help.setEnabled(false); - - return menu; - } - - private JMenu createLookAndFeelMenu(){ - JMenu laf = GUIUtility.createJMenu(getMessages(), "lookandfeel"); - ButtonGroup bg = new ButtonGroup(); - UIManager.LookAndFeelInfo[] info = UIManager.getInstalledLookAndFeels(); - LookAndFeel lookfeel = UIManager.getLookAndFeel(); - - ActionListener listener = new ActionListener(){ - public void actionPerformed(ActionEvent e){ - try{ - String command = e.getActionCommand(); - UIManager.setLookAndFeel(command); - SwingUtilities.updateComponentTreeUI(StigmataFrame.this); - } catch(Exception ee){ - } - } - }; - for(int i = 0; i < info.length; i++){ - JCheckBoxMenuItem item = new JCheckBoxMenuItem(info[i].getName()); - item.setActionCommand(info[i].getClassName()); - item.addActionListener(listener); - bg.add(item); - laf.add(item); - - if(info[i].getClassName().equals(lookfeel.getClass().getName())){ - item.setState(true); - } - } - - return laf; - } - - public void setExpertMode(boolean expertmode){ - expertmodeMenu.setState(expertmode); - } - - private void expertMenuActionPerformed(boolean status){ - control.setExpertMode(status); - } - - private void showExceptionMessage(Throwable e){ - if(e instanceof BirthmarkElementClassNotFoundException){ - showClassNotFoundMessage((BirthmarkElementClassNotFoundException)e); - } - else if(e instanceof OutOfMemoryError){ - showOutOfMemoryError(); - } - else{ - JTextArea area = new JTextArea(20, 60); - StringWriter writer = new StringWriter(); - PrintWriter out = new PrintWriter(writer); - e.printStackTrace(out); - if(e instanceof BirthmarkExtractionFailedException){ - out.println("Causes:"); - for(Throwable t: ((BirthmarkExtractionFailedException)e).getCauses()){ - t.printStackTrace(out); - } - } - out.close(); - area.setText(writer.toString()); - JPanel panel = new JPanel(new BorderLayout()); - panel.add(new JLabel("

" + getMessages().get("error.message.contactus") + "

"), BorderLayout.NORTH); - panel.add(new JScrollPane(area), BorderLayout.CENTER); - - JOptionPane.showMessageDialog( - this, panel, getMessages().get("error.dialog.title"), - JOptionPane.WARNING_MESSAGE - ); - } - } - - private void showOutOfMemoryError(){ - StringBuffer sb = new StringBuffer(); - sb.append("

"); - sb.append(getMessages().get("error.message.outofmemory")); - sb.append("

"); - JOptionPane.showMessageDialog( - this, new String(sb), getMessages().get("error.dialog.title"), - JOptionPane.WARNING_MESSAGE - ); - } - - private void showClassNotFoundMessage(BirthmarkElementClassNotFoundException e){ - StringBuffer sb = new StringBuffer(); - sb.append("

"); - sb.append(getMessages().get("error.message.classpath")); - sb.append("

    "); - for(String name: e.getClassNames()){ - sb.append("
  • ").append(name).append("
  • "); - } - sb.append("
"); - JOptionPane.showMessageDialog( - this, new String(sb), getMessages().get("error.dialog.title"), - JOptionPane.WARNING_MESSAGE - ); - } - - private void closeTabMenuActionPerformed(){ - int index = tabPane.getSelectedIndex(); - if(index == 0){ - JOptionPane.showMessageDialog( - this, getMessages().get("cannotclosecontroltab.dialog.message"), - getMessages().get("cannotclosecontroltab.dialog.title"), - JOptionPane.ERROR_MESSAGE - ); - } - else{ - tabPane.removeTabAt(index); - } - } - - private int getNextCount(String label){ - Integer i = countmap.get(label); - if(i == null){ - i = new Integer(0); - } - i = i + 1; - countmap.put(label, i); - return i; - } - - private void setDefaultUI(){ - try{ - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } catch(Exception e){ - } - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Image; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import javax.swing.ButtonGroup; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JSeparator; +import javax.swing.JTabbedPane; +import javax.swing.JTextArea; +import javax.swing.LookAndFeel; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.WindowConstants; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.filechooser.FileFilter; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkElementClassNotFoundException; +import jp.sourceforge.stigmata.BirthmarkEngine; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkExtractionFailedException; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.ComparisonResultSet; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.Main; +import jp.sourceforge.stigmata.Stigmata; +import jp.sourceforge.stigmata.event.BirthmarkEngineAdapter; +import jp.sourceforge.stigmata.event.BirthmarkEngineEvent; +import jp.sourceforge.stigmata.event.WarningMessages; +import jp.sourceforge.stigmata.result.CertainPairComparisonResultSet; +import jp.sourceforge.stigmata.ui.swing.actions.AboutAction; +import jp.sourceforge.stigmata.ui.swing.actions.LicenseAction; +import jp.sourceforge.stigmata.ui.swing.graph.SimilarityDistributionGraphPane; +import jp.sourceforge.stigmata.ui.swing.mds.MDSGraphPanel; +import jp.sourceforge.stigmata.ui.swing.tab.EditableTabbedPane; +import jp.sourceforge.stigmata.utils.Utility; +import jp.sourceforge.talisman.i18n.Messages; +import jp.sourceforge.talisman.i18n.ResourceNotFoundException; + +import org.apache.commons.cli.ParseException; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class StigmataFrame extends JFrame{ + private static final long serialVersionUID = 92345543665342134L; + + private Messages messages; + private JTabbedPane tabPane; + private JMenuItem closeTabMenu; + private JMenuItem saveMenu; + private JCheckBoxMenuItem expertmodeMenu; + private Stigmata stigmata; + private BirthmarkEnvironment environment; + private ControlPane control; + private FileIOManager fileio; + private Map countmap = new HashMap(); + + public StigmataFrame(){ + this(Stigmata.getInstance()); + } + + public StigmataFrame(Stigmata stigmata){ + this(stigmata, BirthmarkEnvironment.getDefaultEnvironment()); + } + + public StigmataFrame(Stigmata stigmata, BirthmarkEnvironment environment){ + this.stigmata = stigmata; + this.environment = environment; + this.fileio = new FileIOManager(this, environment); + try{ + this.messages = new Messages("resources.messages"); + } catch(ResourceNotFoundException e){ + throw new InternalError(e.getMessage()); + } + Image iconImage = GUIUtility.getImage(getMessages(), "stigmata.icon"); + if(iconImage != null){ + setIconImage(iconImage); + } + + stigmata.addBirthmarkEngineListener(new BirthmarkEngineAdapter(){ + @Override + public void operationDone(BirthmarkEngineEvent e){ + showWarnings(e.getMessage()); + } + }); + + initLayouts(); + } + + public Messages getMessages(){ + return messages; + } + + public boolean isNeedToSaveSettings(){ + return saveMenu.isEnabled(); + } + + public void setNeedToSaveSettings(boolean flag){ + saveMenu.setEnabled(flag); + } + + public Stigmata getStigmata(){ + return stigmata; + } + + public BirthmarkEnvironment getEnvironment(){ + return environment; + } + + public File getCurrentDirectory(){ + return fileio.getCurrentDirectory(); + } + + public void setCurrentDirectory(File file){ + try{ + fileio.setCurrentDirectory(file); + } catch(IllegalArgumentException e){ + JOptionPane.showMessageDialog( + this, + getMessages().get("notdirectory.dialog.message", file.getName()), + getMessages().get("notdirectory.dialog.title"), + JOptionPane.ERROR_MESSAGE + ); + } catch(Exception e){ + showExceptionMessage(e); + } + } + + public File[] openFiles(FileFilter[] filters, boolean multipleSelectable, boolean directorySelectable){ + return fileio.openFiles(filters, multipleSelectable, directorySelectable); + } + + /** + * Find file to open it. + */ + public File getOpenFile(String[] exts, String desc){ + return fileio.findFile(true, exts, desc); + } + + /** + * Find file for storing data to it. + * Extension of found file is correct as selected extension. + */ + public File getSaveFile(String[] exts, String desc){ + return fileio.findFile(false, exts, desc); + } + + public void addBirthmarkServiceListener(BirthmarkServiceListener listener){ + control.addBirthmarkServiceListener(listener); + } + + public void removeBirthmarkServiceListener(BirthmarkServiceListener listener){ + control.removeBirthmarkServiceListener(listener); + } + + public void compareDetails(BirthmarkSet target1, BirthmarkSet target2, BirthmarkContext context){ + PairComparisonPane detail = new PairComparisonPane( + this, new ComparisonPair(target1, target2, context) + ); + int compareDetail = getNextCount("compare_detail"); + + GUIUtility.addNewTab(getMessages(), "comparedetail", tabPane, detail, + new Object[] { new Integer(compareDetail), }, + new Object[] { + Utility.array2String(target1.getBirthmarkTypes()), + target1.getName(), + target2.getName(), + } + ); + tabPane.setSelectedIndex(tabPane.getTabCount() - 1); + } + + public void compareRoundRobin(String[] targetX, String[] targetY, + BirthmarkContext context){ + try{ + BirthmarkEngine engine = getStigmata().createEngine(context.getEnvironment()); + ExtractionResultSet ers = engine.extract(targetX, targetY, context); + + RoundRobinComparisonResultPane compare = new RoundRobinComparisonResultPane(this, ers); + int compareCount = getNextCount("compare"); + GUIUtility.addNewTab( + getMessages(), "compare", tabPane, compare, + new Object[] { new Integer(compareCount), }, + new Object[] { + Utility.array2String(context.getBirthmarkTypes()), + Utility.array2String(targetX), + Utility.array2String(targetY), + } + ); + tabPane.setSelectedIndex(tabPane.getTabCount() - 1); + } catch(Throwable e){ + showExceptionMessage(e); + } + } + + public void compareRoundRobinFilter(String[] targetX, String[] targetY, + BirthmarkContext context){ + try{ + BirthmarkEngine engine = getStigmata().createEngine(context.getEnvironment()); + + ExtractionResultSet ers = engine.extract(targetX, targetY, context); + ComparisonResultSet resultset = engine.compare(ers); + if(context.hasFilter()){ + resultset = engine.filter(resultset); + } + int compareCount = getNextCount("compare"); + GUIUtility.addNewTab( + getMessages(), "compare", tabPane, new PairComparisonResultSetPane(this, resultset), + new Object[] { new Integer(compareCount), }, + new Object[] { + Utility.array2String(context.getBirthmarkTypes()), + Utility.array2String(targetX), + Utility.array2String(targetY), + } + ); + tabPane.setSelectedIndex(tabPane.getTabCount() - 1); + } catch(Throwable e){ + showExceptionMessage(e); + } + } + + public void compareGuessedPair(String[] targetX, String[] targetY, BirthmarkContext context){ + try{ + BirthmarkEngine engine = getStigmata().createEngine(context.getEnvironment()); + ExtractionResultSet extraction = engine.extract(targetX, targetY, context); + int comparePair = getNextCount("compare_pair"); + + ComparisonResultSet resultset = new CertainPairComparisonResultSet(extraction); + GUIUtility.addNewTab( + getMessages(), "comparepair", tabPane, + new PairComparisonResultSetPane(this, resultset), + new Object[] { new Integer(comparePair), }, + new Object[] { + Utility.array2String(context.getBirthmarkTypes()), + Utility.array2String(targetX), + Utility.array2String(targetY), + } + ); + tabPane.setSelectedIndex(tabPane.getTabCount() - 1); + }catch(Throwable e){ + showExceptionMessage(e); + } + } + + public void compareSpecifiedPair(String[] targetX, String[] targetY, BirthmarkContext context){ + File file = getOpenFile( + getMessages().getArray("comparemapping.extension"), + getMessages().get("comparemapping.description") + ); + + if(file != null){ + Map mapping = constructMapping(file); + + try{ + BirthmarkEngine engine = getStigmata().createEngine(context.getEnvironment()); + context.setNameMappings(mapping); + ComparisonResultSet crs = engine.compare(targetX, targetY, context); + int comparePair = getNextCount("compare_pair"); + + GUIUtility.addNewTab( + getMessages(), "comparepair", tabPane, + new PairComparisonResultSetPane(this, crs), + new Object[] { new Integer(comparePair), }, + new Object[] { + Utility.array2String(context.getBirthmarkTypes()), + Utility.array2String(targetX), + Utility.array2String(targetY), + } + ); + tabPane.setSelectedIndex(tabPane.getTabCount() - 1); + }catch(Exception e){ + showExceptionMessage(e); + } + } + } + + public void showComparisonResultSet(ComparisonResultSet resultset){ + int comparePair = getNextCount("compare_pair"); + GUIUtility.addNewTab( + getMessages(), "comparisonresultset", tabPane, + new PairComparisonResultSetPane(this, resultset), + new Object[] { new Integer(comparePair), }, null + ); + tabPane.setSelectedIndex(tabPane.getTabCount() - 1); + } + + public void showMDSGraph(BirthmarkSet[] set, BirthmarkContext context){ + try{ + MDSGraphPanel panel = new MDSGraphPanel(this, set, context); + int mappingGraphCount = getNextCount("mds_graph"); + GUIUtility.addNewTab( + getMessages(), "mappinggraph", tabPane, panel, + new Object[] { new Integer(mappingGraphCount), }, null + ); + tabPane.setSelectedIndex(tabPane.getTabCount() - 1); + } catch(Exception e){ + showExceptionMessage(e); + } + } + + public void showSimilarityDistributionGraph(Map distributions){ + SimilarityDistributionGraphPane graph = new SimilarityDistributionGraphPane(this, distributions); + + int similarityGraphCount = getNextCount("similarity_graph"); + GUIUtility.addNewTab( + getMessages(), "similaritygraph", tabPane, graph, + new Object[] { new Integer(similarityGraphCount), }, null + ); + tabPane.setSelectedIndex(tabPane.getTabCount() - 1); + } + + public void compareExtractionResult(ExtractionResultSet ers){ + RoundRobinComparisonResultPane compare = new RoundRobinComparisonResultPane(this, ers); + int compareCount = getNextCount("compare"); + GUIUtility.addNewTab( + getMessages(), "compare", tabPane, compare, + new Object[] { new Integer(compareCount), }, + new Object[] { + Utility.array2String(ers.getBirthmarkTypes()), + Utility.array2String(new String[0]), + Utility.array2String(new String[0]), + } + ); + tabPane.setSelectedIndex(tabPane.getTabCount() - 1); + } + + public void showExtractionResult(ExtractionResultSet ers){ + int extractCount = getNextCount("extract"); + BirthmarkExtractionResultPane viewer = new BirthmarkExtractionResultPane(this, ers); + GUIUtility.addNewTab( + getMessages(), "extract", tabPane, viewer, + new Object[] { new Integer(extractCount), }, + new Object[] { Utility.array2String(ers.getBirthmarkTypes()), } + ); + tabPane.setSelectedIndex(tabPane.getTabCount() - 1); + + } + + public void extract(String[] targetX, String[] targetY, BirthmarkContext context){ + try{ + BirthmarkEngine engine = getStigmata().createEngine(context.getEnvironment()); + ExtractionResultSet ers = engine.extract(targetX, targetY, context); + showExtractionResult(ers); + }catch(Throwable e){ + showExceptionMessage(e); + } + } + + /** + * csv file to Map. + */ + public Map constructMapping(File file){ + Map mapping = new HashMap(); + BufferedReader in = null; + try{ + in = new BufferedReader(new FileReader(file)); + String line; + while((line = in.readLine()) != null){ + String[] tokens = line.split(", *"); + if(tokens.length >= 2){ + mapping.put(tokens[0], tokens[1]); + } + } + + }catch(Exception e){ + showExceptionMessage(e); + }finally{ + if(in != null){ + try{ + in.close(); + }catch(IOException e){ + } + } + } + return mapping; + } + + private void reloadSettings(String[] args){ + try{ + setVisible(false); + dispose(); + new Main(args); + } catch(ParseException e){ + } + } + + private void clearSettings(){ + Utility.deleteDirectory(new File(BirthmarkEnvironment.getStigmataHome())); + reloadSettings(new String[] { "--reset-config", "--mode", "gui", }); + } + + private void initLayouts(){ + setTitle(getMessages().get("stigmata.frame.title")); + initComponents(); + + GUIUtility.addNewTab(getMessages(), "control", tabPane, control = new ControlPane(this), null, null); + control.inititalize(); + tabPane.setSelectedIndex(tabPane.getTabCount() - 1); + + setNeedToSaveSettings(false); + setSize(900, 600); + } + + private void showWarnings(WarningMessages warnings){ + if(warnings.getWarningCount() > 0){ + StringBuilder sb = new StringBuilder("
"); + for(Iterator i = warnings.exceptions(); i.hasNext(); ){ + Exception e = i.next(); + sb.append("
").append(e.getClass().getName()).append("
"); + sb.append("
").append(e.getMessage()).append("
"); + sb.append("
").append(warnings.getString(e)).append("
"); + } + sb.append("
"); + + JOptionPane.showMessageDialog( + this, new String(sb), getMessages().get("warning.dialog.title"), + JOptionPane.WARNING_MESSAGE + ); + } + } + + private void initComponents(){ + setDefaultUI(); + JMenuBar menubar = new JMenuBar(); + menubar.add(createFileMenu()); + menubar.add(createHelpMenu()); + + setJMenuBar(menubar); + + tabPane = new EditableTabbedPane(this); + add(tabPane, BorderLayout.CENTER); + + tabPane.addChangeListener(new ChangeListener(){ + public void stateChanged(ChangeEvent arg0){ + String title = tabPane.getTitleAt(tabPane.getSelectedIndex()); + closeTabMenu.setEnabled(!title.equals(getMessages().get("control.tab.label"))); + } + }); + addWindowListener(new WindowAdapter(){ + @Override + public void windowClosing(WindowEvent e){ + boolean closeFlag = true; + if(isNeedToSaveSettings()){ + int returnValue = JOptionPane.showConfirmDialog( + StigmataFrame.this, + getMessages().get("needtosave.settings.message"), + getMessages().get("needtosave.settings.title"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.WARNING_MESSAGE + ); + closeFlag = returnValue != JOptionPane.CANCEL_OPTION; + if(returnValue == JOptionPane.YES_OPTION){ + control.saveSettings(new File(BirthmarkEnvironment.getStigmataHome(), "stigmata.xml")); + } + } + if(closeFlag){ + setVisible(false); + dispose(); + } + } + }); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + } + + private JMenu createFileMenu(){ + JMenu fileMenu = GUIUtility.createJMenu(getMessages(), "fileMenu"); + JMenuItem newFrameMenu = GUIUtility.createJMenuItem(getMessages(), "newframe"); + JMenuItem saveMenu = GUIUtility.createJMenuItem(getMessages(), "savesetting"); + JMenuItem exportMenu = GUIUtility.createJMenuItem(getMessages(), "exportsetting"); + JMenuItem clearMenu = GUIUtility.createJMenuItem(getMessages(), "clearsetting"); + JMenuItem refreshMenu = GUIUtility.createJMenuItem(getMessages(), "refreshsetting"); + JMenuItem closeTabMenu = GUIUtility.createJMenuItem(getMessages(), "closetab"); + JMenuItem closeMenu = GUIUtility.createJMenuItem(getMessages(), "closeframe"); + JMenuItem exitMenu = GUIUtility.createJMenuItem(getMessages(), "exit"); + this.closeTabMenu = closeTabMenu; + this.saveMenu = saveMenu; + saveMenu.setEnabled(false); + + fileMenu.add(newFrameMenu); + fileMenu.add(new JSeparator()); + fileMenu.add(saveMenu); + fileMenu.add(exportMenu); + fileMenu.add(refreshMenu); + fileMenu.add(clearMenu); + fileMenu.add(new JSeparator()); + fileMenu.add(closeTabMenu); + fileMenu.add(closeMenu); + fileMenu.add(new JSeparator()); + fileMenu.add(exitMenu); + + newFrameMenu.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent evt){ + StigmataFrame frame = new StigmataFrame(stigmata, environment); + frame.setVisible(true); + } + }); + saveMenu.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + control.saveSettings(new File(BirthmarkEnvironment.getStigmataHome(), "stigmata.xml")); + setNeedToSaveSettings(false); + } + }); + + exportMenu.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + control.exportSettings(); + } + }); + + closeTabMenu.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent evt){ + closeTabMenuActionPerformed(); + } + }); + + clearMenu.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent evt){ + clearSettings(); + } + }); + refreshMenu.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent evt){ + reloadSettings(new String[] { "--mode", "gui", }); + } + }); + + closeMenu.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent evt){ + setVisible(false); + dispose(); + } + }); + + exitMenu.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent evt){ + System.exit(0); + } + }); + return fileMenu; + } + + private JMenu createHelpMenu(){ + JMenu menu = GUIUtility.createJMenu(getMessages(), "helpmenu"); + JMenuItem about = GUIUtility.createJMenuItem(getMessages(), "about", new AboutAction(this)); + JMenuItem license = GUIUtility.createJMenuItem(getMessages(), "license", new LicenseAction(this)); + JMenuItem help = GUIUtility.createJMenuItem(getMessages(), "helpmenu"); + expertmodeMenu = GUIUtility.createJCheckBoxMenuItem(getMessages(), "expertmenu"); + + menu.add(about); + menu.add(license); + menu.add(help); + menu.add(new JSeparator()); + menu.add(createLookAndFeelMenu()); + menu.add(new JSeparator()); + menu.add(expertmodeMenu); + + expertmodeMenu.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + expertMenuActionPerformed(((JCheckBoxMenuItem)e.getSource()).getState()); + } + }); + help.setEnabled(false); + + return menu; + } + + private JMenu createLookAndFeelMenu(){ + JMenu laf = GUIUtility.createJMenu(getMessages(), "lookandfeel"); + ButtonGroup bg = new ButtonGroup(); + UIManager.LookAndFeelInfo[] info = UIManager.getInstalledLookAndFeels(); + LookAndFeel lookfeel = UIManager.getLookAndFeel(); + + ActionListener listener = new ActionListener(){ + public void actionPerformed(ActionEvent e){ + try{ + String command = e.getActionCommand(); + UIManager.setLookAndFeel(command); + SwingUtilities.updateComponentTreeUI(StigmataFrame.this); + } catch(Exception ee){ + } + } + }; + for(int i = 0; i < info.length; i++){ + JCheckBoxMenuItem item = new JCheckBoxMenuItem(info[i].getName()); + item.setActionCommand(info[i].getClassName()); + item.addActionListener(listener); + bg.add(item); + laf.add(item); + + if(info[i].getClassName().equals(lookfeel.getClass().getName())){ + item.setState(true); + } + } + + return laf; + } + + public void setExpertMode(boolean expertmode){ + expertmodeMenu.setState(expertmode); + } + + private void expertMenuActionPerformed(boolean status){ + control.setExpertMode(status); + } + + private void showExceptionMessage(Throwable e){ + if(e instanceof BirthmarkElementClassNotFoundException){ + showClassNotFoundMessage((BirthmarkElementClassNotFoundException)e); + } + else if(e instanceof OutOfMemoryError){ + showOutOfMemoryError(); + } + else{ + JTextArea area = new JTextArea(20, 60); + StringWriter writer = new StringWriter(); + PrintWriter out = new PrintWriter(writer); + e.printStackTrace(out); + if(e instanceof BirthmarkExtractionFailedException){ + out.println("Causes:"); + for(Throwable t: ((BirthmarkExtractionFailedException)e).getCauses()){ + t.printStackTrace(out); + } + } + out.close(); + area.setText(writer.toString()); + JPanel panel = new JPanel(new BorderLayout()); + panel.add(new JLabel("

" + getMessages().get("error.message.contactus") + "

"), BorderLayout.NORTH); + panel.add(new JScrollPane(area), BorderLayout.CENTER); + + JOptionPane.showMessageDialog( + this, panel, getMessages().get("error.dialog.title"), + JOptionPane.WARNING_MESSAGE + ); + } + } + + private void showOutOfMemoryError(){ + StringBuffer sb = new StringBuffer(); + sb.append("

"); + sb.append(getMessages().get("error.message.outofmemory")); + sb.append("

"); + JOptionPane.showMessageDialog( + this, new String(sb), getMessages().get("error.dialog.title"), + JOptionPane.WARNING_MESSAGE + ); + } + + private void showClassNotFoundMessage(BirthmarkElementClassNotFoundException e){ + StringBuffer sb = new StringBuffer(); + sb.append("

"); + sb.append(getMessages().get("error.message.classpath")); + sb.append("

    "); + for(String name: e.getClassNames()){ + sb.append("
  • ").append(name).append("
  • "); + } + sb.append("
"); + JOptionPane.showMessageDialog( + this, new String(sb), getMessages().get("error.dialog.title"), + JOptionPane.WARNING_MESSAGE + ); + } + + private void closeTabMenuActionPerformed(){ + int index = tabPane.getSelectedIndex(); + if(index == 0){ + JOptionPane.showMessageDialog( + this, getMessages().get("cannotclosecontroltab.dialog.message"), + getMessages().get("cannotclosecontroltab.dialog.title"), + JOptionPane.ERROR_MESSAGE + ); + } + else{ + tabPane.removeTabAt(index); + } + } + + private int getNextCount(String label){ + Integer i = countmap.get(label); + if(i == null){ + i = new Integer(0); + } + i = i + 1; + countmap.put(label, i); + return i; + } + + private void setDefaultUI(){ + try{ + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch(Exception e){ + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/TargetSelectionPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/TargetSelectionPane.java similarity index 96% rename from src/main/java/jp/naist/se/stigmata/ui/swing/TargetSelectionPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/TargetSelectionPane.java index de7bd54..16d5b38 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/TargetSelectionPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/TargetSelectionPane.java @@ -1,422 +1,422 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.datatransfer.DataFlavor; -import java.awt.datatransfer.Transferable; -import java.awt.datatransfer.UnsupportedFlavorException; -import java.awt.dnd.DnDConstants; -import java.awt.dnd.DragGestureEvent; -import java.awt.dnd.DragGestureListener; -import java.awt.dnd.DragSource; -import java.awt.dnd.DragSourceAdapter; -import java.awt.dnd.DragSourceDropEvent; -import java.awt.dnd.DragSourceListener; -import java.awt.dnd.DropTarget; -import java.awt.dnd.DropTargetDragEvent; -import java.awt.dnd.DropTargetDropEvent; -import java.awt.dnd.DropTargetEvent; -import java.awt.event.ActionEvent; -import java.io.File; -import java.io.IOException; -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.Box; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JList; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JScrollPane; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import javax.swing.filechooser.FileFilter; - -import jp.naist.se.stigmata.ui.swing.actions.PopupShowAction; -import jp.sourceforge.talisman.i18n.Messages; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class TargetSelectionPane extends JPanel{ - private static final long serialVersionUID = 3209435745432235432L; - - private StigmataFrame stigmata; - private FileFilter[] filters; - private List extensions = new ArrayList(); - private String description; - private DefaultListModel model = new DefaultListModel(); - private List listeners = new ArrayList(); - private boolean directorySelectable = false; - private boolean multipleSelectable = true; - private JList list; - private Action addAction; - private Action removeAction; - - public TargetSelectionPane(StigmataFrame stigmata){ - this.stigmata = stigmata; - initComponents(); - list.setModel(model); - - DropTarget dropTarget = new TargetSelectionDropTarget(); - list.setDropTarget(dropTarget); - DragSource dragSource = DragSource.getDefaultDragSource(); - dragSource.createDefaultDragGestureRecognizer( - list, DnDConstants.ACTION_MOVE, - new TargetDragGestureListener(list, model) - ); - } - - public void addDataChangeListener(DataChangeListener listener){ - listeners.add(listener); - } - - public void addTargetExtension(String ext){ - if(filters != null){ - filters = null; - } - extensions.add(ext); - } - - public void addTargetExtensions(String[] exts){ - if(filters != null){ - filters = null; - } - for(String ext: exts){ - extensions.add(ext); - } - } - - public void addValue(String value){ - model.addElement(value); - fireEvent(); - } - - public void addValues(String[] values){ - for(String value: values){ - addValue(value); - } - } - - public String getDescription(){ - return description; - } - - public synchronized String[] getExtensions(){ - return extensions.toArray(new String[extensions.size()]); - } - - public FileFilter[] getFileFilters(){ - if(filters == null){ - String[] exts = getExtensions(); - filters = new FileFilter[exts.length]; - for(int i = 0; i < exts.length; i++){ - filters[i] = new ExtensionFilter( - exts[i], MessageFormat.format(getSelectDescription(), exts[i]) - ); - } - ; - } - return filters; - } - - public String getSelectDescription(){ - return description; - } - - public String[] getSelectedValues(){ - int[] indeces = list.getSelectedIndices(); - String[] strings = new String[indeces.length]; - for(int i = 0; i < strings.length; i++){ - strings[i] = (String)model.getElementAt(indeces[i]); - } - return strings; - } - - public String[] getValues(){ - String[] strings = new String[model.getSize()]; - for(int i = 0; i < strings.length; i++){ - strings[i] = (String)model.getElementAt(i); - } - return strings; - } - - public boolean isDirectorySelectable(){ - return directorySelectable; - } - - public boolean isMultipleSelectable(){ - return multipleSelectable; - } - - public void removeAllElements(){ - model.removeAllElements(); - fireEvent(); - } - - public void setDescription(String description){ - this.description = description; - } - - public void setDirectorySelectable(boolean flag){ - directorySelectable = flag; - } - - @Override - public void setEnabled(boolean flag){ - super.setEnabled(flag); - addAction.setEnabled(flag); - removeAction.setEnabled(false); - list.setEnabled(flag); - } - - public void setFileFilter(FileFilter filter){ - setFileFilters(new FileFilter[] { filter, }); - } - - public void setFileFilters(FileFilter[] filters){ - this.filters = filters; - } - - public void setMultipleSelectable(boolean flag){ - multipleSelectable = flag; - } - - public void setSelectDescription(String description){ - this.description = description; - } - - private void addButtonActionPerformed(ActionEvent evt){ - File[] files = stigmata.openFiles(getFileFilters(), true, true); - for(File file: files){ - addValue(file.getPath()); - } - } - - private void fireEvent(){ - for(int i = listeners.size() - 1; i >= 0; i--){ - DataChangeListener listener = listeners.get(i); - listener.valueChanged(model); - } - } - - private void initComponents(){ - final Messages messages = stigmata.getMessages(); - JScrollPane scroll = new JScrollPane(); - JComponent south = Box.createHorizontalBox(); - list = new JList(); - - addAction = new AbstractAction(){ - private static final long serialVersionUID = 1406018312294328837L; - - public void actionPerformed(ActionEvent e){ - addButtonActionPerformed(e); - } - }; - removeAction = new AbstractAction(){ - private static final long serialVersionUID = 7910621850068803554L; - - public void actionPerformed(ActionEvent e){ - removeButtonActionPerformed(e); - } - }; - - JButton addButton = GUIUtility.createButton(messages, "addpackage", addAction); - JButton removeButton = GUIUtility.createButton(messages, "removepackage", removeAction); - removeAction.setEnabled(false); - - final JPopupMenu popup = new JPopupMenu(); - popup.add(GUIUtility.createJMenuItem(messages, "addpackage", addAction)); - popup.add(GUIUtility.createJMenuItem(messages, "removepackage", removeAction)); - - setLayout(new BorderLayout()); - - scroll.setViewportView(list); - south.add(Box.createHorizontalGlue()); - south.add(addButton); - south.add(Box.createHorizontalGlue()); - south.add(removeButton); - south.add(Box.createHorizontalGlue()); - - list.addListSelectionListener(new ListSelectionListener(){ - public void valueChanged(ListSelectionEvent evt){ - listValueChanged(evt); - } - }); - - list.addMouseListener(new PopupShowAction(popup)); - - add(scroll, java.awt.BorderLayout.CENTER); - add(south, BorderLayout.SOUTH); - } - - private void listValueChanged(ListSelectionEvent evt){ - int[] indeces = list.getSelectedIndices(); - removeAction.setEnabled(isEnabled() && indeces != null); - } - - private void removeButtonActionPerformed(ActionEvent evt){ - int[] indeces = list.getSelectedIndices(); - if(indeces != null && indeces.length >= 1){ - for(int i = indeces.length - 1; i >= 0; i--){ - model.removeElementAt(indeces[i]); - fireEvent(); - } - } - removeAction.setEnabled(false); - } - - private class DataRemoveWhenDragSuccessfulAdapter extends DragSourceAdapter{ - private DefaultListModel model; - private int[] indeces; - - public DataRemoveWhenDragSuccessfulAdapter(DefaultListModel model, - int[] indeces){ - this.model = model; - this.indeces = indeces; - } - - @Override - public void dragDropEnd(DragSourceDropEvent dsde){ - for(int i = indeces.length - 1; i >= 0; i--){ - model.removeElementAt(indeces[i]); - } - fireEvent(); - super.dragDropEnd(dsde); - } - }; - - private class TargetDragGestureListener implements DragGestureListener{ - private JList list; - - public TargetDragGestureListener(JList list, DefaultListModel model){ - this.list = list; - } - - public void dragGestureRecognized(DragGestureEvent dge){ - int[] indeces = list.getSelectedIndices(); - if(indeces.length > 0){ - String[] strings = new String[indeces.length]; - for(int i = 0; i < strings.length; i++){ - strings[i] = (String)model.getElementAt(indeces[i]); - } - Transferable transferable = new TargetTransferable(strings); - DragSourceListener listener = new DataRemoveWhenDragSuccessfulAdapter( - model, indeces); - - dge.startDrag(DragSource.DefaultMoveDrop, transferable, - listener); - } - } - }; - - @SuppressWarnings("unchecked") - private class TargetSelectionDropTarget extends DropTarget{ - private static final long serialVersionUID = 3204457621345L; - - @Override - public void dragEnter(DropTargetDragEvent arg0){ - } - - @Override - public void dragExit(DropTargetEvent arg0){ - } - - @Override - public void dragOver(DropTargetDragEvent arg0){ - } - - @Override - public void drop(DropTargetDropEvent dtde){ - dtde.acceptDrop(DnDConstants.ACTION_REFERENCE); - Transferable trans = dtde.getTransferable(); - try{ - if(trans.isDataFlavorSupported(DataFlavor.javaFileListFlavor)){ - List list = (List)trans - .getTransferData(DataFlavor.javaFileListFlavor); - List errorList = checkAndAddDroppedFile(list); - if(errorList.size() > 0){ - showError(errorList); - } - } - } catch(UnsupportedFlavorException e){ - } catch(IOException e){ - } - } - - @Override - public void dropActionChanged(DropTargetDragEvent arg0){ - } - - private List checkAndAddDroppedFile(List list){ - List errorList = new ArrayList(); - - FileFilter[] filters = getFileFilters(); - for(int i = 0; i < list.size(); i++){ - File file = (File)list.get(i); - boolean neverAddedFlag = true; - for(FileFilter filter: filters){ - if(filter.accept(file)){ - addValue(file.getPath()); - neverAddedFlag = false; - } - } - if(neverAddedFlag){ - errorList.add(file.getName()); - } - } - return errorList; - } - - private void showError(List errorList){ - StringBuilder builder = new StringBuilder(""); - builder.append(stigmata.getMessages().get("unsupportedfiletype.dialog.message")); - builder.append("
    "); - for(int i = 0; i < errorList.size(); i++){ - builder.append("
  • ").append(errorList.get(i)).append("
  • "); - } - builder.append("
"); - JOptionPane.showMessageDialog( - TargetSelectionPane.this, new String(builder), - stigmata.getMessages().get("unsupportedfiletype.dialog.title"), - JOptionPane.ERROR_MESSAGE - ); - } - }; - - private class TargetTransferable implements Transferable{ - private String[] strings; - - public TargetTransferable(String[] strings){ - this.strings = strings; - } - - public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, - IOException{ - List list = new ArrayList(); - for(int i = 0; i < strings.length; i++){ - list.add(new File(strings[i])); - } - return list; - } - - public DataFlavor[] getTransferDataFlavors(){ - return new DataFlavor[] { DataFlavor.javaFileListFlavor, }; - } - - public boolean isDataFlavorSupported(DataFlavor flavor){ - return flavor.equals(DataFlavor.javaFileListFlavor); - } - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.awt.dnd.DnDConstants; +import java.awt.dnd.DragGestureEvent; +import java.awt.dnd.DragGestureListener; +import java.awt.dnd.DragSource; +import java.awt.dnd.DragSourceAdapter; +import java.awt.dnd.DragSourceDropEvent; +import java.awt.dnd.DragSourceListener; +import java.awt.dnd.DropTarget; +import java.awt.dnd.DropTargetDragEvent; +import java.awt.dnd.DropTargetDropEvent; +import java.awt.dnd.DropTargetEvent; +import java.awt.event.ActionEvent; +import java.io.File; +import java.io.IOException; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.Box; +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JList; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.filechooser.FileFilter; + +import jp.sourceforge.stigmata.ui.swing.actions.PopupShowAction; +import jp.sourceforge.talisman.i18n.Messages; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class TargetSelectionPane extends JPanel{ + private static final long serialVersionUID = 3209435745432235432L; + + private StigmataFrame stigmata; + private FileFilter[] filters; + private List extensions = new ArrayList(); + private String description; + private DefaultListModel model = new DefaultListModel(); + private List listeners = new ArrayList(); + private boolean directorySelectable = false; + private boolean multipleSelectable = true; + private JList list; + private Action addAction; + private Action removeAction; + + public TargetSelectionPane(StigmataFrame stigmata){ + this.stigmata = stigmata; + initComponents(); + list.setModel(model); + + DropTarget dropTarget = new TargetSelectionDropTarget(); + list.setDropTarget(dropTarget); + DragSource dragSource = DragSource.getDefaultDragSource(); + dragSource.createDefaultDragGestureRecognizer( + list, DnDConstants.ACTION_MOVE, + new TargetDragGestureListener(list, model) + ); + } + + public void addDataChangeListener(DataChangeListener listener){ + listeners.add(listener); + } + + public void addTargetExtension(String ext){ + if(filters != null){ + filters = null; + } + extensions.add(ext); + } + + public void addTargetExtensions(String[] exts){ + if(filters != null){ + filters = null; + } + for(String ext: exts){ + extensions.add(ext); + } + } + + public void addValue(String value){ + model.addElement(value); + fireEvent(); + } + + public void addValues(String[] values){ + for(String value: values){ + addValue(value); + } + } + + public String getDescription(){ + return description; + } + + public synchronized String[] getExtensions(){ + return extensions.toArray(new String[extensions.size()]); + } + + public FileFilter[] getFileFilters(){ + if(filters == null){ + String[] exts = getExtensions(); + filters = new FileFilter[exts.length]; + for(int i = 0; i < exts.length; i++){ + filters[i] = new ExtensionFilter( + exts[i], MessageFormat.format(getSelectDescription(), exts[i]) + ); + } + ; + } + return filters; + } + + public String getSelectDescription(){ + return description; + } + + public String[] getSelectedValues(){ + int[] indeces = list.getSelectedIndices(); + String[] strings = new String[indeces.length]; + for(int i = 0; i < strings.length; i++){ + strings[i] = (String)model.getElementAt(indeces[i]); + } + return strings; + } + + public String[] getValues(){ + String[] strings = new String[model.getSize()]; + for(int i = 0; i < strings.length; i++){ + strings[i] = (String)model.getElementAt(i); + } + return strings; + } + + public boolean isDirectorySelectable(){ + return directorySelectable; + } + + public boolean isMultipleSelectable(){ + return multipleSelectable; + } + + public void removeAllElements(){ + model.removeAllElements(); + fireEvent(); + } + + public void setDescription(String description){ + this.description = description; + } + + public void setDirectorySelectable(boolean flag){ + directorySelectable = flag; + } + + @Override + public void setEnabled(boolean flag){ + super.setEnabled(flag); + addAction.setEnabled(flag); + removeAction.setEnabled(false); + list.setEnabled(flag); + } + + public void setFileFilter(FileFilter filter){ + setFileFilters(new FileFilter[] { filter, }); + } + + public void setFileFilters(FileFilter[] filters){ + this.filters = filters; + } + + public void setMultipleSelectable(boolean flag){ + multipleSelectable = flag; + } + + public void setSelectDescription(String description){ + this.description = description; + } + + private void addButtonActionPerformed(ActionEvent evt){ + File[] files = stigmata.openFiles(getFileFilters(), true, true); + for(File file: files){ + addValue(file.getPath()); + } + } + + private void fireEvent(){ + for(int i = listeners.size() - 1; i >= 0; i--){ + DataChangeListener listener = listeners.get(i); + listener.valueChanged(model); + } + } + + private void initComponents(){ + final Messages messages = stigmata.getMessages(); + JScrollPane scroll = new JScrollPane(); + JComponent south = Box.createHorizontalBox(); + list = new JList(); + + addAction = new AbstractAction(){ + private static final long serialVersionUID = 1406018312294328837L; + + public void actionPerformed(ActionEvent e){ + addButtonActionPerformed(e); + } + }; + removeAction = new AbstractAction(){ + private static final long serialVersionUID = 7910621850068803554L; + + public void actionPerformed(ActionEvent e){ + removeButtonActionPerformed(e); + } + }; + + JButton addButton = GUIUtility.createButton(messages, "addpackage", addAction); + JButton removeButton = GUIUtility.createButton(messages, "removepackage", removeAction); + removeAction.setEnabled(false); + + final JPopupMenu popup = new JPopupMenu(); + popup.add(GUIUtility.createJMenuItem(messages, "addpackage", addAction)); + popup.add(GUIUtility.createJMenuItem(messages, "removepackage", removeAction)); + + setLayout(new BorderLayout()); + + scroll.setViewportView(list); + south.add(Box.createHorizontalGlue()); + south.add(addButton); + south.add(Box.createHorizontalGlue()); + south.add(removeButton); + south.add(Box.createHorizontalGlue()); + + list.addListSelectionListener(new ListSelectionListener(){ + public void valueChanged(ListSelectionEvent evt){ + listValueChanged(evt); + } + }); + + list.addMouseListener(new PopupShowAction(popup)); + + add(scroll, java.awt.BorderLayout.CENTER); + add(south, BorderLayout.SOUTH); + } + + private void listValueChanged(ListSelectionEvent evt){ + int[] indeces = list.getSelectedIndices(); + removeAction.setEnabled(isEnabled() && indeces != null); + } + + private void removeButtonActionPerformed(ActionEvent evt){ + int[] indeces = list.getSelectedIndices(); + if(indeces != null && indeces.length >= 1){ + for(int i = indeces.length - 1; i >= 0; i--){ + model.removeElementAt(indeces[i]); + fireEvent(); + } + } + removeAction.setEnabled(false); + } + + private class DataRemoveWhenDragSuccessfulAdapter extends DragSourceAdapter{ + private DefaultListModel model; + private int[] indeces; + + public DataRemoveWhenDragSuccessfulAdapter(DefaultListModel model, + int[] indeces){ + this.model = model; + this.indeces = indeces; + } + + @Override + public void dragDropEnd(DragSourceDropEvent dsde){ + for(int i = indeces.length - 1; i >= 0; i--){ + model.removeElementAt(indeces[i]); + } + fireEvent(); + super.dragDropEnd(dsde); + } + }; + + private class TargetDragGestureListener implements DragGestureListener{ + private JList list; + + public TargetDragGestureListener(JList list, DefaultListModel model){ + this.list = list; + } + + public void dragGestureRecognized(DragGestureEvent dge){ + int[] indeces = list.getSelectedIndices(); + if(indeces.length > 0){ + String[] strings = new String[indeces.length]; + for(int i = 0; i < strings.length; i++){ + strings[i] = (String)model.getElementAt(indeces[i]); + } + Transferable transferable = new TargetTransferable(strings); + DragSourceListener listener = new DataRemoveWhenDragSuccessfulAdapter( + model, indeces); + + dge.startDrag(DragSource.DefaultMoveDrop, transferable, + listener); + } + } + }; + + @SuppressWarnings("unchecked") + private class TargetSelectionDropTarget extends DropTarget{ + private static final long serialVersionUID = 3204457621345L; + + @Override + public void dragEnter(DropTargetDragEvent arg0){ + } + + @Override + public void dragExit(DropTargetEvent arg0){ + } + + @Override + public void dragOver(DropTargetDragEvent arg0){ + } + + @Override + public void drop(DropTargetDropEvent dtde){ + dtde.acceptDrop(DnDConstants.ACTION_REFERENCE); + Transferable trans = dtde.getTransferable(); + try{ + if(trans.isDataFlavorSupported(DataFlavor.javaFileListFlavor)){ + List list = (List)trans + .getTransferData(DataFlavor.javaFileListFlavor); + List errorList = checkAndAddDroppedFile(list); + if(errorList.size() > 0){ + showError(errorList); + } + } + } catch(UnsupportedFlavorException e){ + } catch(IOException e){ + } + } + + @Override + public void dropActionChanged(DropTargetDragEvent arg0){ + } + + private List checkAndAddDroppedFile(List list){ + List errorList = new ArrayList(); + + FileFilter[] filters = getFileFilters(); + for(int i = 0; i < list.size(); i++){ + File file = (File)list.get(i); + boolean neverAddedFlag = true; + for(FileFilter filter: filters){ + if(filter.accept(file)){ + addValue(file.getPath()); + neverAddedFlag = false; + } + } + if(neverAddedFlag){ + errorList.add(file.getName()); + } + } + return errorList; + } + + private void showError(List errorList){ + StringBuilder builder = new StringBuilder(""); + builder.append(stigmata.getMessages().get("unsupportedfiletype.dialog.message")); + builder.append("
    "); + for(int i = 0; i < errorList.size(); i++){ + builder.append("
  • ").append(errorList.get(i)).append("
  • "); + } + builder.append("
"); + JOptionPane.showMessageDialog( + TargetSelectionPane.this, new String(builder), + stigmata.getMessages().get("unsupportedfiletype.dialog.title"), + JOptionPane.ERROR_MESSAGE + ); + } + }; + + private class TargetTransferable implements Transferable{ + private String[] strings; + + public TargetTransferable(String[] strings){ + this.strings = strings; + } + + public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, + IOException{ + List list = new ArrayList(); + for(int i = 0; i < strings.length; i++){ + list.add(new File(strings[i])); + } + return list; + } + + public DataFlavor[] getTransferDataFlavors(){ + return new DataFlavor[] { DataFlavor.javaFileListFlavor, }; + } + + public boolean isDataFlavorSupported(DataFlavor flavor){ + return flavor.equals(DataFlavor.javaFileListFlavor); + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/UnsupportedFormatException.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/UnsupportedFormatException.java similarity index 88% rename from src/main/java/jp/naist/se/stigmata/ui/swing/UnsupportedFormatException.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/UnsupportedFormatException.java index 4aab825..4b79532 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/UnsupportedFormatException.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/UnsupportedFormatException.java @@ -1,29 +1,29 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class UnsupportedFormatException extends Exception{ - private static final long serialVersionUID = 8165384564671102575L; - - public UnsupportedFormatException(){ - } - - public UnsupportedFormatException(String message){ - super(message); - } - - public UnsupportedFormatException(Throwable cause){ - super(cause); - } - - public UnsupportedFormatException(String message, Throwable cause){ - super(message, cause); - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class UnsupportedFormatException extends Exception{ + private static final long serialVersionUID = 8165384564671102575L; + + public UnsupportedFormatException(){ + } + + public UnsupportedFormatException(String message){ + super(message); + } + + public UnsupportedFormatException(Throwable cause){ + super(cause); + } + + public UnsupportedFormatException(String message, Throwable cause){ + super(message, cause); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/WellknownClassesSettingsPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/WellknownClassesSettingsPane.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ui/swing/WellknownClassesSettingsPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/WellknownClassesSettingsPane.java index 67a5945..017517c 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/WellknownClassesSettingsPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/WellknownClassesSettingsPane.java @@ -1,328 +1,328 @@ -package jp.naist.se.stigmata.ui.swing; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.FlowLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.HashMap; -import java.util.Map; - -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.Box; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JComboBox; -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JScrollPane; -import javax.swing.JTextField; -import javax.swing.border.TitledBorder; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import jp.naist.se.stigmata.ui.swing.actions.PopupShowAction; -import jp.naist.se.stigmata.utils.WellknownClassJudgeRule; -import jp.naist.se.stigmata.utils.WellknownClassManager; -import jp.sourceforge.talisman.i18n.Messages; - -/** - * Well-known classes judge rules management pane. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class WellknownClassesSettingsPane extends JPanel{ - private static final long serialVersionUID = 329734546345634532L; - - private StigmataFrame stigmata; - private WellknownClassManager manager; - private JList list; - private DefaultListModel listmodel; - - private Map matchTypeMap = new HashMap(); - private Map partTypeMap = new HashMap(); - - public WellknownClassesSettingsPane(StigmataFrame stigmata){ - this.stigmata = stigmata; - this.manager = stigmata.getEnvironment().getWellknownClassManager(); - - initLayouts(); - initializeData(); - } - - public synchronized void setWellknownClasses(WellknownClassManager manager){ - manager.clear(); - for(int i = 0; i < listmodel.getSize(); i++){ - WellknownClassJudgeRule rule = (WellknownClassJudgeRule)listmodel.getElementAt(i); - manager.add(rule); - } - } - - public synchronized WellknownClassManager createWellknownClassManager(){ - WellknownClassManager manager = new WellknownClassManager(); - setWellknownClasses(manager); - return manager; - } - - public void reset(){ - listmodel.clear(); - initializeData(); - } - - private synchronized boolean isWellknownClass(String className){ - WellknownClassManager manager = createWellknownClassManager(); - - return manager.isWellKnownClass(className); - } - - private String findType(JComboBox combo, Map map){ - String item = (String)combo.getSelectedItem(); - for(Map.Entry entry: map.entrySet()){ - if(item.equals(entry.getValue())){ - return entry.getKey(); - } - } - return null; - } - - public void addRule(WellknownClassJudgeRule rule){ - if(rule != null){ - listmodel.addElement(rule); - stigmata.setNeedToSaveSettings(true); - } - } - - public void editRule(int index){ - WellknownClassJudgeRule rule = (WellknownClassJudgeRule)listmodel.getElementAt(index); - WellknownClassJudgeRule newrule = createOrUpdateRule(stigmata.getMessages(), rule); - if(newrule != null){ - listmodel.setElementAt(newrule, index); - stigmata.setNeedToSaveSettings(true); - } - } - - - private void initializeData(){ - for(WellknownClassJudgeRule rule : manager){ - listmodel.addElement(rule); - } - - for(WellknownClassJudgeRule.MatchType type: WellknownClassJudgeRule.MatchType.values()){ - matchTypeMap.put(type.name(), stigmata.getMessages().get("matchtype." + type.name())); - } - for(WellknownClassJudgeRule.MatchPartType type: WellknownClassJudgeRule.MatchPartType.values()){ - partTypeMap.put(type.name(), stigmata.getMessages().get("matchparttype." + type.name())); - } - } - - private void initLayouts(){ - setLayout(new BorderLayout()); - JPanel center = new JPanel(new BorderLayout()); - listmodel = new DefaultListModel(); - - list = new JList(listmodel); - JScrollPane scroll = new JScrollPane(list); - - center.add(scroll, BorderLayout.CENTER); - center.add(createSouthPane(stigmata.getMessages()), BorderLayout.SOUTH); - - add(center, BorderLayout.CENTER); - add(createCheckPane(stigmata.getMessages()), BorderLayout.SOUTH); - } - - private JComponent createCheckPane(final Messages messages){ - final JTextField text = new JTextField(); - final JButton checkButton = GUIUtility.createButton(messages, "checkwellknown"); - final JLabel label = new JLabel(GUIUtility.getIcon(messages, "wellknownclasschecker.default.icon")); - checkButton.setEnabled(false); - - ActionListener listener = new ActionListener(){ - public void actionPerformed(ActionEvent e){ - String t = text.getText().trim(); - if(t.length() > 0){ - String message = messages.get("wellknownclasschecker.wellknown.tooltip"); - if(isWellknownClass(t)){ - label.setIcon(GUIUtility.getIcon(messages, "wellknownclasschecker.wellknown.icon")); - } - else{ - label.setIcon(GUIUtility.getIcon(messages, "wellknownclasschecker.notwellknown.icon")); - message = messages.get("wellknownclasschecker.notwellknown.tooltip"); - } - label.setToolTipText(message); - String dm = String.format( - "
%s
%s
", t, message - ); - JOptionPane.showMessageDialog( - stigmata, dm, stigmata.getMessages().get("wellknownclasschecker.dialog.title"), - JOptionPane.INFORMATION_MESSAGE - ); - } - } - }; - checkButton.addActionListener(listener); - text.addActionListener(listener); - text.getDocument().addDocumentListener(new DocumentListener(){ - public void changedUpdate(DocumentEvent arg0){ - checkButton.setEnabled(text.getText().trim().length() > 0); - } - - public void insertUpdate(DocumentEvent arg0){ - checkButton.setEnabled(text.getText().trim().length() > 0); - } - - public void removeUpdate(DocumentEvent arg0){ - checkButton.setEnabled(text.getText().trim().length() > 0); - } - }); - - JComponent south = Box.createHorizontalBox(); - south.add(Box.createHorizontalGlue()); - south.add(text); - south.add(Box.createHorizontalGlue()); - south.add(checkButton); - south.add(Box.createHorizontalGlue()); - south.add(label); - south.add(Box.createHorizontalGlue()); - - south.setBorder(new TitledBorder(stigmata.getMessages().get("wellknownclasschecker.border"))); - - return south; - } - - private JComponent createSouthPane(final Messages messages){ - JComponent southPanel = Box.createHorizontalBox(); - Action addAction = new AbstractAction(){ - private static final long serialVersionUID = -8749957850400877529L; - - public void actionPerformed(ActionEvent e){ - addRule(createOrUpdateRule(messages, null)); - } - }; - final Action removeAction = new AbstractAction(){ - private static final long serialVersionUID = 8776209200186477040L; - - public void actionPerformed(ActionEvent e){ - int[] indeces = list.getSelectedIndices(); - for(int i = indeces.length - 1; i >= 0; i--){ - listmodel.removeElementAt(indeces[i]); - } - list.getSelectionModel().clearSelection(); - stigmata.setNeedToSaveSettings(true); - } - }; - final Action updateAction = new AbstractAction(){ - private static final long serialVersionUID = 852965501722574084L; - - public void actionPerformed(ActionEvent e){ - editRule(list.getSelectedIndex()); - } - }; - JButton addButton = GUIUtility.createButton(messages, "addwellknown", addAction); - JButton removeButton = GUIUtility.createButton(messages, "removewellknown", removeAction); - JButton updateButton = GUIUtility.createButton(messages, "updatewellknown", updateAction); - removeAction.setEnabled(false); - updateAction.setEnabled(false); - - southPanel.add(Box.createHorizontalGlue()); - southPanel.add(addButton); - southPanel.add(Box.createHorizontalGlue()); - southPanel.add(updateButton); - southPanel.add(Box.createHorizontalGlue()); - southPanel.add(removeButton); - southPanel.add(Box.createHorizontalGlue()); - - list.addMouseListener(new MouseAdapter(){ - @Override - public void mouseClicked(MouseEvent e){ - if(e.getClickCount() == 2){ - editRule(list.getSelectedIndex()); - } - } - }); - JPopupMenu popup = new JPopupMenu(); - popup.add(GUIUtility.createJMenuItem(messages, "addwellknown", addAction)); - popup.add(GUIUtility.createJMenuItem(messages, "updatewellknown", updateAction)); - popup.add(GUIUtility.createJMenuItem(messages, "removewellknown", removeAction)); - - list.addMouseListener(new PopupShowAction(popup)); - list.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ - public void valueChanged(ListSelectionEvent arg0){ - int[] indeces = list.getSelectedIndices(); - removeAction.setEnabled(indeces != null && indeces.length > 0); - updateAction.setEnabled(indeces != null && indeces.length == 1); - } - }); - - return southPanel; - } - - private WellknownClassJudgeRule createOrUpdateRule(Messages messages, WellknownClassJudgeRule rule){ - JTextField text = new JTextField(); - text.setOpaque(true); - GUIUtility.decorateJComponent(messages, text, "addwellknown.newrule.pattern"); - JCheckBox excludeCheck = new JCheckBox(messages.get("addwellknown.newrule.exclude.label"), false); - GUIUtility.decorateJComponent(messages, excludeCheck, "addwellknown.newrule.exclude"); - JComboBox matchTypeComboBox = new JComboBox(); - for(Map.Entry entry: matchTypeMap.entrySet()){ - matchTypeComboBox.addItem(entry.getValue()); - } - JComboBox partTypeComboBox = new JComboBox(); - for(Map.Entry entry: partTypeMap.entrySet()){ - partTypeComboBox.addItem(entry.getValue()); - } - if(rule != null){ - text.setText(rule.getPattern()); - excludeCheck.setSelected(rule.isExclude()); - matchTypeComboBox.setSelectedItem(matchTypeMap.get(rule.getMatchType().name())); - partTypeComboBox.setSelectedItem(partTypeMap.get(rule.getMatchPartType().name())); - } - - JPanel panel = new JPanel(new BorderLayout()); - panel.setOpaque(true); - JPanel centerPanel = new JPanel(new FlowLayout()); - - centerPanel.add(partTypeComboBox); - centerPanel.add(matchTypeComboBox); - - panel.add(excludeCheck, BorderLayout.NORTH); - panel.add(centerPanel, BorderLayout.CENTER); - panel.add(text, BorderLayout.SOUTH); - - int value = JOptionPane.showConfirmDialog( - stigmata, panel, stigmata.getMessages().get("addwellknown.dialog.title"), - JOptionPane.OK_CANCEL_OPTION - ); - if(value == JOptionPane.OK_OPTION){ - String matchType = findType(matchTypeComboBox, matchTypeMap); - String partType = findType(partTypeComboBox, partTypeMap); - WellknownClassJudgeRule.MatchType match = null; - WellknownClassJudgeRule.MatchPartType part = null; - String pattern = text.getText(); - boolean excludeFlag = excludeCheck.isSelected(); - - if(matchType != null && partType != null){ - match = WellknownClassJudgeRule.MatchType.valueOf(matchType); - part = WellknownClassJudgeRule.MatchPartType.valueOf(partType); - } - - if(match != null && partType != null && pattern != null && !pattern.equals("")){ - return new WellknownClassJudgeRule(pattern, match, part, excludeFlag); - } - } - return null; - } -} +package jp.sourceforge.stigmata.ui.swing; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.Box; +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.JTextField; +import javax.swing.border.TitledBorder; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import jp.sourceforge.stigmata.ui.swing.actions.PopupShowAction; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule; +import jp.sourceforge.stigmata.utils.WellknownClassManager; +import jp.sourceforge.talisman.i18n.Messages; + +/** + * Well-known classes judge rules management pane. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class WellknownClassesSettingsPane extends JPanel{ + private static final long serialVersionUID = 329734546345634532L; + + private StigmataFrame stigmata; + private WellknownClassManager manager; + private JList list; + private DefaultListModel listmodel; + + private Map matchTypeMap = new HashMap(); + private Map partTypeMap = new HashMap(); + + public WellknownClassesSettingsPane(StigmataFrame stigmata){ + this.stigmata = stigmata; + this.manager = stigmata.getEnvironment().getWellknownClassManager(); + + initLayouts(); + initializeData(); + } + + public synchronized void setWellknownClasses(WellknownClassManager manager){ + manager.clear(); + for(int i = 0; i < listmodel.getSize(); i++){ + WellknownClassJudgeRule rule = (WellknownClassJudgeRule)listmodel.getElementAt(i); + manager.add(rule); + } + } + + public synchronized WellknownClassManager createWellknownClassManager(){ + WellknownClassManager manager = new WellknownClassManager(); + setWellknownClasses(manager); + return manager; + } + + public void reset(){ + listmodel.clear(); + initializeData(); + } + + private synchronized boolean isWellknownClass(String className){ + WellknownClassManager manager = createWellknownClassManager(); + + return manager.isWellKnownClass(className); + } + + private String findType(JComboBox combo, Map map){ + String item = (String)combo.getSelectedItem(); + for(Map.Entry entry: map.entrySet()){ + if(item.equals(entry.getValue())){ + return entry.getKey(); + } + } + return null; + } + + public void addRule(WellknownClassJudgeRule rule){ + if(rule != null){ + listmodel.addElement(rule); + stigmata.setNeedToSaveSettings(true); + } + } + + public void editRule(int index){ + WellknownClassJudgeRule rule = (WellknownClassJudgeRule)listmodel.getElementAt(index); + WellknownClassJudgeRule newrule = createOrUpdateRule(stigmata.getMessages(), rule); + if(newrule != null){ + listmodel.setElementAt(newrule, index); + stigmata.setNeedToSaveSettings(true); + } + } + + + private void initializeData(){ + for(WellknownClassJudgeRule rule : manager){ + listmodel.addElement(rule); + } + + for(WellknownClassJudgeRule.MatchType type: WellknownClassJudgeRule.MatchType.values()){ + matchTypeMap.put(type.name(), stigmata.getMessages().get("matchtype." + type.name())); + } + for(WellknownClassJudgeRule.MatchPartType type: WellknownClassJudgeRule.MatchPartType.values()){ + partTypeMap.put(type.name(), stigmata.getMessages().get("matchparttype." + type.name())); + } + } + + private void initLayouts(){ + setLayout(new BorderLayout()); + JPanel center = new JPanel(new BorderLayout()); + listmodel = new DefaultListModel(); + + list = new JList(listmodel); + JScrollPane scroll = new JScrollPane(list); + + center.add(scroll, BorderLayout.CENTER); + center.add(createSouthPane(stigmata.getMessages()), BorderLayout.SOUTH); + + add(center, BorderLayout.CENTER); + add(createCheckPane(stigmata.getMessages()), BorderLayout.SOUTH); + } + + private JComponent createCheckPane(final Messages messages){ + final JTextField text = new JTextField(); + final JButton checkButton = GUIUtility.createButton(messages, "checkwellknown"); + final JLabel label = new JLabel(GUIUtility.getIcon(messages, "wellknownclasschecker.default.icon")); + checkButton.setEnabled(false); + + ActionListener listener = new ActionListener(){ + public void actionPerformed(ActionEvent e){ + String t = text.getText().trim(); + if(t.length() > 0){ + String message = messages.get("wellknownclasschecker.wellknown.tooltip"); + if(isWellknownClass(t)){ + label.setIcon(GUIUtility.getIcon(messages, "wellknownclasschecker.wellknown.icon")); + } + else{ + label.setIcon(GUIUtility.getIcon(messages, "wellknownclasschecker.notwellknown.icon")); + message = messages.get("wellknownclasschecker.notwellknown.tooltip"); + } + label.setToolTipText(message); + String dm = String.format( + "
%s
%s
", t, message + ); + JOptionPane.showMessageDialog( + stigmata, dm, stigmata.getMessages().get("wellknownclasschecker.dialog.title"), + JOptionPane.INFORMATION_MESSAGE + ); + } + } + }; + checkButton.addActionListener(listener); + text.addActionListener(listener); + text.getDocument().addDocumentListener(new DocumentListener(){ + public void changedUpdate(DocumentEvent arg0){ + checkButton.setEnabled(text.getText().trim().length() > 0); + } + + public void insertUpdate(DocumentEvent arg0){ + checkButton.setEnabled(text.getText().trim().length() > 0); + } + + public void removeUpdate(DocumentEvent arg0){ + checkButton.setEnabled(text.getText().trim().length() > 0); + } + }); + + JComponent south = Box.createHorizontalBox(); + south.add(Box.createHorizontalGlue()); + south.add(text); + south.add(Box.createHorizontalGlue()); + south.add(checkButton); + south.add(Box.createHorizontalGlue()); + south.add(label); + south.add(Box.createHorizontalGlue()); + + south.setBorder(new TitledBorder(stigmata.getMessages().get("wellknownclasschecker.border"))); + + return south; + } + + private JComponent createSouthPane(final Messages messages){ + JComponent southPanel = Box.createHorizontalBox(); + Action addAction = new AbstractAction(){ + private static final long serialVersionUID = -8749957850400877529L; + + public void actionPerformed(ActionEvent e){ + addRule(createOrUpdateRule(messages, null)); + } + }; + final Action removeAction = new AbstractAction(){ + private static final long serialVersionUID = 8776209200186477040L; + + public void actionPerformed(ActionEvent e){ + int[] indeces = list.getSelectedIndices(); + for(int i = indeces.length - 1; i >= 0; i--){ + listmodel.removeElementAt(indeces[i]); + } + list.getSelectionModel().clearSelection(); + stigmata.setNeedToSaveSettings(true); + } + }; + final Action updateAction = new AbstractAction(){ + private static final long serialVersionUID = 852965501722574084L; + + public void actionPerformed(ActionEvent e){ + editRule(list.getSelectedIndex()); + } + }; + JButton addButton = GUIUtility.createButton(messages, "addwellknown", addAction); + JButton removeButton = GUIUtility.createButton(messages, "removewellknown", removeAction); + JButton updateButton = GUIUtility.createButton(messages, "updatewellknown", updateAction); + removeAction.setEnabled(false); + updateAction.setEnabled(false); + + southPanel.add(Box.createHorizontalGlue()); + southPanel.add(addButton); + southPanel.add(Box.createHorizontalGlue()); + southPanel.add(updateButton); + southPanel.add(Box.createHorizontalGlue()); + southPanel.add(removeButton); + southPanel.add(Box.createHorizontalGlue()); + + list.addMouseListener(new MouseAdapter(){ + @Override + public void mouseClicked(MouseEvent e){ + if(e.getClickCount() == 2){ + editRule(list.getSelectedIndex()); + } + } + }); + JPopupMenu popup = new JPopupMenu(); + popup.add(GUIUtility.createJMenuItem(messages, "addwellknown", addAction)); + popup.add(GUIUtility.createJMenuItem(messages, "updatewellknown", updateAction)); + popup.add(GUIUtility.createJMenuItem(messages, "removewellknown", removeAction)); + + list.addMouseListener(new PopupShowAction(popup)); + list.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ + public void valueChanged(ListSelectionEvent arg0){ + int[] indeces = list.getSelectedIndices(); + removeAction.setEnabled(indeces != null && indeces.length > 0); + updateAction.setEnabled(indeces != null && indeces.length == 1); + } + }); + + return southPanel; + } + + private WellknownClassJudgeRule createOrUpdateRule(Messages messages, WellknownClassJudgeRule rule){ + JTextField text = new JTextField(); + text.setOpaque(true); + GUIUtility.decorateJComponent(messages, text, "addwellknown.newrule.pattern"); + JCheckBox excludeCheck = new JCheckBox(messages.get("addwellknown.newrule.exclude.label"), false); + GUIUtility.decorateJComponent(messages, excludeCheck, "addwellknown.newrule.exclude"); + JComboBox matchTypeComboBox = new JComboBox(); + for(Map.Entry entry: matchTypeMap.entrySet()){ + matchTypeComboBox.addItem(entry.getValue()); + } + JComboBox partTypeComboBox = new JComboBox(); + for(Map.Entry entry: partTypeMap.entrySet()){ + partTypeComboBox.addItem(entry.getValue()); + } + if(rule != null){ + text.setText(rule.getPattern()); + excludeCheck.setSelected(rule.isExclude()); + matchTypeComboBox.setSelectedItem(matchTypeMap.get(rule.getMatchType().name())); + partTypeComboBox.setSelectedItem(partTypeMap.get(rule.getMatchPartType().name())); + } + + JPanel panel = new JPanel(new BorderLayout()); + panel.setOpaque(true); + JPanel centerPanel = new JPanel(new FlowLayout()); + + centerPanel.add(partTypeComboBox); + centerPanel.add(matchTypeComboBox); + + panel.add(excludeCheck, BorderLayout.NORTH); + panel.add(centerPanel, BorderLayout.CENTER); + panel.add(text, BorderLayout.SOUTH); + + int value = JOptionPane.showConfirmDialog( + stigmata, panel, stigmata.getMessages().get("addwellknown.dialog.title"), + JOptionPane.OK_CANCEL_OPTION + ); + if(value == JOptionPane.OK_OPTION){ + String matchType = findType(matchTypeComboBox, matchTypeMap); + String partType = findType(partTypeComboBox, partTypeMap); + WellknownClassJudgeRule.MatchType match = null; + WellknownClassJudgeRule.MatchPartType part = null; + String pattern = text.getText(); + boolean excludeFlag = excludeCheck.isSelected(); + + if(matchType != null && partType != null){ + match = WellknownClassJudgeRule.MatchType.valueOf(matchType); + part = WellknownClassJudgeRule.MatchPartType.valueOf(partType); + } + + if(match != null && partType != null && pattern != null && !pattern.equals("")){ + return new WellknownClassJudgeRule(pattern, match, part, excludeFlag); + } + } + return null; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/AboutAction.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/AboutAction.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/ui/swing/actions/AboutAction.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/actions/AboutAction.java index 7c2ce67..82e0e36 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/AboutAction.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/AboutAction.java @@ -1,54 +1,54 @@ -package jp.naist.se.stigmata.ui.swing.actions; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; - -import javax.swing.JLabel; -import javax.swing.JPanel; - -import jp.naist.se.stigmata.ui.swing.GUIUtility; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class AboutAction extends ShowTextAction{ - private static final long serialVersionUID = -7060581883871662749L; - - public AboutAction(StigmataFrame stigmata){ - super(stigmata); - } - - @Override - public boolean isHtmlDocument(){ - return true; - } - - @Override - public String getTitle(){ - return getMessages().get("about.dialog.title"); - } - - @Override - public String getMessage(){ - String aboutMessage = loadStringFromFile(GUIUtility.getResource(getMessages(), "about.message.file")); - - Package p = getClass().getPackage(); - aboutMessage = aboutMessage.replace("${implementation.version}", p.getImplementationVersion()); - aboutMessage = aboutMessage.replace("${implementation.vendor}", p.getImplementationVendor()); - aboutMessage = aboutMessage.replace("${implementation.title}", p.getImplementationTitle()); - - return aboutMessage; - } - - @Override - protected void updatePanel(JPanel panel){ - JLabel logo = new JLabel(GUIUtility.getIcon(getMessages(), "stigmata.logo")); - panel.add(logo, BorderLayout.NORTH); - } -} +package jp.sourceforge.stigmata.ui.swing.actions; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; + +import javax.swing.JLabel; +import javax.swing.JPanel; + +import jp.sourceforge.stigmata.ui.swing.GUIUtility; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class AboutAction extends ShowTextAction{ + private static final long serialVersionUID = -7060581883871662749L; + + public AboutAction(StigmataFrame stigmata){ + super(stigmata); + } + + @Override + public boolean isHtmlDocument(){ + return true; + } + + @Override + public String getTitle(){ + return getMessages().get("about.dialog.title"); + } + + @Override + public String getMessage(){ + String aboutMessage = loadStringFromFile(GUIUtility.getResource(getMessages(), "about.message.file")); + + Package p = getClass().getPackage(); + aboutMessage = aboutMessage.replace("${implementation.version}", p.getImplementationVersion()); + aboutMessage = aboutMessage.replace("${implementation.vendor}", p.getImplementationVendor()); + aboutMessage = aboutMessage.replace("${implementation.title}", p.getImplementationTitle()); + + return aboutMessage; + } + + @Override + protected void updatePanel(JPanel panel){ + JLabel logo = new JLabel(GUIUtility.getIcon(getMessages(), "stigmata.logo")); + panel.add(logo, BorderLayout.NORTH); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/ChangeColorAction.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/ChangeColorAction.java similarity index 91% rename from src/main/java/jp/naist/se/stigmata/ui/swing/actions/ChangeColorAction.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/actions/ChangeColorAction.java index c18d79c..787b8cc 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/ChangeColorAction.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/ChangeColorAction.java @@ -1,79 +1,79 @@ -package jp.naist.se.stigmata.ui.swing.actions; - -/* - * $Id$ - */ - -import java.awt.Color; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.AbstractAction; -import javax.swing.JColorChooser; -import javax.swing.JDialog; - -import jp.naist.se.stigmata.ui.swing.GUIUtility; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ChangeColorAction extends AbstractAction{ - private static final long serialVersionUID = -7617597154707466764L; - - private StigmataFrame frame; - private Color currentColor = Color.RED; - private JColorChooser chooser; - private boolean colorSelected = false; - private ActionListener listener; - - public ChangeColorAction(String label, StigmataFrame frame, - Color initialColor, ActionListener listener){ - super(frame.getMessages().get(label + ".label"), GUIUtility.getIcon(frame.getMessages(), label + ".icon")); - this.frame = frame; - this.listener = listener; - this.currentColor = initialColor; - - chooser = new JColorChooser(); - chooser.setColor(initialColor); - } - - public ChangeColorAction(StigmataFrame frame, Color color, ActionListener listener){ - this("changecolor", frame, color, listener); - } - - public ChangeColorAction(StigmataFrame frame, ActionListener listener){ - this(frame, Color.RED, listener); - } - - public boolean isColorSelected(){ - return colorSelected; - } - - public Color getColor(){ - return currentColor; - } - - public void actionPerformed(ActionEvent e){ - chooser.setColor(currentColor); - JDialog dialog = JColorChooser.createDialog( - frame, frame.getMessages().get("changecolor.title"), - true, chooser, - new ActionListener(){ // ok - public void actionPerformed(ActionEvent e){ - currentColor = chooser.getColor(); - colorSelected = true; - listener.actionPerformed(new ActionEvent(ChangeColorAction.this, e.getID(), e.getActionCommand(), e.getWhen(), e.getModifiers())); - } - }, - new ActionListener(){ // cancel - public void actionPerformed(ActionEvent e){ - colorSelected = false; - } - } - ); - dialog.setVisible(true); - } -} +package jp.sourceforge.stigmata.ui.swing.actions; + +/* + * $Id$ + */ + +import java.awt.Color; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.AbstractAction; +import javax.swing.JColorChooser; +import javax.swing.JDialog; + +import jp.sourceforge.stigmata.ui.swing.GUIUtility; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ChangeColorAction extends AbstractAction{ + private static final long serialVersionUID = -7617597154707466764L; + + private StigmataFrame frame; + private Color currentColor = Color.RED; + private JColorChooser chooser; + private boolean colorSelected = false; + private ActionListener listener; + + public ChangeColorAction(String label, StigmataFrame frame, + Color initialColor, ActionListener listener){ + super(frame.getMessages().get(label + ".label"), GUIUtility.getIcon(frame.getMessages(), label + ".icon")); + this.frame = frame; + this.listener = listener; + this.currentColor = initialColor; + + chooser = new JColorChooser(); + chooser.setColor(initialColor); + } + + public ChangeColorAction(StigmataFrame frame, Color color, ActionListener listener){ + this("changecolor", frame, color, listener); + } + + public ChangeColorAction(StigmataFrame frame, ActionListener listener){ + this(frame, Color.RED, listener); + } + + public boolean isColorSelected(){ + return colorSelected; + } + + public Color getColor(){ + return currentColor; + } + + public void actionPerformed(ActionEvent e){ + chooser.setColor(currentColor); + JDialog dialog = JColorChooser.createDialog( + frame, frame.getMessages().get("changecolor.title"), + true, chooser, + new ActionListener(){ // ok + public void actionPerformed(ActionEvent e){ + currentColor = chooser.getColor(); + colorSelected = true; + listener.actionPerformed(new ActionEvent(ChangeColorAction.this, e.getID(), e.getActionCommand(), e.getWhen(), e.getModifiers())); + } + }, + new ActionListener(){ // cancel + public void actionPerformed(ActionEvent e){ + colorSelected = false; + } + } + ); + dialog.setVisible(true); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/LicenseAction.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/LicenseAction.java similarity index 74% rename from src/main/java/jp/naist/se/stigmata/ui/swing/actions/LicenseAction.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/actions/LicenseAction.java index e63455e..bfdbb1b 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/LicenseAction.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/LicenseAction.java @@ -1,28 +1,28 @@ -package jp.naist.se.stigmata.ui.swing.actions; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.ui.swing.GUIUtility; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class LicenseAction extends ShowTextAction{ - private static final long serialVersionUID = 7727665273988881423L; - - public LicenseAction(StigmataFrame parent){ - super(parent); - } - - public String getTitle(){ - return getMessages().get("license.dialog.title"); - } - - public String getMessage(){ - return loadStringFromFile(GUIUtility.getResource(getMessages(), "license.file")); - } -} +package jp.sourceforge.stigmata.ui.swing.actions; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.ui.swing.GUIUtility; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class LicenseAction extends ShowTextAction{ + private static final long serialVersionUID = 7727665273988881423L; + + public LicenseAction(StigmataFrame parent){ + super(parent); + } + + public String getTitle(){ + return getMessages().get("license.dialog.title"); + } + + public String getMessage(){ + return loadStringFromFile(GUIUtility.getResource(getMessages(), "license.file")); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/LinkFollower.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/LinkFollower.java similarity index 91% rename from src/main/java/jp/naist/se/stigmata/ui/swing/actions/LinkFollower.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/actions/LinkFollower.java index 8ab27d9..3c14063 100755 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/LinkFollower.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/LinkFollower.java @@ -1,39 +1,39 @@ -package jp.naist.se.stigmata.ui.swing.actions; - -/* - * $Id$ - */ - -import java.lang.reflect.Method; -import java.net.URL; - -import javax.swing.event.HyperlinkEvent; -import javax.swing.event.HyperlinkListener; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -class LinkFollower implements HyperlinkListener{ - public void hyperlinkUpdate(HyperlinkEvent e){ - if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED){ - URL url = null; - try{ - url = e.getURL(); - browse(url); - } catch(RuntimeException ee){ - throw ee; - } catch(Exception ee){ - ee.printStackTrace(); - } - } - } - - private void browse(URL url) throws Exception{ - Class c = Class.forName("edu.stanford.ejalbert.BrowserLauncher"); - Object o = c.newInstance(); - Method m = c.getMethod("openURLinBrowser", String.class); - m.invoke(o, url.toString()); - } +package jp.sourceforge.stigmata.ui.swing.actions; + +/* + * $Id$ + */ + +import java.lang.reflect.Method; +import java.net.URL; + +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +class LinkFollower implements HyperlinkListener{ + public void hyperlinkUpdate(HyperlinkEvent e){ + if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED){ + URL url = null; + try{ + url = e.getURL(); + browse(url); + } catch(RuntimeException ee){ + throw ee; + } catch(Exception ee){ + ee.printStackTrace(); + } + } + } + + private void browse(URL url) throws Exception{ + Class c = Class.forName("edu.stanford.ejalbert.BrowserLauncher"); + Object o = c.newInstance(); + Method m = c.getMethod("openURLinBrowser", String.class); + m.invoke(o, url.toString()); + } } \ No newline at end of file diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/PopupShowAction.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/PopupShowAction.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/ui/swing/actions/PopupShowAction.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/actions/PopupShowAction.java index de90efd..47e1c58 100755 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/PopupShowAction.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/PopupShowAction.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.ui.swing.actions; +package jp.sourceforge.stigmata.ui.swing.actions; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/SaveAction.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/SaveAction.java similarity index 89% rename from src/main/java/jp/naist/se/stigmata/ui/swing/actions/SaveAction.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/actions/SaveAction.java index 042e274..a6ee9f7 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/SaveAction.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/SaveAction.java @@ -1,101 +1,101 @@ -package jp.naist.se.stigmata.ui.swing.actions; - -/* - * $Id$ - */ - -import java.awt.event.ActionEvent; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.io.OutputStream; -import java.io.PrintWriter; - -import javax.swing.AbstractAction; -import javax.swing.JOptionPane; - -import jp.naist.se.stigmata.ui.swing.StigmataFrame; -import jp.naist.se.stigmata.ui.swing.UnsupportedFormatException; -import jp.naist.se.stigmata.utils.AsciiDataWritable; -import jp.naist.se.stigmata.utils.BinaryDataWritable; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class SaveAction extends AbstractAction{ - private static final long serialVersionUID = 1427912047636729211L; - - private AsciiDataWritable asciiWritable; - private BinaryDataWritable binaryWritable; - private StigmataFrame stigmata; - private String[] extensions; - private String description; - - public SaveAction(StigmataFrame stigmata, AsciiDataWritable writable){ - this.stigmata = stigmata; - this.asciiWritable = writable; - } - - public SaveAction(StigmataFrame stigmata, BinaryDataWritable writable){ - this.stigmata = stigmata; - this.binaryWritable = writable; - } - - public void setExtensions(String[] extensions){ - this.extensions = extensions; - } - - public void setDescrpition(String description){ - this.description = description; - } - - public void actionPerformed(ActionEvent e){ - if(extensions == null || description == null){ - extensions = stigmata.getMessages().getArray("store.extensions"); - description = stigmata.getMessages().get("store.description"); - } - File file = stigmata.getSaveFile(extensions, description); - if(file != null){ - String name = file.getName(); - String format = name.substring(name.lastIndexOf('.') + 1, name.length()); - - OutputStream out = null; - PrintWriter writer = null; - try{ - if(asciiWritable != null){ - writer = new PrintWriter(new FileWriter(file)); - asciiWritable.writeAsciiData(writer, format); - } - else{ - out = new BufferedOutputStream(new FileOutputStream(file)); - binaryWritable.writeBinaryData(out, format); - } - }catch(IOException ee){ - JOptionPane.showMessageDialog( - stigmata, ee.getMessage(), stigmata.getMessages().get("error.dialog.title"), - JOptionPane.ERROR_MESSAGE - ); - }catch(UnsupportedFormatException ee){ - JOptionPane.showMessageDialog( - stigmata, ee.getMessage(), stigmata.getMessages().get("error.dialog.title"), - JOptionPane.ERROR_MESSAGE - ); - }finally{ - if(out != null){ - try{ - out.close(); - } catch(IOException ee){ - throw new InternalError(ee.getMessage()); - } - } - if(writer != null){ - writer.close(); - } - } - } - } -} +package jp.sourceforge.stigmata.ui.swing.actions; + +/* + * $Id$ + */ + +import java.awt.event.ActionEvent; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintWriter; + +import javax.swing.AbstractAction; +import javax.swing.JOptionPane; + +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; +import jp.sourceforge.stigmata.ui.swing.UnsupportedFormatException; +import jp.sourceforge.stigmata.utils.AsciiDataWritable; +import jp.sourceforge.stigmata.utils.BinaryDataWritable; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class SaveAction extends AbstractAction{ + private static final long serialVersionUID = 1427912047636729211L; + + private AsciiDataWritable asciiWritable; + private BinaryDataWritable binaryWritable; + private StigmataFrame stigmata; + private String[] extensions; + private String description; + + public SaveAction(StigmataFrame stigmata, AsciiDataWritable writable){ + this.stigmata = stigmata; + this.asciiWritable = writable; + } + + public SaveAction(StigmataFrame stigmata, BinaryDataWritable writable){ + this.stigmata = stigmata; + this.binaryWritable = writable; + } + + public void setExtensions(String[] extensions){ + this.extensions = extensions; + } + + public void setDescrpition(String description){ + this.description = description; + } + + public void actionPerformed(ActionEvent e){ + if(extensions == null || description == null){ + extensions = stigmata.getMessages().getArray("store.extensions"); + description = stigmata.getMessages().get("store.description"); + } + File file = stigmata.getSaveFile(extensions, description); + if(file != null){ + String name = file.getName(); + String format = name.substring(name.lastIndexOf('.') + 1, name.length()); + + OutputStream out = null; + PrintWriter writer = null; + try{ + if(asciiWritable != null){ + writer = new PrintWriter(new FileWriter(file)); + asciiWritable.writeAsciiData(writer, format); + } + else{ + out = new BufferedOutputStream(new FileOutputStream(file)); + binaryWritable.writeBinaryData(out, format); + } + }catch(IOException ee){ + JOptionPane.showMessageDialog( + stigmata, ee.getMessage(), stigmata.getMessages().get("error.dialog.title"), + JOptionPane.ERROR_MESSAGE + ); + }catch(UnsupportedFormatException ee){ + JOptionPane.showMessageDialog( + stigmata, ee.getMessage(), stigmata.getMessages().get("error.dialog.title"), + JOptionPane.ERROR_MESSAGE + ); + }finally{ + if(out != null){ + try{ + out.close(); + } catch(IOException ee){ + throw new InternalError(ee.getMessage()); + } + } + if(writer != null){ + writer.close(); + } + } + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/ShowTextAction.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/ShowTextAction.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/ui/swing/actions/ShowTextAction.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/actions/ShowTextAction.java index 24084d4..d390ba5 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/ShowTextAction.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/ShowTextAction.java @@ -1,99 +1,99 @@ -package jp.naist.se.stigmata.ui.swing.actions; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.event.ActionEvent; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.net.URL; - -import javax.swing.AbstractAction; -import javax.swing.JEditorPane; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JScrollPane; - -import jp.naist.se.stigmata.ui.swing.StigmataFrame; -import jp.sourceforge.talisman.i18n.Messages; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -abstract class ShowTextAction extends AbstractAction{ - private StigmataFrame parent; - - public ShowTextAction(StigmataFrame parent){ - this.parent = parent; - } - - public abstract String getMessage(); - - protected void updatePanel(JPanel panel){ - } - - public abstract String getTitle(); - - public boolean isHtmlDocument(){ - return false; - } - - public Messages getMessages(){ - return parent.getMessages(); - } - - public void actionPerformed(ActionEvent e){ - String message = getMessage(); - JPanel panel = new JPanel(new BorderLayout()); - JScrollPane scroll = new JScrollPane(); - String mimeType = "text/plain"; - if(isHtmlDocument()){ - mimeType = "text/html"; - } - JEditorPane text = new JEditorPane(mimeType, message); - text.addHyperlinkListener(new LinkFollower()); - - text.setEditable(false); - text.setCaretPosition(0); - text.setBackground(panel.getBackground()); - scroll.setViewportView(text); - - panel.add(scroll, BorderLayout.CENTER); - panel.setPreferredSize(new Dimension(500, 300)); - - updatePanel(panel); - - JOptionPane.showMessageDialog( - parent, panel, getTitle(), - JOptionPane.INFORMATION_MESSAGE - ); - } - - protected String loadStringFromFile(URL url){ - try{ - String line; - BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); - StringWriter writer = new StringWriter(); - PrintWriter out = new PrintWriter(writer); - while((line = in.readLine()) != null){ - out.print(line); - out.println(); - } - out.close(); - in.close(); - - return writer.toString(); - }catch(IOException e){ - e.printStackTrace(); - } - return null; - } -} +package jp.sourceforge.stigmata.ui.swing.actions; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.net.URL; + +import javax.swing.AbstractAction; +import javax.swing.JEditorPane; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; + +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; +import jp.sourceforge.talisman.i18n.Messages; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +abstract class ShowTextAction extends AbstractAction{ + private StigmataFrame parent; + + public ShowTextAction(StigmataFrame parent){ + this.parent = parent; + } + + public abstract String getMessage(); + + protected void updatePanel(JPanel panel){ + } + + public abstract String getTitle(); + + public boolean isHtmlDocument(){ + return false; + } + + public Messages getMessages(){ + return parent.getMessages(); + } + + public void actionPerformed(ActionEvent e){ + String message = getMessage(); + JPanel panel = new JPanel(new BorderLayout()); + JScrollPane scroll = new JScrollPane(); + String mimeType = "text/plain"; + if(isHtmlDocument()){ + mimeType = "text/html"; + } + JEditorPane text = new JEditorPane(mimeType, message); + text.addHyperlinkListener(new LinkFollower()); + + text.setEditable(false); + text.setCaretPosition(0); + text.setBackground(panel.getBackground()); + scroll.setViewportView(text); + + panel.add(scroll, BorderLayout.CENTER); + panel.setPreferredSize(new Dimension(500, 300)); + + updatePanel(panel); + + JOptionPane.showMessageDialog( + parent, panel, getTitle(), + JOptionPane.INFORMATION_MESSAGE + ); + } + + protected String loadStringFromFile(URL url){ + try{ + String line; + BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); + StringWriter writer = new StringWriter(); + PrintWriter out = new PrintWriter(writer); + while((line = in.readLine()) != null){ + out.print(line); + out.println(); + } + out.close(); + in.close(); + + return writer.toString(); + }catch(IOException e){ + e.printStackTrace(); + } + return null; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/UpdateBirthmarkCellColorAction.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/UpdateBirthmarkCellColorAction.java similarity index 91% rename from src/main/java/jp/naist/se/stigmata/ui/swing/actions/UpdateBirthmarkCellColorAction.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/actions/UpdateBirthmarkCellColorAction.java index 846b674..3690d91 100755 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/actions/UpdateBirthmarkCellColorAction.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/actions/UpdateBirthmarkCellColorAction.java @@ -1,133 +1,133 @@ -package jp.naist.se.stigmata.ui.swing.actions; - -import java.awt.Color; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.AbstractAction; -import javax.swing.Box; -import javax.swing.JButton; -import javax.swing.JColorChooser; -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; - -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.ui.swing.CompareTableCellRenderer; -import jp.naist.se.stigmata.ui.swing.GUIUtility; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; - -public class UpdateBirthmarkCellColorAction extends AbstractAction{ - private static final long serialVersionUID = 2390797591047570440L; - - private StigmataFrame parent; - private BirthmarkEnvironment environment; - private JColorChooser chooser; - - public UpdateBirthmarkCellColorAction(StigmataFrame parent, BirthmarkEnvironment environment){ - this.parent = parent; - this.environment = environment; - } - - public UpdateBirthmarkCellColorAction(StigmataFrame parent){ - this(parent, BirthmarkEnvironment.getDefaultEnvironment()); - } - - public void actionPerformed(ActionEvent e){ - JComponent c = createPanel(); - JOptionPane.showMessageDialog( - parent, c, parent.getMessages().get("updatecellcolor.dialog.title"), - JOptionPane.INFORMATION_MESSAGE - ); - } - - private JComponent createPanel(){ - Box panel = Box.createVerticalBox(); - for(int i = 0; i <= 5; i++){ - Color fore = CompareTableCellRenderer.getForegroundColor(i, environment); - Color back = CompareTableCellRenderer.getBackgroundColor(i, environment); - - UpdateColorPane pane = new UpdateColorPane(i, fore, back); - panel.add(pane); - } - - return panel; - } - - private Color updateColor(Color c, int rank, boolean foreground){ - if(chooser == null){ - chooser = new JColorChooser(); - } - chooser.setColor(c); - String l = parent.getMessages().get((foreground? "forecolor_": "backcolor_") + rank + ".label"); - int returnValue = JOptionPane.showConfirmDialog( - parent, chooser, parent.getMessages().get("updatecell.title", l), - JOptionPane.INFORMATION_MESSAGE - ); - if(returnValue == JOptionPane.OK_OPTION){ - c = chooser.getColor(); - } - - return c; - } - - private class UpdateColorPane extends JPanel{ - private static final long serialVersionUID = 8271684478406307685L; - - private int rank; - private JLabel label; - - public UpdateColorPane(int rank, Color fore, Color back){ - this.rank = rank; - initLayouts(); - - label.setForeground(fore); - label.setBackground(back); - } - - public int getRank(){ - return rank; - } - - private void initLayouts(){ - label = new JLabel(parent.getMessages().get("rank_" + rank + ".label")); - label.setOpaque(true); - JButton fore = GUIUtility.createButton(parent.getMessages(), "updatecellfore"); - JButton back = GUIUtility.createButton(parent.getMessages(), "updatecellback"); - - ActionListener listener = new ActionListener(){ - public void actionPerformed(ActionEvent e){ - String command = e.getActionCommand(); - boolean foreground = command.equals("updatecellfore"); - - Color c = label.getBackground(); - if(foreground){ - c = label.getForeground(); - } - c = updateColor(c, getRank(), foreground); - if(foreground){ - label.setForeground(c); - environment.addProperty( - "forecolor_" + getRank(), String.format("%06x", c.getRGB() & 0xffffff) - ); - } - else{ - label.setBackground(c); - environment.addProperty( - "backcolor_" + getRank(), String.format("%06x", c.getRGB() & 0xffffff) - ); - } - } - }; - fore.addActionListener(listener); - back.addActionListener(listener); - - setLayout(new GridLayout(1, 3)); - add(label); - add(fore); - add(back); - } - } -} +package jp.sourceforge.stigmata.ui.swing.actions; + +import java.awt.Color; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.AbstractAction; +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JColorChooser; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; + +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.ui.swing.CompareTableCellRenderer; +import jp.sourceforge.stigmata.ui.swing.GUIUtility; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; + +public class UpdateBirthmarkCellColorAction extends AbstractAction{ + private static final long serialVersionUID = 2390797591047570440L; + + private StigmataFrame parent; + private BirthmarkEnvironment environment; + private JColorChooser chooser; + + public UpdateBirthmarkCellColorAction(StigmataFrame parent, BirthmarkEnvironment environment){ + this.parent = parent; + this.environment = environment; + } + + public UpdateBirthmarkCellColorAction(StigmataFrame parent){ + this(parent, BirthmarkEnvironment.getDefaultEnvironment()); + } + + public void actionPerformed(ActionEvent e){ + JComponent c = createPanel(); + JOptionPane.showMessageDialog( + parent, c, parent.getMessages().get("updatecellcolor.dialog.title"), + JOptionPane.INFORMATION_MESSAGE + ); + } + + private JComponent createPanel(){ + Box panel = Box.createVerticalBox(); + for(int i = 0; i <= 5; i++){ + Color fore = CompareTableCellRenderer.getForegroundColor(i, environment); + Color back = CompareTableCellRenderer.getBackgroundColor(i, environment); + + UpdateColorPane pane = new UpdateColorPane(i, fore, back); + panel.add(pane); + } + + return panel; + } + + private Color updateColor(Color c, int rank, boolean foreground){ + if(chooser == null){ + chooser = new JColorChooser(); + } + chooser.setColor(c); + String l = parent.getMessages().get((foreground? "forecolor_": "backcolor_") + rank + ".label"); + int returnValue = JOptionPane.showConfirmDialog( + parent, chooser, parent.getMessages().get("updatecell.title", l), + JOptionPane.INFORMATION_MESSAGE + ); + if(returnValue == JOptionPane.OK_OPTION){ + c = chooser.getColor(); + } + + return c; + } + + private class UpdateColorPane extends JPanel{ + private static final long serialVersionUID = 8271684478406307685L; + + private int rank; + private JLabel label; + + public UpdateColorPane(int rank, Color fore, Color back){ + this.rank = rank; + initLayouts(); + + label.setForeground(fore); + label.setBackground(back); + } + + public int getRank(){ + return rank; + } + + private void initLayouts(){ + label = new JLabel(parent.getMessages().get("rank_" + rank + ".label")); + label.setOpaque(true); + JButton fore = GUIUtility.createButton(parent.getMessages(), "updatecellfore"); + JButton back = GUIUtility.createButton(parent.getMessages(), "updatecellback"); + + ActionListener listener = new ActionListener(){ + public void actionPerformed(ActionEvent e){ + String command = e.getActionCommand(); + boolean foreground = command.equals("updatecellfore"); + + Color c = label.getBackground(); + if(foreground){ + c = label.getForeground(); + } + c = updateColor(c, getRank(), foreground); + if(foreground){ + label.setForeground(c); + environment.addProperty( + "forecolor_" + getRank(), String.format("%06x", c.getRGB() & 0xffffff) + ); + } + else{ + label.setBackground(c); + environment.addProperty( + "backcolor_" + getRank(), String.format("%06x", c.getRGB() & 0xffffff) + ); + } + } + }; + fore.addActionListener(listener); + back.addActionListener(listener); + + setLayout(new GridLayout(1, 3)); + add(label); + add(fore); + add(back); + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/AbstractComparisonPairFilterComponentService.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/AbstractComparisonPairFilterComponentService.java similarity index 80% rename from src/main/java/jp/naist/se/stigmata/ui/swing/filter/AbstractComparisonPairFilterComponentService.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/filter/AbstractComparisonPairFilterComponentService.java index 87a6746..4507b48 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/AbstractComparisonPairFilterComponentService.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/AbstractComparisonPairFilterComponentService.java @@ -1,26 +1,26 @@ -package jp.naist.se.stigmata.ui.swing.filter; - -/* - * $Id$ - */ - -import java.util.Locale; - -import jp.naist.se.stigmata.utils.LocalizedDescriptionManager; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public abstract class AbstractComparisonPairFilterComponentService implements ComparisonPairFilterComponentService{ - public String getDisplayFilterName(){ - return getDisplayFilterName(Locale.getDefault()); - } - - public String getDisplayFilterName(Locale locale){ - return LocalizedDescriptionManager.getInstance().getDisplayType( - locale, getFilterName(), LocalizedDescriptionManager.ServiceCategory.filter - ); - } -} +package jp.sourceforge.stigmata.ui.swing.filter; + +/* + * $Id$ + */ + +import java.util.Locale; + +import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public abstract class AbstractComparisonPairFilterComponentService implements ComparisonPairFilterComponentService{ + public String getDisplayFilterName(){ + return getDisplayFilterName(Locale.getDefault()); + } + + public String getDisplayFilterName(Locale locale){ + return LocalizedDescriptionManager.getInstance().getDisplayType( + locale, getFilterName(), LocalizedDescriptionManager.ServiceCategory.filter + ); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/BirthmarkElementCountComparisonPairFilterComponentService.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/BirthmarkElementCountComparisonPairFilterComponentService.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/ui/swing/filter/BirthmarkElementCountComparisonPairFilterComponentService.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/filter/BirthmarkElementCountComparisonPairFilterComponentService.java index 113f4ca..b46ad21 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/BirthmarkElementCountComparisonPairFilterComponentService.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/BirthmarkElementCountComparisonPairFilterComponentService.java @@ -1,152 +1,152 @@ -package jp.naist.se.stigmata.ui.swing.filter; - -/* - * $Id$ - */ - -import java.awt.Dimension; -import java.awt.GridLayout; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.JComboBox; -import javax.swing.JLabel; -import javax.swing.JTextField; - -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.filter.BirthmarkElementCountComparisonPairFilter; -import jp.naist.se.stigmata.filter.BirthmarkElementCountComparisonPairFilterService; -import jp.naist.se.stigmata.filter.FilterTarget; -import jp.naist.se.stigmata.spi.BirthmarkSpi; -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; -import jp.naist.se.stigmata.ui.swing.BirthmarkServiceListCellRenderer; -import jp.naist.se.stigmata.ui.swing.BirthmarkServiceListener; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class BirthmarkElementCountComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService implements BirthmarkServiceListener{ - private Pane pane; - - public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){ - pane = new Pane(frame, service); - return pane; - } - - public String getFilterName(){ - return "elementcount"; - } - - public void serviceAdded(BirthmarkSpi service){ - pane.serviceAdded(service); - } - - public void serviceRemoved(BirthmarkSpi service){ - pane.serviceRemoved(service); - } - - public ComparisonPairFilterSpi getComparisonPairFilterService(){ - return new BirthmarkElementCountComparisonPairFilterService(); - } - - private static class Pane extends ComparisonPairFilterPane implements BirthmarkServiceListener{ - private static final long serialVersionUID = -6398073942592186671L; - - private ComparisonPairFilterSpi service; - private JComboBox criterionType; - private JTextField threshold; - private JComboBox targetType; - private JComboBox birthmarks; - - public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){ - super(frame); - this.service = service; - initLayouts(); - } - - public void serviceAdded(BirthmarkSpi service){ - birthmarks.addItem(service); - } - - public void serviceRemoved(BirthmarkSpi service){ - birthmarks.removeItem(service); - } - - @Override - public String[] getErrors(){ - List errors = new ArrayList(); - if(threshold.getText().trim().equals("")){ - errors.add(getMessages().get("error.empty.threshold")); - } - try{ - int v = Integer.parseInt(threshold.getText()); - if(v < 0){ - errors.add(getMessages().format("error.negative.value", v)); - } - } catch(NumberFormatException e){ - errors.add(getMessages().format("error.invalid.format.integer", threshold.getText())); - } - - return errors.toArray(new String[errors.size()]); - } - - @Override - public ComparisonPairFilter getFilter(){ - try{ - BirthmarkElementCountComparisonPairFilter filter = new BirthmarkElementCountComparisonPairFilter(service); - filter.setBirthmarkType(getBirthmarkType()); - filter.setCriterion(getCriterion((String)criterionType.getSelectedItem())); - filter.setThreshold(Integer.parseInt(threshold.getText())); - filter.setTarget(getTarget((String)targetType.getSelectedItem())); - - return filter; - } catch(Exception e){ - } - return null; - } - - @Override - public void resetComponents(){ - threshold.setText(""); - criterionType.setSelectedIndex(0); - targetType.setSelectedItem(getDisplayTarget(FilterTarget.BOTH_TARGETS)); - } - - @Override - public void setFilter(ComparisonPairFilter cpf){ - BirthmarkElementCountComparisonPairFilter filter = (BirthmarkElementCountComparisonPairFilter)cpf; - criterionType.setSelectedItem(getDisplayCriterion(filter.getCriterion())); - threshold.setText(String.valueOf(filter.getThreshold())); - targetType.setSelectedItem(getDisplayTarget(filter.getTarget())); - } - - private void initLayouts(){ - JLabel label = new JLabel(getMessages().get("filter.elementcount.label")); - threshold = new JTextField(); - criterionType = createCriteriaBox(BirthmarkElementCountComparisonPairFilter.getValidCriteria()); - birthmarks = new JComboBox(); - birthmarks.setRenderer(new BirthmarkServiceListCellRenderer(new Dimension(200, 20), 60)); - JLabel label2 = new JLabel(getMessages().get("filter.elementcount.label.next")); - targetType = createTargetBox(); - - setLayout(new GridLayout(6, 1)); - add(label); - add(birthmarks); - add(label2); - add(targetType); - add(criterionType); - add(threshold); - } - - private String getBirthmarkType(){ - BirthmarkSpi service = (BirthmarkSpi)birthmarks.getSelectedItem(); - if(service != null){ - return service.getType(); - } - throw new IllegalStateException("invalid birthmarks"); - } - } -} +package jp.sourceforge.stigmata.ui.swing.filter; + +/* + * $Id$ + */ + +import java.awt.Dimension; +import java.awt.GridLayout; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JTextField; + +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.filter.BirthmarkElementCountComparisonPairFilter; +import jp.sourceforge.stigmata.filter.BirthmarkElementCountComparisonPairFilterService; +import jp.sourceforge.stigmata.filter.FilterTarget; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.ui.swing.BirthmarkServiceListCellRenderer; +import jp.sourceforge.stigmata.ui.swing.BirthmarkServiceListener; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class BirthmarkElementCountComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService implements BirthmarkServiceListener{ + private Pane pane; + + public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){ + pane = new Pane(frame, service); + return pane; + } + + public String getFilterName(){ + return "elementcount"; + } + + public void serviceAdded(BirthmarkSpi service){ + pane.serviceAdded(service); + } + + public void serviceRemoved(BirthmarkSpi service){ + pane.serviceRemoved(service); + } + + public ComparisonPairFilterSpi getComparisonPairFilterService(){ + return new BirthmarkElementCountComparisonPairFilterService(); + } + + private static class Pane extends ComparisonPairFilterPane implements BirthmarkServiceListener{ + private static final long serialVersionUID = -6398073942592186671L; + + private ComparisonPairFilterSpi service; + private JComboBox criterionType; + private JTextField threshold; + private JComboBox targetType; + private JComboBox birthmarks; + + public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){ + super(frame); + this.service = service; + initLayouts(); + } + + public void serviceAdded(BirthmarkSpi service){ + birthmarks.addItem(service); + } + + public void serviceRemoved(BirthmarkSpi service){ + birthmarks.removeItem(service); + } + + @Override + public String[] getErrors(){ + List errors = new ArrayList(); + if(threshold.getText().trim().equals("")){ + errors.add(getMessages().get("error.empty.threshold")); + } + try{ + int v = Integer.parseInt(threshold.getText()); + if(v < 0){ + errors.add(getMessages().format("error.negative.value", v)); + } + } catch(NumberFormatException e){ + errors.add(getMessages().format("error.invalid.format.integer", threshold.getText())); + } + + return errors.toArray(new String[errors.size()]); + } + + @Override + public ComparisonPairFilter getFilter(){ + try{ + BirthmarkElementCountComparisonPairFilter filter = new BirthmarkElementCountComparisonPairFilter(service); + filter.setBirthmarkType(getBirthmarkType()); + filter.setCriterion(getCriterion((String)criterionType.getSelectedItem())); + filter.setThreshold(Integer.parseInt(threshold.getText())); + filter.setTarget(getTarget((String)targetType.getSelectedItem())); + + return filter; + } catch(Exception e){ + } + return null; + } + + @Override + public void resetComponents(){ + threshold.setText(""); + criterionType.setSelectedIndex(0); + targetType.setSelectedItem(getDisplayTarget(FilterTarget.BOTH_TARGETS)); + } + + @Override + public void setFilter(ComparisonPairFilter cpf){ + BirthmarkElementCountComparisonPairFilter filter = (BirthmarkElementCountComparisonPairFilter)cpf; + criterionType.setSelectedItem(getDisplayCriterion(filter.getCriterion())); + threshold.setText(String.valueOf(filter.getThreshold())); + targetType.setSelectedItem(getDisplayTarget(filter.getTarget())); + } + + private void initLayouts(){ + JLabel label = new JLabel(getMessages().get("filter.elementcount.label")); + threshold = new JTextField(); + criterionType = createCriteriaBox(BirthmarkElementCountComparisonPairFilter.getValidCriteria()); + birthmarks = new JComboBox(); + birthmarks.setRenderer(new BirthmarkServiceListCellRenderer(new Dimension(200, 20), 60)); + JLabel label2 = new JLabel(getMessages().get("filter.elementcount.label.next")); + targetType = createTargetBox(); + + setLayout(new GridLayout(6, 1)); + add(label); + add(birthmarks); + add(label2); + add(targetType); + add(criterionType); + add(threshold); + } + + private String getBirthmarkType(){ + BirthmarkSpi service = (BirthmarkSpi)birthmarks.getSelectedItem(); + if(service != null){ + return service.getType(); + } + throw new IllegalStateException("invalid birthmarks"); + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/ComparisonPairFilterComponentService.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterComponentService.java similarity index 72% rename from src/main/java/jp/naist/se/stigmata/ui/swing/filter/ComparisonPairFilterComponentService.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterComponentService.java index 105183c..470e7e0 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/ComparisonPairFilterComponentService.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterComponentService.java @@ -1,27 +1,27 @@ -package jp.naist.se.stigmata.ui.swing.filter; - -/* - * $Id$ - */ - -import java.util.Locale; - -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ - */ -public interface ComparisonPairFilterComponentService{ - public String getDisplayFilterName(Locale locale); - - public String getDisplayFilterName(); - - public String getFilterName(); - - public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service); - - public ComparisonPairFilterSpi getComparisonPairFilterService(); -} +package jp.sourceforge.stigmata.ui.swing.filter; + +/* + * $Id$ + */ + +import java.util.Locale; + +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ + */ +public interface ComparisonPairFilterComponentService{ + public String getDisplayFilterName(Locale locale); + + public String getDisplayFilterName(); + + public String getFilterName(); + + public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service); + + public ComparisonPairFilterSpi getComparisonPairFilterService(); +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/ComparisonPairFilterListener.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterListener.java similarity index 75% rename from src/main/java/jp/naist/se/stigmata/ui/swing/filter/ComparisonPairFilterListener.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterListener.java index 90d0d58..ee440d9 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/ComparisonPairFilterListener.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterListener.java @@ -1,20 +1,20 @@ -package jp.naist.se.stigmata.ui.swing.filter; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.ComparisonPairFilter; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface ComparisonPairFilterListener{ - public void filterAdded(ComparisonPairFilter filter); - - public void filterRemoved(ComparisonPairFilter filter); - - public void filterUpdated(ComparisonPairFilter oldfilter, ComparisonPairFilter newfilter); -} +package jp.sourceforge.stigmata.ui.swing.filter; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.ComparisonPairFilter; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface ComparisonPairFilterListener{ + public void filterAdded(ComparisonPairFilter filter); + + public void filterRemoved(ComparisonPairFilter filter); + + public void filterUpdated(ComparisonPairFilter oldfilter, ComparisonPairFilter newfilter); +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/ComparisonPairFilterPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterPane.java similarity index 84% rename from src/main/java/jp/naist/se/stigmata/ui/swing/filter/ComparisonPairFilterPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterPane.java index f7efb0f..8b06a87 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/ComparisonPairFilterPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterPane.java @@ -1,83 +1,83 @@ -package jp.naist.se.stigmata.ui.swing.filter; - -/* - * $Id$ - */ - -import java.util.HashMap; -import java.util.Map; - -import javax.swing.JComboBox; -import javax.swing.JPanel; - -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.filter.Criterion; -import jp.naist.se.stigmata.filter.FilterTarget; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; -import jp.sourceforge.talisman.i18n.Messages; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public abstract class ComparisonPairFilterPane extends JPanel{ - private jp.naist.se.stigmata.ui.swing.StigmataFrame stigmata; - private Map criterionMap = new HashMap(); - private Map targetMap = new HashMap(); - - public ComparisonPairFilterPane(StigmataFrame frame){ - this.stigmata = frame; - } - - public Messages getMessages(){ - return stigmata.getMessages(); - } - - public abstract String[] getErrors(); - - public abstract void setFilter(ComparisonPairFilter filter); - - public abstract ComparisonPairFilter getFilter(); - - public abstract void resetComponents(); - - public JComboBox createTargetBox(){ - JComboBox combo = new JComboBox(); - combo.setEditable(false); - for(FilterTarget target: FilterTarget.values()){ - String value = getMessages().get("target." + target.name()); - combo.addItem(value); - targetMap.put(value, target); - } - return combo; - } - - public FilterTarget getTarget(String value){ - return targetMap.get(value); - } - - public String getDisplayTarget(FilterTarget target){ - return getMessages().get("target." + target.name()); - } - - public JComboBox createCriteriaBox(Criterion[] criteria){ - JComboBox combo = new JComboBox(); - combo.setEditable(false); - for(int i = 0; i < criteria.length; i++){ - String value = getMessages().get("criterion." + criteria[i].name()); - combo.addItem(value); - criterionMap.put(value, criteria[i]); - } - - return combo; - } - - public Criterion getCriterion(String value){ - return criterionMap.get(value); - } - - public String getDisplayCriterion(Criterion criterion){ - return getMessages().get("criterion." + criterion.name()); - } -} +package jp.sourceforge.stigmata.ui.swing.filter; + +/* + * $Id$ + */ + +import java.util.HashMap; +import java.util.Map; + +import javax.swing.JComboBox; +import javax.swing.JPanel; + +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.filter.Criterion; +import jp.sourceforge.stigmata.filter.FilterTarget; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; +import jp.sourceforge.talisman.i18n.Messages; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public abstract class ComparisonPairFilterPane extends JPanel{ + private jp.sourceforge.stigmata.ui.swing.StigmataFrame stigmata; + private Map criterionMap = new HashMap(); + private Map targetMap = new HashMap(); + + public ComparisonPairFilterPane(StigmataFrame frame){ + this.stigmata = frame; + } + + public Messages getMessages(){ + return stigmata.getMessages(); + } + + public abstract String[] getErrors(); + + public abstract void setFilter(ComparisonPairFilter filter); + + public abstract ComparisonPairFilter getFilter(); + + public abstract void resetComponents(); + + public JComboBox createTargetBox(){ + JComboBox combo = new JComboBox(); + combo.setEditable(false); + for(FilterTarget target: FilterTarget.values()){ + String value = getMessages().get("target." + target.name()); + combo.addItem(value); + targetMap.put(value, target); + } + return combo; + } + + public FilterTarget getTarget(String value){ + return targetMap.get(value); + } + + public String getDisplayTarget(FilterTarget target){ + return getMessages().get("target." + target.name()); + } + + public JComboBox createCriteriaBox(Criterion[] criteria){ + JComboBox combo = new JComboBox(); + combo.setEditable(false); + for(int i = 0; i < criteria.length; i++){ + String value = getMessages().get("criterion." + criteria[i].name()); + combo.addItem(value); + criterionMap.put(value, criteria[i]); + } + + return combo; + } + + public Criterion getCriterion(String value){ + return criterionMap.get(value); + } + + public String getDisplayCriterion(Criterion criterion){ + return getMessages().get("criterion." + criterion.name()); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/ComparisonPairFilterRetainable.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterRetainable.java similarity index 72% rename from src/main/java/jp/naist/se/stigmata/ui/swing/filter/ComparisonPairFilterRetainable.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterRetainable.java index 7f4b8e0..7cbdf90 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/ComparisonPairFilterRetainable.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterRetainable.java @@ -1,25 +1,25 @@ -package jp.naist.se.stigmata.ui.swing.filter; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.ComparisonPairFilterSet; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface ComparisonPairFilterRetainable{ - public void filterSelected(ComparisonPairFilter filter); - - public void addFilterSet(ComparisonPairFilterSet filter); - - public void removeFilterSet(String name); - - public void updateFilterSet(String name, ComparisonPairFilterSet filter); - - public ComparisonPairFilterSet getFilterSet(String name); -} +package jp.sourceforge.stigmata.ui.swing.filter; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.ComparisonPairFilterSet; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface ComparisonPairFilterRetainable{ + public void filterSelected(ComparisonPairFilter filter); + + public void addFilterSet(ComparisonPairFilterSet filter); + + public void removeFilterSet(String name); + + public void updateFilterSet(String name, ComparisonPairFilterSet filter); + + public ComparisonPairFilterSet getFilterSet(String name); +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/FilterEditingPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/FilterEditingPane.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/ui/swing/filter/FilterEditingPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/filter/FilterEditingPane.java index dddce8f..fde54a6 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/FilterEditingPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/FilterEditingPane.java @@ -1,230 +1,230 @@ -package jp.naist.se.stigmata.ui.swing.filter; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.CardLayout; -import java.awt.Dimension; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.swing.Box; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JOptionPane; -import javax.swing.JPanel; - -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.spi.BirthmarkSpi; -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; -import jp.naist.se.stigmata.ui.swing.BirthmarkServiceListener; -import jp.naist.se.stigmata.ui.swing.GUIUtility; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; -import jp.sourceforge.talisman.i18n.Messages; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ - */ -public class FilterEditingPane extends JPanel{ - private static final long serialVersionUID = -2607954525579006086L; - - private StigmataFrame stigmata; - private ComparisonPairFilter filter; - private JPanel cardComponent; - private CardLayout card; - private JComboBox combo; - private JButton addButton; - private JButton updateButton; - private JButton removeButton; - private ComparisonPairFilterPane currentPane = null; - - private Map paneMap = new HashMap(); - private List listeners = new ArrayList(); - - public FilterEditingPane(StigmataFrame stigmata){ - this.stigmata = stigmata; - - initLayouts(); - initData(); - updateButtonEnabled(); - } - - public void reset(){ - initData(); - } - - public void addComparisonPairFilterListener(ComparisonPairFilterListener listener){ - listeners.add(listener); - } - - public void removeComparisonPairFilterListener(ComparisonPairFilterListener listener){ - listeners.remove(listener); - } - - public void setFilter(ComparisonPairFilter filter){ - resetOldComponent(); - this.filter = filter; - if(filter != null && filter.getService() != null){ - ComparisonPairFilterSpi service = filter.getService(); - String name = service.getDisplayFilterName(); - - combo.setSelectedItem(name); - card.show(cardComponent, name); - paneMap.get(name).setFilter(filter); - } - updateButtonEnabled(); - } - - private void resetOldComponent(){ - if(filter != null){ - paneMap.get(filter.getService().getDisplayFilterName()).resetComponents(); - } - } - - private void updateButtonEnabled(){ - addButton.setEnabled(currentPane != null); - removeButton.setEnabled(filter != null); - updateButton.setEnabled(filter != null); - } - - private void initData(){ - cardComponent.removeAll(); - combo.removeAllItems(); - paneMap.clear(); - - JPanel dummyPanel = new JPanel(); - card.addLayoutComponent(dummyPanel, ""); - cardComponent.add(dummyPanel, ""); - combo.addItem(""); - - - for(Iterator i = stigmata.getEnvironment().lookupProviders(ComparisonPairFilterComponentService.class); i.hasNext();){ - ComparisonPairFilterComponentService service = i.next(); - String name = service.getDisplayFilterName(); - - ComparisonPairFilterPane pane = service.createComponent(stigmata, service.getComparisonPairFilterService()); - if(pane instanceof BirthmarkServiceListener){ - for(BirthmarkSpi bs: stigmata.getEnvironment().getServices()){ - ((BirthmarkServiceListener)pane).serviceAdded(bs); - } - stigmata.addBirthmarkServiceListener((BirthmarkServiceListener)pane); - } - - pane.setMaximumSize(new Dimension(Integer.MAX_VALUE, 500)); - Box b = Box.createVerticalBox(); - b.add(pane); - b.add(Box.createVerticalGlue()); - - combo.addItem(name); - card.addLayoutComponent(b, name); - cardComponent.add(b, name); - paneMap.put(name, pane); - } - } - - private void initLayouts(){ - Messages messages = stigmata.getMessages(); - cardComponent = new JPanel(); - combo = new JComboBox(); - addButton = GUIUtility.createButton(messages, "newfilter"); - removeButton = GUIUtility.createButton(messages, "removefilter"); - updateButton = GUIUtility.createButton(messages, "updatefilter"); - - combo.addItemListener(new ItemListener(){ - public void itemStateChanged(ItemEvent e){ - String item = (String)combo.getSelectedItem(); - card.show(cardComponent, item); - if(paneMap.get(item) != null){ - if(filter != null){ - String oldType = filter.getService().getDisplayFilterName(); - if(item.equals(oldType)){ - paneMap.get(item).setFilter(filter); - } - else{ - currentPane.resetComponents(); - } - } - currentPane = paneMap.get(item); - } - else{ - currentPane = null; - } - updateButtonEnabled(); - } - }); - ActionListener listener = new ActionListener(){ - public void actionPerformed(ActionEvent e){ - String command = e.getActionCommand(); - ComparisonPairFilter newfilter = currentPane.getFilter(); - if(newfilter != null){ - for(ComparisonPairFilterListener listener: listeners){ - if(command.equals("updatefilter")){ - listener.filterUpdated(filter, newfilter); - } - else{ - listener.filterAdded(newfilter); - } - } - } - else{ - showErrorMessage(currentPane.getErrors()); - } - } - }; - addButton.addActionListener(listener); - updateButton.addActionListener(listener); - removeButton.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - for(ComparisonPairFilterListener listener: listeners){ - listener.filterRemoved(filter); - } - } - }); - - Box south = Box.createHorizontalBox(); - south.add(Box.createHorizontalGlue()); - south.add(addButton); - south.add(Box.createHorizontalGlue()); - south.add(updateButton); - south.add(Box.createHorizontalGlue()); - south.add(removeButton); - south.add(Box.createHorizontalGlue()); - - cardComponent.setLayout(card = new CardLayout()); - cardComponent.setMaximumSize(new Dimension(Integer.MAX_VALUE, cardComponent.getMaximumSize().height)); - Box center = Box.createVerticalBox(); - center.add(cardComponent); - center.add(Box.createVerticalGlue()); - - setLayout(new BorderLayout()); - add(combo, BorderLayout.NORTH); - add(center, BorderLayout.CENTER); - add(south, BorderLayout.SOUTH); - } - - private void showErrorMessage(String[] messages){ - StringBuilder sb = new StringBuilder(""); - sb.append("

").append(stigmata.getMessages().get("error.filter.cannotcreate")).append("

"); - sb.append("
    "); - for(int i = 0; i < messages.length; i++){ - sb.append("
  • ").append(messages[i]).append("
  • "); - } - sb.append("
"); - - JOptionPane.showMessageDialog( - stigmata, new String(sb), stigmata.getMessages().get("error.dialog.title"), - JOptionPane.ERROR_MESSAGE - ); - } -} +package jp.sourceforge.stigmata.ui.swing.filter; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JOptionPane; +import javax.swing.JPanel; + +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.ui.swing.BirthmarkServiceListener; +import jp.sourceforge.stigmata.ui.swing.GUIUtility; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; +import jp.sourceforge.talisman.i18n.Messages; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ + */ +public class FilterEditingPane extends JPanel{ + private static final long serialVersionUID = -2607954525579006086L; + + private StigmataFrame stigmata; + private ComparisonPairFilter filter; + private JPanel cardComponent; + private CardLayout card; + private JComboBox combo; + private JButton addButton; + private JButton updateButton; + private JButton removeButton; + private ComparisonPairFilterPane currentPane = null; + + private Map paneMap = new HashMap(); + private List listeners = new ArrayList(); + + public FilterEditingPane(StigmataFrame stigmata){ + this.stigmata = stigmata; + + initLayouts(); + initData(); + updateButtonEnabled(); + } + + public void reset(){ + initData(); + } + + public void addComparisonPairFilterListener(ComparisonPairFilterListener listener){ + listeners.add(listener); + } + + public void removeComparisonPairFilterListener(ComparisonPairFilterListener listener){ + listeners.remove(listener); + } + + public void setFilter(ComparisonPairFilter filter){ + resetOldComponent(); + this.filter = filter; + if(filter != null && filter.getService() != null){ + ComparisonPairFilterSpi service = filter.getService(); + String name = service.getDisplayFilterName(); + + combo.setSelectedItem(name); + card.show(cardComponent, name); + paneMap.get(name).setFilter(filter); + } + updateButtonEnabled(); + } + + private void resetOldComponent(){ + if(filter != null){ + paneMap.get(filter.getService().getDisplayFilterName()).resetComponents(); + } + } + + private void updateButtonEnabled(){ + addButton.setEnabled(currentPane != null); + removeButton.setEnabled(filter != null); + updateButton.setEnabled(filter != null); + } + + private void initData(){ + cardComponent.removeAll(); + combo.removeAllItems(); + paneMap.clear(); + + JPanel dummyPanel = new JPanel(); + card.addLayoutComponent(dummyPanel, ""); + cardComponent.add(dummyPanel, ""); + combo.addItem(""); + + + for(Iterator i = stigmata.getEnvironment().lookupProviders(ComparisonPairFilterComponentService.class); i.hasNext();){ + ComparisonPairFilterComponentService service = i.next(); + String name = service.getDisplayFilterName(); + + ComparisonPairFilterPane pane = service.createComponent(stigmata, service.getComparisonPairFilterService()); + if(pane instanceof BirthmarkServiceListener){ + for(BirthmarkSpi bs: stigmata.getEnvironment().getServices()){ + ((BirthmarkServiceListener)pane).serviceAdded(bs); + } + stigmata.addBirthmarkServiceListener((BirthmarkServiceListener)pane); + } + + pane.setMaximumSize(new Dimension(Integer.MAX_VALUE, 500)); + Box b = Box.createVerticalBox(); + b.add(pane); + b.add(Box.createVerticalGlue()); + + combo.addItem(name); + card.addLayoutComponent(b, name); + cardComponent.add(b, name); + paneMap.put(name, pane); + } + } + + private void initLayouts(){ + Messages messages = stigmata.getMessages(); + cardComponent = new JPanel(); + combo = new JComboBox(); + addButton = GUIUtility.createButton(messages, "newfilter"); + removeButton = GUIUtility.createButton(messages, "removefilter"); + updateButton = GUIUtility.createButton(messages, "updatefilter"); + + combo.addItemListener(new ItemListener(){ + public void itemStateChanged(ItemEvent e){ + String item = (String)combo.getSelectedItem(); + card.show(cardComponent, item); + if(paneMap.get(item) != null){ + if(filter != null){ + String oldType = filter.getService().getDisplayFilterName(); + if(item.equals(oldType)){ + paneMap.get(item).setFilter(filter); + } + else{ + currentPane.resetComponents(); + } + } + currentPane = paneMap.get(item); + } + else{ + currentPane = null; + } + updateButtonEnabled(); + } + }); + ActionListener listener = new ActionListener(){ + public void actionPerformed(ActionEvent e){ + String command = e.getActionCommand(); + ComparisonPairFilter newfilter = currentPane.getFilter(); + if(newfilter != null){ + for(ComparisonPairFilterListener listener: listeners){ + if(command.equals("updatefilter")){ + listener.filterUpdated(filter, newfilter); + } + else{ + listener.filterAdded(newfilter); + } + } + } + else{ + showErrorMessage(currentPane.getErrors()); + } + } + }; + addButton.addActionListener(listener); + updateButton.addActionListener(listener); + removeButton.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + for(ComparisonPairFilterListener listener: listeners){ + listener.filterRemoved(filter); + } + } + }); + + Box south = Box.createHorizontalBox(); + south.add(Box.createHorizontalGlue()); + south.add(addButton); + south.add(Box.createHorizontalGlue()); + south.add(updateButton); + south.add(Box.createHorizontalGlue()); + south.add(removeButton); + south.add(Box.createHorizontalGlue()); + + cardComponent.setLayout(card = new CardLayout()); + cardComponent.setMaximumSize(new Dimension(Integer.MAX_VALUE, cardComponent.getMaximumSize().height)); + Box center = Box.createVerticalBox(); + center.add(cardComponent); + center.add(Box.createVerticalGlue()); + + setLayout(new BorderLayout()); + add(combo, BorderLayout.NORTH); + add(center, BorderLayout.CENTER); + add(south, BorderLayout.SOUTH); + } + + private void showErrorMessage(String[] messages){ + StringBuilder sb = new StringBuilder(""); + sb.append("

").append(stigmata.getMessages().get("error.filter.cannotcreate")).append("

"); + sb.append("
    "); + for(int i = 0; i < messages.length; i++){ + sb.append("
  • ").append(messages[i]).append("
  • "); + } + sb.append("
"); + + JOptionPane.showMessageDialog( + stigmata, new String(sb), stigmata.getMessages().get("error.dialog.title"), + JOptionPane.ERROR_MESSAGE + ); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/FilterSetDefinitionPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/FilterSetDefinitionPane.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/ui/swing/filter/FilterSetDefinitionPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/filter/FilterSetDefinitionPane.java index 6319511..dcba410 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/FilterSetDefinitionPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/FilterSetDefinitionPane.java @@ -1,268 +1,268 @@ -package jp.naist.se.stigmata.ui.swing.filter; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.Box; -import javax.swing.ButtonGroup; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.JScrollPane; -import javax.swing.JTextField; -import javax.swing.ListSelectionModel; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.ComparisonPairFilterSet; -import jp.naist.se.stigmata.ui.swing.GUIUtility; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; -import jp.sourceforge.talisman.i18n.Messages; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ - */ -public class FilterSetDefinitionPane extends JPanel implements ComparisonPairFilterListener{ - private static final long serialVersionUID = 7519306603672717119L; - - private ComparisonPairFilterRetainable manager; - private StigmataFrame stigmata; - - private JTextField name; - private JRadioButton matchall, matchany; - private JList list; - private DefaultListModel model; - private ComparisonPairFilterSet filterset; - private boolean buttonShown = true; - - private JButton addfilter; - private JButton updatefilter; - private JButton removefilter; - private JButton upButton; - private JButton downButton; - - public FilterSetDefinitionPane(StigmataFrame frame, ComparisonPairFilterRetainable manager){ - this(frame, manager, true); - } - - public FilterSetDefinitionPane(StigmataFrame frame, ComparisonPairFilterRetainable manager, boolean showButtons){ - this.stigmata = frame; - this.manager = manager; - - initLayouts(showButtons); - } - - public void reset(){ - // nothing to do... - } - - public void setFilterSet(ComparisonPairFilterSet filterset){ - this.filterset = filterset; - if(filterset != null){ - model.removeAllElements(); - - name.setText(filterset.getName()); - matchall.setSelected(filterset.isMatchAll()); - matchany.setSelected(filterset.isMatchAny()); - for(ComparisonPairFilter filter: filterset){ - model.addElement(filter); - } - } - } - - public void filterAdded(ComparisonPairFilter filter){ - model.addElement(filter); - list.setSelectedIndex(model.getSize() - 1); - updateButtonEnabled(); - } - - public void filterRemoved(ComparisonPairFilter filter){ - model.removeElement(filter); - list.clearSelection(); - updateButtonEnabled(); - } - - public void filterUpdated(ComparisonPairFilter oldfilter, ComparisonPairFilter newfilter){ - int index = model.indexOf(oldfilter); - if(index >= 0){ - model.setElementAt(newfilter, index); - } - updateButtonEnabled(); - } - - public void setEnabled(boolean flag){ - super.setEnabled(flag); - - matchall.setEnabled(flag); - matchany.setEnabled(flag); - name.setEnabled(flag); - list.setEnabled(flag); - } - - private void initLayouts(boolean showButtons){ - Messages messages = stigmata.getMessages(); - this.buttonShown = showButtons; - - ButtonGroup group = new ButtonGroup(); - matchall = new JRadioButton(messages.get("matchall.button.label"), true); - matchall.setToolTipText(messages.get("matchall.button.tooltip")); - group.add(matchall); - matchany = new JRadioButton(messages.get("matchany.button.label"), false); - matchany.setToolTipText(messages.get("matchany.button.tooltip")); - group.add(matchany); - - JPanel north = new JPanel(new GridLayout(3, 1)); - north.add(name = new JTextField()); - north.add(matchall); - north.add(matchany); - - addfilter = GUIUtility.createButton(messages, "newfilterset"); - updatefilter = GUIUtility.createButton(messages, "updatefilterset"); - removefilter = GUIUtility.createButton(messages, "removefilterset"); - upButton = GUIUtility.createButton(messages, "moveup"); - downButton = GUIUtility.createButton(messages, "movedown"); - - Box south = Box.createHorizontalBox(); - south.add(Box.createHorizontalGlue()); - south.add(addfilter); - south.add(Box.createHorizontalGlue()); - south.add(updatefilter); - south.add(Box.createHorizontalGlue()); - south.add(removefilter); - south.add(Box.createHorizontalGlue()); - south.add(upButton); - south.add(Box.createHorizontalGlue()); - south.add(downButton); - south.add(Box.createHorizontalGlue()); - - model = new DefaultListModel(); - list = new JList(model); - list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - - list.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ - public void valueChanged(ListSelectionEvent e){ - manager.filterSelected((ComparisonPairFilter)list.getSelectedValue()); - updateButtonEnabled(); - } - }); - - addfilter.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - ComparisonPairFilterSet current = createCurrentFilterSet(); - filterset = current; - manager.addFilterSet(filterset); - list.clearSelection(); - manager.filterSelected(null); - - updateButtonEnabled(); - } - }); - - removefilter.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - manager.removeFilterSet(filterset.getName()); - filterset = null; - name.setText(""); - matchall.setSelected(true); - matchany.setSelected(false); - model.removeAllElements(); - manager.filterSelected(null); - - updateButtonEnabled(); - } - }); - - updatefilter.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - ComparisonPairFilterSet current = createCurrentFilterSet(); - manager.updateFilterSet(filterset.getName(), current); - filterset = current; - list.clearSelection(); - manager.filterSelected(null); - updateButtonEnabled(); - } - }); - - ActionListener listener = new ActionListener(){ - public void actionPerformed(ActionEvent e){ - int index = list.getSelectedIndex(); - int step = 1; - if(e.getActionCommand().equals("moveup")) step = -1; - Object element1 = model.get(index); - Object element2 = model.get(index + step); - model.setElementAt(element1, index + step); - model.setElementAt(element2, index); - list.setSelectedIndex(index + step); - } - }; - name.getDocument().addDocumentListener(new DocumentListener(){ - public void changedUpdate(DocumentEvent e){ - updateButtonEnabled(); - } - - public void insertUpdate(DocumentEvent e){ - updateButtonEnabled(); - } - - public void removeUpdate(DocumentEvent e){ - updateButtonEnabled(); - } - }); - upButton.addActionListener(listener); - downButton.addActionListener(listener); - - JScrollPane listpane = new JScrollPane(list); - setLayout(new BorderLayout()); - add(north, BorderLayout.NORTH); - add(listpane, BorderLayout.CENTER); - if(showButtons){ - add(south, BorderLayout.SOUTH); - } - - GUIUtility.decorateJComponent(messages, name, "filtername"); - GUIUtility.decorateJComponent(messages, listpane, "filterorder"); - - setEnabled(buttonShown); - - updateButtonEnabled(); - } - - private void updateButtonEnabled(){ - if(buttonShown){ - int index = list.getSelectedIndex(); - int size = model.getSize(); - - upButton.setEnabled(size > 1 && index > 0); - downButton.setEnabled(size > 1 && index < (size - 1)); - updatefilter.setEnabled(filterset != null); - addfilter.setEnabled(size > 0 && name.getText().length() > 0 && manager.getFilterSet(name.getText()) == null); - removefilter.setEnabled(filterset != null); - } - } - - private ComparisonPairFilterSet createCurrentFilterSet(){ - ComparisonPairFilterSet current = new ComparisonPairFilterSet(); - current.setName(name.getText()); - if(matchall.isSelected()) current.setMatchAll(); - else if(matchany.isSelected()) current.setMatchAny(); - current.removeAllFilters(); - - for(int i = 0; i < model.getSize(); i++){ - current.addFilter((ComparisonPairFilter)model.get(i)); - } - return current; - } -} +package jp.sourceforge.stigmata.ui.swing.filter; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.Box; +import javax.swing.ButtonGroup; +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.JTextField; +import javax.swing.ListSelectionModel; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.ComparisonPairFilterSet; +import jp.sourceforge.stigmata.ui.swing.GUIUtility; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; +import jp.sourceforge.talisman.i18n.Messages; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ + */ +public class FilterSetDefinitionPane extends JPanel implements ComparisonPairFilterListener{ + private static final long serialVersionUID = 7519306603672717119L; + + private ComparisonPairFilterRetainable manager; + private StigmataFrame stigmata; + + private JTextField name; + private JRadioButton matchall, matchany; + private JList list; + private DefaultListModel model; + private ComparisonPairFilterSet filterset; + private boolean buttonShown = true; + + private JButton addfilter; + private JButton updatefilter; + private JButton removefilter; + private JButton upButton; + private JButton downButton; + + public FilterSetDefinitionPane(StigmataFrame frame, ComparisonPairFilterRetainable manager){ + this(frame, manager, true); + } + + public FilterSetDefinitionPane(StigmataFrame frame, ComparisonPairFilterRetainable manager, boolean showButtons){ + this.stigmata = frame; + this.manager = manager; + + initLayouts(showButtons); + } + + public void reset(){ + // nothing to do... + } + + public void setFilterSet(ComparisonPairFilterSet filterset){ + this.filterset = filterset; + if(filterset != null){ + model.removeAllElements(); + + name.setText(filterset.getName()); + matchall.setSelected(filterset.isMatchAll()); + matchany.setSelected(filterset.isMatchAny()); + for(ComparisonPairFilter filter: filterset){ + model.addElement(filter); + } + } + } + + public void filterAdded(ComparisonPairFilter filter){ + model.addElement(filter); + list.setSelectedIndex(model.getSize() - 1); + updateButtonEnabled(); + } + + public void filterRemoved(ComparisonPairFilter filter){ + model.removeElement(filter); + list.clearSelection(); + updateButtonEnabled(); + } + + public void filterUpdated(ComparisonPairFilter oldfilter, ComparisonPairFilter newfilter){ + int index = model.indexOf(oldfilter); + if(index >= 0){ + model.setElementAt(newfilter, index); + } + updateButtonEnabled(); + } + + public void setEnabled(boolean flag){ + super.setEnabled(flag); + + matchall.setEnabled(flag); + matchany.setEnabled(flag); + name.setEnabled(flag); + list.setEnabled(flag); + } + + private void initLayouts(boolean showButtons){ + Messages messages = stigmata.getMessages(); + this.buttonShown = showButtons; + + ButtonGroup group = new ButtonGroup(); + matchall = new JRadioButton(messages.get("matchall.button.label"), true); + matchall.setToolTipText(messages.get("matchall.button.tooltip")); + group.add(matchall); + matchany = new JRadioButton(messages.get("matchany.button.label"), false); + matchany.setToolTipText(messages.get("matchany.button.tooltip")); + group.add(matchany); + + JPanel north = new JPanel(new GridLayout(3, 1)); + north.add(name = new JTextField()); + north.add(matchall); + north.add(matchany); + + addfilter = GUIUtility.createButton(messages, "newfilterset"); + updatefilter = GUIUtility.createButton(messages, "updatefilterset"); + removefilter = GUIUtility.createButton(messages, "removefilterset"); + upButton = GUIUtility.createButton(messages, "moveup"); + downButton = GUIUtility.createButton(messages, "movedown"); + + Box south = Box.createHorizontalBox(); + south.add(Box.createHorizontalGlue()); + south.add(addfilter); + south.add(Box.createHorizontalGlue()); + south.add(updatefilter); + south.add(Box.createHorizontalGlue()); + south.add(removefilter); + south.add(Box.createHorizontalGlue()); + south.add(upButton); + south.add(Box.createHorizontalGlue()); + south.add(downButton); + south.add(Box.createHorizontalGlue()); + + model = new DefaultListModel(); + list = new JList(model); + list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + + list.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ + public void valueChanged(ListSelectionEvent e){ + manager.filterSelected((ComparisonPairFilter)list.getSelectedValue()); + updateButtonEnabled(); + } + }); + + addfilter.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + ComparisonPairFilterSet current = createCurrentFilterSet(); + filterset = current; + manager.addFilterSet(filterset); + list.clearSelection(); + manager.filterSelected(null); + + updateButtonEnabled(); + } + }); + + removefilter.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + manager.removeFilterSet(filterset.getName()); + filterset = null; + name.setText(""); + matchall.setSelected(true); + matchany.setSelected(false); + model.removeAllElements(); + manager.filterSelected(null); + + updateButtonEnabled(); + } + }); + + updatefilter.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + ComparisonPairFilterSet current = createCurrentFilterSet(); + manager.updateFilterSet(filterset.getName(), current); + filterset = current; + list.clearSelection(); + manager.filterSelected(null); + updateButtonEnabled(); + } + }); + + ActionListener listener = new ActionListener(){ + public void actionPerformed(ActionEvent e){ + int index = list.getSelectedIndex(); + int step = 1; + if(e.getActionCommand().equals("moveup")) step = -1; + Object element1 = model.get(index); + Object element2 = model.get(index + step); + model.setElementAt(element1, index + step); + model.setElementAt(element2, index); + list.setSelectedIndex(index + step); + } + }; + name.getDocument().addDocumentListener(new DocumentListener(){ + public void changedUpdate(DocumentEvent e){ + updateButtonEnabled(); + } + + public void insertUpdate(DocumentEvent e){ + updateButtonEnabled(); + } + + public void removeUpdate(DocumentEvent e){ + updateButtonEnabled(); + } + }); + upButton.addActionListener(listener); + downButton.addActionListener(listener); + + JScrollPane listpane = new JScrollPane(list); + setLayout(new BorderLayout()); + add(north, BorderLayout.NORTH); + add(listpane, BorderLayout.CENTER); + if(showButtons){ + add(south, BorderLayout.SOUTH); + } + + GUIUtility.decorateJComponent(messages, name, "filtername"); + GUIUtility.decorateJComponent(messages, listpane, "filterorder"); + + setEnabled(buttonShown); + + updateButtonEnabled(); + } + + private void updateButtonEnabled(){ + if(buttonShown){ + int index = list.getSelectedIndex(); + int size = model.getSize(); + + upButton.setEnabled(size > 1 && index > 0); + downButton.setEnabled(size > 1 && index < (size - 1)); + updatefilter.setEnabled(filterset != null); + addfilter.setEnabled(size > 0 && name.getText().length() > 0 && manager.getFilterSet(name.getText()) == null); + removefilter.setEnabled(filterset != null); + } + } + + private ComparisonPairFilterSet createCurrentFilterSet(){ + ComparisonPairFilterSet current = new ComparisonPairFilterSet(); + current.setName(name.getText()); + if(matchall.isSelected()) current.setMatchAll(); + else if(matchany.isSelected()) current.setMatchAny(); + current.removeAllFilters(); + + for(int i = 0; i < model.getSize(); i++){ + current.addFilter((ComparisonPairFilter)model.get(i)); + } + return current; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/SimilarityComparisonPairFilterComponentService.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/SimilarityComparisonPairFilterComponentService.java similarity index 89% rename from src/main/java/jp/naist/se/stigmata/ui/swing/filter/SimilarityComparisonPairFilterComponentService.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/filter/SimilarityComparisonPairFilterComponentService.java index 5ae534a..bfc75c0 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/SimilarityComparisonPairFilterComponentService.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/SimilarityComparisonPairFilterComponentService.java @@ -1,128 +1,128 @@ -package jp.naist.se.stigmata.ui.swing.filter; - -/* - * $Id$ - */ - -import java.awt.GridLayout; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.JComboBox; -import javax.swing.JLabel; -import javax.swing.JTextField; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; - -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.filter.SimilarityComparisonPairFilter; -import jp.naist.se.stigmata.filter.SimilarityComparisonPairFilterService; -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ - */ -public class SimilarityComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{ - - public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){ - return new Pane(frame, service); - } - - public String getFilterName(){ - return "similarity"; - } - - public ComparisonPairFilterSpi getComparisonPairFilterService(){ - return new SimilarityComparisonPairFilterService(); - } - - private static class Pane extends ComparisonPairFilterPane{ - private static final long serialVersionUID = 8912037614500713027L; - private ComparisonPairFilterSpi service; - private JComboBox criterionType; - private JTextField threshold; - - public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){ - super(frame); - this.service = service; - initLayouts(); - } - - @Override - public String[] getErrors(){ - List errors = new ArrayList(); - if(threshold.getText().trim().equals("")){ - errors.add(getMessages().get("error.empty.threshold")); - } - try{ - double v = Double.parseDouble(threshold.getText()); - if(v < 0d){ - errors.add(getMessages().format("error.negative.value", v)); - } - else if(v > 1.0d){ - errors.add(getMessages().format("error.over.range", "0-1")); - } - } catch(NumberFormatException e){ - errors.add(getMessages().format("error.invalid.format.double", threshold.getText())); - } - - return errors.toArray(new String[errors.size()]); - } - - @Override - public ComparisonPairFilter getFilter(){ - try{ - SimilarityComparisonPairFilter filter = new SimilarityComparisonPairFilter(service); - filter.setThreshold(Double.parseDouble(threshold.getText())); - filter.setCriterion(getCriterion((String)criterionType.getSelectedItem())); - - return filter; - } catch(Exception e){ - } - return null; - } - - @Override - public void resetComponents(){ - threshold.setText(""); - criterionType.setSelectedIndex(0); - } - - @Override - public void setFilter(ComparisonPairFilter filter){ - if(filter != null){ - SimilarityComparisonPairFilter sf = (SimilarityComparisonPairFilter)filter; - criterionType.setSelectedItem(getDisplayCriterion(sf.getCriterion())); - threshold.setText(Double.toString(sf.getThreshold())); - } - else{ - resetComponents(); - } - } - - private void initLayouts(){ - JLabel label = new JLabel(getMessages().get("filter.similarity.label")); - threshold = new JTextField(); - criterionType = createCriteriaBox(SimilarityComparisonPairFilter.getValidCriteria()); - - setLayout(new GridLayout(3, 1)); - add(label); - add(criterionType); - add(threshold); - - threshold.getDocument().addDocumentListener(new DocumentListener(){ - public void changedUpdate(DocumentEvent e){ - } - - public void insertUpdate(DocumentEvent e){ - } - - public void removeUpdate(DocumentEvent e){ - } - }); - } - }; -} +package jp.sourceforge.stigmata.ui.swing.filter; + +/* + * $Id$ + */ + +import java.awt.GridLayout; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JTextField; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; + +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.filter.SimilarityComparisonPairFilter; +import jp.sourceforge.stigmata.filter.SimilarityComparisonPairFilterService; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ + */ +public class SimilarityComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{ + + public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){ + return new Pane(frame, service); + } + + public String getFilterName(){ + return "similarity"; + } + + public ComparisonPairFilterSpi getComparisonPairFilterService(){ + return new SimilarityComparisonPairFilterService(); + } + + private static class Pane extends ComparisonPairFilterPane{ + private static final long serialVersionUID = 8912037614500713027L; + private ComparisonPairFilterSpi service; + private JComboBox criterionType; + private JTextField threshold; + + public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){ + super(frame); + this.service = service; + initLayouts(); + } + + @Override + public String[] getErrors(){ + List errors = new ArrayList(); + if(threshold.getText().trim().equals("")){ + errors.add(getMessages().get("error.empty.threshold")); + } + try{ + double v = Double.parseDouble(threshold.getText()); + if(v < 0d){ + errors.add(getMessages().format("error.negative.value", v)); + } + else if(v > 1.0d){ + errors.add(getMessages().format("error.over.range", "0-1")); + } + } catch(NumberFormatException e){ + errors.add(getMessages().format("error.invalid.format.double", threshold.getText())); + } + + return errors.toArray(new String[errors.size()]); + } + + @Override + public ComparisonPairFilter getFilter(){ + try{ + SimilarityComparisonPairFilter filter = new SimilarityComparisonPairFilter(service); + filter.setThreshold(Double.parseDouble(threshold.getText())); + filter.setCriterion(getCriterion((String)criterionType.getSelectedItem())); + + return filter; + } catch(Exception e){ + } + return null; + } + + @Override + public void resetComponents(){ + threshold.setText(""); + criterionType.setSelectedIndex(0); + } + + @Override + public void setFilter(ComparisonPairFilter filter){ + if(filter != null){ + SimilarityComparisonPairFilter sf = (SimilarityComparisonPairFilter)filter; + criterionType.setSelectedItem(getDisplayCriterion(sf.getCriterion())); + threshold.setText(Double.toString(sf.getThreshold())); + } + else{ + resetComponents(); + } + } + + private void initLayouts(){ + JLabel label = new JLabel(getMessages().get("filter.similarity.label")); + threshold = new JTextField(); + criterionType = createCriteriaBox(SimilarityComparisonPairFilter.getValidCriteria()); + + setLayout(new GridLayout(3, 1)); + add(label); + add(criterionType); + add(threshold); + + threshold.getDocument().addDocumentListener(new DocumentListener(){ + public void changedUpdate(DocumentEvent e){ + } + + public void insertUpdate(DocumentEvent e){ + } + + public void removeUpdate(DocumentEvent e){ + } + }); + } + }; +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/TargetNameComparisonPairFilterComponentService.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TargetNameComparisonPairFilterComponentService.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/ui/swing/filter/TargetNameComparisonPairFilterComponentService.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TargetNameComparisonPairFilterComponentService.java index 80d55a3..1ceee74 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/TargetNameComparisonPairFilterComponentService.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TargetNameComparisonPairFilterComponentService.java @@ -1,105 +1,105 @@ -package jp.naist.se.stigmata.ui.swing.filter; - -/* - * $Id$ - */ - -import java.awt.GridLayout; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.JComboBox; -import javax.swing.JLabel; -import javax.swing.JTextField; - -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.filter.FilterTarget; -import jp.naist.se.stigmata.filter.TargetNameComparisonPairFilter; -import jp.naist.se.stigmata.filter.TargetNameComparisonPairFilterService; -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class TargetNameComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{ - - public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){ - return new Pane(frame, service); - } - - public String getFilterName(){ - return "name"; - } - - public ComparisonPairFilterSpi getComparisonPairFilterService(){ - return new TargetNameComparisonPairFilterService(); - } - - private static class Pane extends ComparisonPairFilterPane{ - private static final long serialVersionUID = 8912037614500713027L; - private ComparisonPairFilterSpi service; - private JComboBox criterionType; - private JTextField value; - private JComboBox targetType; - - public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){ - super(frame); - this.service = service; - initLayouts(); - } - - @Override - public String[] getErrors(){ - List errors = new ArrayList(); - if(value.getText().trim().equals("")){ - errors.add(getMessages().get("error.empty.value")); - } - - return errors.toArray(new String[errors.size()]); - } - - @Override - public ComparisonPairFilter getFilter(){ - try{ - TargetNameComparisonPairFilter filter = new TargetNameComparisonPairFilter(service); - filter.setCriterion(getCriterion((String)criterionType.getSelectedItem())); - filter.setValue(value.getText()); - filter.setTarget(getTarget((String)targetType.getSelectedItem())); - - return filter; - } catch(Exception e){ - } - return null; - } - - @Override - public void resetComponents(){ - value.setText(""); - criterionType.setSelectedIndex(0); - targetType.setSelectedItem(getDisplayTarget(FilterTarget.BOTH_TARGETS)); - } - - @Override - public void setFilter(ComparisonPairFilter cpf){ - TargetNameComparisonPairFilter filter = (TargetNameComparisonPairFilter)cpf; - criterionType.setSelectedItem(getDisplayCriterion(filter.getCriterion())); - value.setText(filter.getValue()); - targetType.setSelectedItem(getDisplayTarget(filter.getTarget())); - } - - private void initLayouts(){ - JLabel label = new JLabel(getMessages().get("filter.name.label")); - value = new JTextField(); - criterionType = createCriteriaBox(TargetNameComparisonPairFilter.getValidCriteria()); - targetType = createTargetBox(); - - setLayout(new GridLayout(4, 1)); - add(label); - add(targetType); - add(criterionType); - add(value); - } - }; -} +package jp.sourceforge.stigmata.ui.swing.filter; + +/* + * $Id$ + */ + +import java.awt.GridLayout; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JTextField; + +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.filter.FilterTarget; +import jp.sourceforge.stigmata.filter.TargetNameComparisonPairFilter; +import jp.sourceforge.stigmata.filter.TargetNameComparisonPairFilterService; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class TargetNameComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{ + + public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){ + return new Pane(frame, service); + } + + public String getFilterName(){ + return "name"; + } + + public ComparisonPairFilterSpi getComparisonPairFilterService(){ + return new TargetNameComparisonPairFilterService(); + } + + private static class Pane extends ComparisonPairFilterPane{ + private static final long serialVersionUID = 8912037614500713027L; + private ComparisonPairFilterSpi service; + private JComboBox criterionType; + private JTextField value; + private JComboBox targetType; + + public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){ + super(frame); + this.service = service; + initLayouts(); + } + + @Override + public String[] getErrors(){ + List errors = new ArrayList(); + if(value.getText().trim().equals("")){ + errors.add(getMessages().get("error.empty.value")); + } + + return errors.toArray(new String[errors.size()]); + } + + @Override + public ComparisonPairFilter getFilter(){ + try{ + TargetNameComparisonPairFilter filter = new TargetNameComparisonPairFilter(service); + filter.setCriterion(getCriterion((String)criterionType.getSelectedItem())); + filter.setValue(value.getText()); + filter.setTarget(getTarget((String)targetType.getSelectedItem())); + + return filter; + } catch(Exception e){ + } + return null; + } + + @Override + public void resetComponents(){ + value.setText(""); + criterionType.setSelectedIndex(0); + targetType.setSelectedItem(getDisplayTarget(FilterTarget.BOTH_TARGETS)); + } + + @Override + public void setFilter(ComparisonPairFilter cpf){ + TargetNameComparisonPairFilter filter = (TargetNameComparisonPairFilter)cpf; + criterionType.setSelectedItem(getDisplayCriterion(filter.getCriterion())); + value.setText(filter.getValue()); + targetType.setSelectedItem(getDisplayTarget(filter.getTarget())); + } + + private void initLayouts(){ + JLabel label = new JLabel(getMessages().get("filter.name.label")); + value = new JTextField(); + criterionType = createCriteriaBox(TargetNameComparisonPairFilter.getValidCriteria()); + targetType = createTargetBox(); + + setLayout(new GridLayout(4, 1)); + add(label); + add(targetType); + add(criterionType); + add(value); + } + }; +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/TotalElementCountComparisonPairFilterComponentService.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TotalElementCountComparisonPairFilterComponentService.java similarity index 87% rename from src/main/java/jp/naist/se/stigmata/ui/swing/filter/TotalElementCountComparisonPairFilterComponentService.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TotalElementCountComparisonPairFilterComponentService.java index 1c25716..08e7a0e 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/filter/TotalElementCountComparisonPairFilterComponentService.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TotalElementCountComparisonPairFilterComponentService.java @@ -1,112 +1,112 @@ -package jp.naist.se.stigmata.ui.swing.filter; - -/* - * $Id$ - */ - -import java.awt.GridLayout; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.JComboBox; -import javax.swing.JLabel; -import javax.swing.JTextField; - -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.filter.FilterTarget; -import jp.naist.se.stigmata.filter.TotalElementCountComparisonPairFilter; -import jp.naist.se.stigmata.filter.TotalElementCountComparisonPairFilterService; -import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class TotalElementCountComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{ - - public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){ - return new Pane(frame, service); - } - - public String getFilterName(){ - return "totalelementcount"; - } - - public ComparisonPairFilterSpi getComparisonPairFilterService(){ - return new TotalElementCountComparisonPairFilterService(); - } - - private static class Pane extends ComparisonPairFilterPane{ - private static final long serialVersionUID = 8912037614500713027L; - private ComparisonPairFilterSpi service; - private JComboBox criterionType; - private JTextField threshold; - private JComboBox targetType; - - public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){ - super(frame); - this.service = service; - initLayouts(); - } - - @Override - public String[] getErrors(){ - List errors = new ArrayList(); - if(threshold.getText().trim().equals("")){ - errors.add(getMessages().get("error.empty.threshold")); - } - try{ - int v = Integer.parseInt(threshold.getText()); - if(v < 0){ - errors.add(getMessages().format("error.negative.value", v)); - } - } catch(NumberFormatException e){ - errors.add(getMessages().format("error.invalid.format.integer", threshold.getText())); - } - return errors.toArray(new String[errors.size()]); - } - - @Override - public ComparisonPairFilter getFilter(){ - try{ - TotalElementCountComparisonPairFilter filter = new TotalElementCountComparisonPairFilter(service); - filter.setCriterion(getCriterion((String)criterionType.getSelectedItem())); - filter.setThreshold(Integer.parseInt(threshold.getText())); - filter.setTarget(getTarget((String)targetType.getSelectedItem())); - - return filter; - } catch(NumberFormatException e){ - } - return null; - } - - @Override - public void resetComponents(){ - threshold.setText(""); - criterionType.setSelectedIndex(0); - targetType.setSelectedItem(getDisplayTarget(FilterTarget.BOTH_TARGETS)); - } - - @Override - public void setFilter(ComparisonPairFilter cpf){ - TotalElementCountComparisonPairFilter filter = (TotalElementCountComparisonPairFilter)cpf; - criterionType.setSelectedItem(getDisplayCriterion(filter.getCriterion())); - threshold.setText(String.valueOf(filter.getThreshold())); - targetType.setSelectedItem(getDisplayTarget(filter.getTarget())); - } - - private void initLayouts(){ - JLabel label = new JLabel(getMessages().get("filter.totalelementcount.label")); - threshold = new JTextField(); - criterionType = createCriteriaBox(TotalElementCountComparisonPairFilter.getValidCriteria()); - targetType = createTargetBox(); - - setLayout(new GridLayout(4, 1)); - add(label); - add(targetType); - add(criterionType); - add(threshold); - } - }; -} +package jp.sourceforge.stigmata.ui.swing.filter; + +/* + * $Id$ + */ + +import java.awt.GridLayout; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JTextField; + +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.filter.FilterTarget; +import jp.sourceforge.stigmata.filter.TotalElementCountComparisonPairFilter; +import jp.sourceforge.stigmata.filter.TotalElementCountComparisonPairFilterService; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class TotalElementCountComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{ + + public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){ + return new Pane(frame, service); + } + + public String getFilterName(){ + return "totalelementcount"; + } + + public ComparisonPairFilterSpi getComparisonPairFilterService(){ + return new TotalElementCountComparisonPairFilterService(); + } + + private static class Pane extends ComparisonPairFilterPane{ + private static final long serialVersionUID = 8912037614500713027L; + private ComparisonPairFilterSpi service; + private JComboBox criterionType; + private JTextField threshold; + private JComboBox targetType; + + public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){ + super(frame); + this.service = service; + initLayouts(); + } + + @Override + public String[] getErrors(){ + List errors = new ArrayList(); + if(threshold.getText().trim().equals("")){ + errors.add(getMessages().get("error.empty.threshold")); + } + try{ + int v = Integer.parseInt(threshold.getText()); + if(v < 0){ + errors.add(getMessages().format("error.negative.value", v)); + } + } catch(NumberFormatException e){ + errors.add(getMessages().format("error.invalid.format.integer", threshold.getText())); + } + return errors.toArray(new String[errors.size()]); + } + + @Override + public ComparisonPairFilter getFilter(){ + try{ + TotalElementCountComparisonPairFilter filter = new TotalElementCountComparisonPairFilter(service); + filter.setCriterion(getCriterion((String)criterionType.getSelectedItem())); + filter.setThreshold(Integer.parseInt(threshold.getText())); + filter.setTarget(getTarget((String)targetType.getSelectedItem())); + + return filter; + } catch(NumberFormatException e){ + } + return null; + } + + @Override + public void resetComponents(){ + threshold.setText(""); + criterionType.setSelectedIndex(0); + targetType.setSelectedItem(getDisplayTarget(FilterTarget.BOTH_TARGETS)); + } + + @Override + public void setFilter(ComparisonPairFilter cpf){ + TotalElementCountComparisonPairFilter filter = (TotalElementCountComparisonPairFilter)cpf; + criterionType.setSelectedItem(getDisplayCriterion(filter.getCriterion())); + threshold.setText(String.valueOf(filter.getThreshold())); + targetType.setSelectedItem(getDisplayTarget(filter.getTarget())); + } + + private void initLayouts(){ + JLabel label = new JLabel(getMessages().get("filter.totalelementcount.label")); + threshold = new JTextField(); + criterionType = createCriteriaBox(TotalElementCountComparisonPairFilter.getValidCriteria()); + targetType = createTargetBox(); + + setLayout(new GridLayout(4, 1)); + add(label); + add(targetType); + add(criterionType); + add(threshold); + } + }; +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/graph/SimilarityDistributionGraphPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/graph/SimilarityDistributionGraphPane.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/ui/swing/graph/SimilarityDistributionGraphPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/graph/SimilarityDistributionGraphPane.java index 9c7863d..1eb7409 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/graph/SimilarityDistributionGraphPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/graph/SimilarityDistributionGraphPane.java @@ -1,198 +1,198 @@ -package jp.naist.se.stigmata.ui.swing.graph; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.Graphics2D; -import java.awt.RenderingHints; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.geom.Line2D; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import javax.imageio.ImageIO; -import javax.swing.Box; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; - -import jp.naist.se.stigmata.ui.swing.GUIUtility; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; -import jp.naist.se.stigmata.ui.swing.actions.ChangeColorAction; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class SimilarityDistributionGraphPane extends JPanel{ - private static final long serialVersionUID = 2314463453465L; - - private StigmataFrame stigmata; - private Map distributions; - private int totalCount = 0; - private int maxFrequency = 0; - private JLabel iconLabel; - private BufferedImage image; - - public SimilarityDistributionGraphPane(StigmataFrame stigmata, Map distributions){ - this.stigmata = stigmata; - - this.distributions = distributions; - initializeLayouts(); - initializeData(); - - drawGraph(Color.RED); - } - - public String[] getSupportedFormats(){ - String[] formats = ImageIO.getWriterFormatNames(); - Set set = new HashSet(); - for(String f: formats){ - if(f != null){ - set.add(f.toLowerCase()); - } - } - return set.toArray(new String[set.size()]); - } - - private void drawGraph(Color color){ - Graphics2D g = image.createGraphics(); - g.setColor(getBackground()); - g.fillRect(0, 0, image.getWidth(), image.getHeight()); - - int width = image.getWidth(); - int height = image.getHeight(); - g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - - drawBorder(g, width, height); - - g.setColor(color); - Dimension d = new Dimension(width - 20, height - 20); - double w = (d.width / 100d); - - Integer v1 = distributions.get(0); - if(v1 == null) v1 = new Integer(0); - double x = 20; - for(int i = 0; i <= 100; i++){ - Integer v2 = distributions.get(i); - if(v2 == null) new Integer(0); - - double hh1 = v1 * ((double)height / totalCount); - double hh2 = v2 * ((double)height / totalCount); - - g.draw(new Line2D.Double(x, d.height - hh1, x + w, d.height - hh2)); - x += w; - v1 = v2; - } - iconLabel.setIcon(new ImageIcon(image)); - } - - private void drawBorder(Graphics2D g, int width, int height){ - g.setColor(Color.BLACK); - g.draw(new Line2D.Double(0, height - 20, width, height - 20)); - g.draw(new Line2D.Double(20, 0, 20, height)); - - g.setColor(Color.GRAY); - // x axis - double h = (height - 20) / 2d; - g.draw(new Line2D.Double(20, h, width, h)); - h = h / 2; - g.draw(new Line2D.Double(20, h, width, h)); - g.draw(new Line2D.Double(20, h * 3, width, h * 3)); - - // y axis - double w = (width - 20d) / 2d; - g.draw(new Line2D.Double(w + 20, 0, w + 20, height - 20)); - w = w / 2; - g.draw(new Line2D.Double(w + 20, 0, w + 20, height - 20)); - g.draw(new Line2D.Double(w * 3 + 20, 0, w * 3 + 20, height - 20)); - - g.drawString("0", 10, height - 5); - g.drawString("50%", (width - 20) / 2 + 10, height - 5); - g.drawString(stigmata.getMessages().get("similarity.label"), width - 60, height - 5); - g.drawString("50%", 0, (height - 20) / 2); - } - - private void initializeData(){ - maxFrequency = 0; - for(int i = 0; i <= 100; i++){ - Integer frequency = distributions.get(new Integer(i)); - if(frequency == null){ - frequency = new Integer(0); - distributions.put(new Integer(i), frequency); - } - if(maxFrequency < frequency.intValue()){ - maxFrequency = frequency.intValue(); - } - totalCount += frequency.intValue(); - } - } - - private void initializeLayouts(){ - image = new BufferedImage(300, 300, BufferedImage.TYPE_INT_ARGB); - - JPanel center = new JPanel(new FlowLayout(FlowLayout.CENTER)); - iconLabel = new JLabel(); - Box south = Box.createHorizontalBox(); - JButton storeImageButton = GUIUtility.createButton(stigmata.getMessages(), "savegraph"); - JButton switchColorButton = new JButton(new ChangeColorAction(stigmata, new ActionListener(){ - public void actionPerformed(ActionEvent e){ - ChangeColorAction action = (ChangeColorAction)e.getSource(); - if(action.isColorSelected()){ - drawGraph(action.getColor()); - } - } - })); - storeImageButton.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - storeGraphImage(); - } - }); - - setLayout(new BorderLayout()); - center.add(iconLabel = new JLabel()); - south.add(Box.createHorizontalGlue()); - south.add(switchColorButton); - south.add(Box.createHorizontalGlue()); - south.add(storeImageButton); - south.add(Box.createHorizontalGlue()); - - add(center, BorderLayout.CENTER); - add(south, BorderLayout.SOUTH); - } - - private void storeGraphImage(){ - String[] exts = getSupportedFormats(); - File file = stigmata.getSaveFile( - exts, stigmata.getMessages().get("savegraph.description") - ); - try{ - if(file != null){ - String format = file.getName(); - format = format.substring(format.lastIndexOf('.') + 1); - - ImageIO.write(image, format, file); - } - } catch(IOException e){ - JOptionPane.showMessageDialog( - this, - stigmata.getMessages().get("error.io", e.getMessage()), - stigmata.getMessages().get("error.dialog.title"), - JOptionPane.ERROR_MESSAGE - ); - } - } -} +package jp.sourceforge.stigmata.ui.swing.graph; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.geom.Line2D; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import javax.imageio.ImageIO; +import javax.swing.Box; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; + +import jp.sourceforge.stigmata.ui.swing.GUIUtility; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; +import jp.sourceforge.stigmata.ui.swing.actions.ChangeColorAction; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class SimilarityDistributionGraphPane extends JPanel{ + private static final long serialVersionUID = 2314463453465L; + + private StigmataFrame stigmata; + private Map distributions; + private int totalCount = 0; + private int maxFrequency = 0; + private JLabel iconLabel; + private BufferedImage image; + + public SimilarityDistributionGraphPane(StigmataFrame stigmata, Map distributions){ + this.stigmata = stigmata; + + this.distributions = distributions; + initializeLayouts(); + initializeData(); + + drawGraph(Color.RED); + } + + public String[] getSupportedFormats(){ + String[] formats = ImageIO.getWriterFormatNames(); + Set set = new HashSet(); + for(String f: formats){ + if(f != null){ + set.add(f.toLowerCase()); + } + } + return set.toArray(new String[set.size()]); + } + + private void drawGraph(Color color){ + Graphics2D g = image.createGraphics(); + g.setColor(getBackground()); + g.fillRect(0, 0, image.getWidth(), image.getHeight()); + + int width = image.getWidth(); + int height = image.getHeight(); + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + + drawBorder(g, width, height); + + g.setColor(color); + Dimension d = new Dimension(width - 20, height - 20); + double w = (d.width / 100d); + + Integer v1 = distributions.get(0); + if(v1 == null) v1 = new Integer(0); + double x = 20; + for(int i = 0; i <= 100; i++){ + Integer v2 = distributions.get(i); + if(v2 == null) new Integer(0); + + double hh1 = v1 * ((double)height / totalCount); + double hh2 = v2 * ((double)height / totalCount); + + g.draw(new Line2D.Double(x, d.height - hh1, x + w, d.height - hh2)); + x += w; + v1 = v2; + } + iconLabel.setIcon(new ImageIcon(image)); + } + + private void drawBorder(Graphics2D g, int width, int height){ + g.setColor(Color.BLACK); + g.draw(new Line2D.Double(0, height - 20, width, height - 20)); + g.draw(new Line2D.Double(20, 0, 20, height)); + + g.setColor(Color.GRAY); + // x axis + double h = (height - 20) / 2d; + g.draw(new Line2D.Double(20, h, width, h)); + h = h / 2; + g.draw(new Line2D.Double(20, h, width, h)); + g.draw(new Line2D.Double(20, h * 3, width, h * 3)); + + // y axis + double w = (width - 20d) / 2d; + g.draw(new Line2D.Double(w + 20, 0, w + 20, height - 20)); + w = w / 2; + g.draw(new Line2D.Double(w + 20, 0, w + 20, height - 20)); + g.draw(new Line2D.Double(w * 3 + 20, 0, w * 3 + 20, height - 20)); + + g.drawString("0", 10, height - 5); + g.drawString("50%", (width - 20) / 2 + 10, height - 5); + g.drawString(stigmata.getMessages().get("similarity.label"), width - 60, height - 5); + g.drawString("50%", 0, (height - 20) / 2); + } + + private void initializeData(){ + maxFrequency = 0; + for(int i = 0; i <= 100; i++){ + Integer frequency = distributions.get(new Integer(i)); + if(frequency == null){ + frequency = new Integer(0); + distributions.put(new Integer(i), frequency); + } + if(maxFrequency < frequency.intValue()){ + maxFrequency = frequency.intValue(); + } + totalCount += frequency.intValue(); + } + } + + private void initializeLayouts(){ + image = new BufferedImage(300, 300, BufferedImage.TYPE_INT_ARGB); + + JPanel center = new JPanel(new FlowLayout(FlowLayout.CENTER)); + iconLabel = new JLabel(); + Box south = Box.createHorizontalBox(); + JButton storeImageButton = GUIUtility.createButton(stigmata.getMessages(), "savegraph"); + JButton switchColorButton = new JButton(new ChangeColorAction(stigmata, new ActionListener(){ + public void actionPerformed(ActionEvent e){ + ChangeColorAction action = (ChangeColorAction)e.getSource(); + if(action.isColorSelected()){ + drawGraph(action.getColor()); + } + } + })); + storeImageButton.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + storeGraphImage(); + } + }); + + setLayout(new BorderLayout()); + center.add(iconLabel = new JLabel()); + south.add(Box.createHorizontalGlue()); + south.add(switchColorButton); + south.add(Box.createHorizontalGlue()); + south.add(storeImageButton); + south.add(Box.createHorizontalGlue()); + + add(center, BorderLayout.CENTER); + add(south, BorderLayout.SOUTH); + } + + private void storeGraphImage(){ + String[] exts = getSupportedFormats(); + File file = stigmata.getSaveFile( + exts, stigmata.getMessages().get("savegraph.description") + ); + try{ + if(file != null){ + String format = file.getName(); + format = format.substring(format.lastIndexOf('.') + 1); + + ImageIO.write(image, format, file); + } + } catch(IOException e){ + JOptionPane.showMessageDialog( + this, + stigmata.getMessages().get("error.io", e.getMessage()), + stigmata.getMessages().get("error.dialog.title"), + JOptionPane.ERROR_MESSAGE + ); + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/Coordinate.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/Coordinate.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/Coordinate.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/Coordinate.java index 4902154..7f42759 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/Coordinate.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/Coordinate.java @@ -1,108 +1,108 @@ -package jp.naist.se.stigmata.ui.swing.mds; - -/* - * $Id$ - */ - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class Coordinate{ - private double x, y, z; - private String label; - private String showName; - private int groupId = 0; - - public Coordinate(String label, double x, double y){ - this(label, shortenLabel(label), x, y, Double.NaN); - } - - public Coordinate(String label, double x, double y, double z){ - this(label, shortenLabel(label), x, y, z); - } - - public Coordinate(String label, String showName, double x, double y){ - this(label, showName, x, y, Double.NaN); - } - - public Coordinate(String label, String showName, double x, double y, double z){ - this.label = label; - this.showName = showName; - this.x = x; - this.y = y; - this.z = z; - } - - public String toString(){ - return String.format("%s[%d] (%g, %g)", getLabel(), getGroupId(), getX(), getY()); - } - - public int getGroupId(){ - return groupId; - } - - public void setGroupId(int groupId){ - this.groupId = groupId; - } - - public String getLabel(){ - return label; - } - - public void setLabel(String label){ - this.label = label; - } - - public String getShowName(){ - return showName; - } - - public void setShowName(String showName){ - this.showName = showName; - } - - public double getX(){ - return x; - } - - public void setX(double x){ - this.x = x; - } - - public double getY(){ - return y; - } - - public void setY(double y){ - this.y = y; - } - - public double getZ(){ - return z; - } - - public void setZ(double z){ - this.z = z; - } - - private static String shortenLabel(String label){ - int index = label.lastIndexOf('/'); - if(index < 0){ - index = label.lastIndexOf('\\'); - } - int firstIndex = label.indexOf('.'); - int lastIndex = label.lastIndexOf('.'); - int length = label.length(); - String returnValue = label; - - if(index < 0 && (firstIndex != lastIndex && lastIndex != (length - 1))){ - index = lastIndex; - returnValue = label.substring(index + 1); - if("jar".equals(returnValue)){ - returnValue = label; - } - } - return returnValue; - } -} +package jp.sourceforge.stigmata.ui.swing.mds; + +/* + * $Id$ + */ + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class Coordinate{ + private double x, y, z; + private String label; + private String showName; + private int groupId = 0; + + public Coordinate(String label, double x, double y){ + this(label, shortenLabel(label), x, y, Double.NaN); + } + + public Coordinate(String label, double x, double y, double z){ + this(label, shortenLabel(label), x, y, z); + } + + public Coordinate(String label, String showName, double x, double y){ + this(label, showName, x, y, Double.NaN); + } + + public Coordinate(String label, String showName, double x, double y, double z){ + this.label = label; + this.showName = showName; + this.x = x; + this.y = y; + this.z = z; + } + + public String toString(){ + return String.format("%s[%d] (%g, %g)", getLabel(), getGroupId(), getX(), getY()); + } + + public int getGroupId(){ + return groupId; + } + + public void setGroupId(int groupId){ + this.groupId = groupId; + } + + public String getLabel(){ + return label; + } + + public void setLabel(String label){ + this.label = label; + } + + public String getShowName(){ + return showName; + } + + public void setShowName(String showName){ + this.showName = showName; + } + + public double getX(){ + return x; + } + + public void setX(double x){ + this.x = x; + } + + public double getY(){ + return y; + } + + public void setY(double y){ + this.y = y; + } + + public double getZ(){ + return z; + } + + public void setZ(double z){ + this.z = z; + } + + private static String shortenLabel(String label){ + int index = label.lastIndexOf('/'); + if(index < 0){ + index = label.lastIndexOf('\\'); + } + int firstIndex = label.indexOf('.'); + int lastIndex = label.lastIndexOf('.'); + int length = label.length(); + String returnValue = label; + + if(index < 0 && (firstIndex != lastIndex && lastIndex != (length - 1))){ + index = lastIndex; + returnValue = label.substring(index + 1); + if("jar".equals(returnValue)){ + returnValue = label; + } + } + return returnValue; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/GeometoryType.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/GeometoryType.java similarity index 85% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/GeometoryType.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/GeometoryType.java index a30e820..5ee2d2c 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/GeometoryType.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/GeometoryType.java @@ -1,29 +1,29 @@ -package jp.naist.se.stigmata.ui.swing.mds; - -/* - * $Id$ - */ - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public enum GeometoryType{ - RECTANGLE, - UPPER_TRIANGLE, - CIRCLE, - XMARK, - RHOMBUS, - DOWNER_TRIANGLE, - FILLED_RECTANGLE, - CROSS, - FILLED_UPPER_TRIANGLE, - FILLED_CIRCLE, - FILLED_RHOMBUS, - STAR, - FILLED_DOWNER_TRIANGLE; - - public static int getMaxGroupCount(){ - return FILLED_DOWNER_TRIANGLE.ordinal(); - } -} +package jp.sourceforge.stigmata.ui.swing.mds; + +/* + * $Id$ + */ + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public enum GeometoryType{ + RECTANGLE, + UPPER_TRIANGLE, + CIRCLE, + XMARK, + RHOMBUS, + DOWNER_TRIANGLE, + FILLED_RECTANGLE, + CROSS, + FILLED_UPPER_TRIANGLE, + FILLED_CIRCLE, + FILLED_RHOMBUS, + STAR, + FILLED_DOWNER_TRIANGLE; + + public static int getMaxGroupCount(){ + return FILLED_DOWNER_TRIANGLE.ordinal(); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/LabelMap.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/LabelMap.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/LabelMap.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/LabelMap.java index cc6c926..57863f6 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/LabelMap.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/LabelMap.java @@ -1,116 +1,116 @@ -package jp.naist.se.stigmata.ui.swing.mds; -/* - * $Id$ - */ - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -class LabelMap{ - private List labels = new ArrayList(); - private Map groups = new HashMap(); - private Map gids = new HashMap(); - private boolean groupEnabled = true; - - public LabelMap(){ - gids.put("", 0); - } - - public LabelMap(String[] labels){ - this(); - for(String label: labels){ - addLabel(label); - } - } - - public boolean isAvailableLabel(int index){ - return index >= 0 && index < labels.size(); - } - - public void setGroupEnabled(boolean flag){ - this.groupEnabled = flag; - } - - public boolean isGroupEnabled(){ - return groupEnabled && getGroupCount() < GeometoryType.getMaxGroupCount(); - } - - public void addLabel(String label){ - labels.add(label); - } - - public String getLabel(int index){ - return labels.get(index); - } - - public void setGroup(String label, String groupLabel){ - groups.put(label, groupLabel); - if(gids.get(groupLabel) == null){ - gids.put(groupLabel, gids.size()); - } - } - - public String getGroup(String label){ - String group = groups.get(label); - if(group == null){ - group = ""; - } - return group; - } - - public int getGroupIdFromElementName(String label){ - return getGroupId(groups.get(label)); - } - - public int getGroupId(String groupLabel){ - Integer i = new Integer(0); - if(isGroupEnabled()){ - i = gids.get(groupLabel); - if(i == null){ - i = new Integer(0); - } - } - return i; - } - - public int getGroupCount(){ - return gids.size(); - } - - public String[] getGroupNames(){ - String[] names = new String[gids.size()]; - int index = 0; - for(String name: gids.keySet()){ - names[index] = name; - index++; - } - - return names; - } - - public synchronized int getGroupElementCount(String group){ - int count = 0; - for(Map.Entry entry: groups.entrySet()){ - if(group.equals(entry.getValue())){ - count++; - } - } - return count; - } - - public synchronized String[] getGroupElements(String group){ - List elements = new ArrayList(); - for(Map.Entry entry: groups.entrySet()){ - if(group.equals(entry.getValue())){ - elements.add(entry.getKey()); - } - } - return elements.toArray(new String[elements.size()]); - } -} +package jp.sourceforge.stigmata.ui.swing.mds; +/* + * $Id$ + */ + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +class LabelMap{ + private List labels = new ArrayList(); + private Map groups = new HashMap(); + private Map gids = new HashMap(); + private boolean groupEnabled = true; + + public LabelMap(){ + gids.put("", 0); + } + + public LabelMap(String[] labels){ + this(); + for(String label: labels){ + addLabel(label); + } + } + + public boolean isAvailableLabel(int index){ + return index >= 0 && index < labels.size(); + } + + public void setGroupEnabled(boolean flag){ + this.groupEnabled = flag; + } + + public boolean isGroupEnabled(){ + return groupEnabled && getGroupCount() < GeometoryType.getMaxGroupCount(); + } + + public void addLabel(String label){ + labels.add(label); + } + + public String getLabel(int index){ + return labels.get(index); + } + + public void setGroup(String label, String groupLabel){ + groups.put(label, groupLabel); + if(gids.get(groupLabel) == null){ + gids.put(groupLabel, gids.size()); + } + } + + public String getGroup(String label){ + String group = groups.get(label); + if(group == null){ + group = ""; + } + return group; + } + + public int getGroupIdFromElementName(String label){ + return getGroupId(groups.get(label)); + } + + public int getGroupId(String groupLabel){ + Integer i = new Integer(0); + if(isGroupEnabled()){ + i = gids.get(groupLabel); + if(i == null){ + i = new Integer(0); + } + } + return i; + } + + public int getGroupCount(){ + return gids.size(); + } + + public String[] getGroupNames(){ + String[] names = new String[gids.size()]; + int index = 0; + for(String name: gids.keySet()){ + names[index] = name; + index++; + } + + return names; + } + + public synchronized int getGroupElementCount(String group){ + int count = 0; + for(Map.Entry entry: groups.entrySet()){ + if(group.equals(entry.getValue())){ + count++; + } + } + return count; + } + + public synchronized String[] getGroupElements(String group){ + List elements = new ArrayList(); + for(Map.Entry entry: groups.entrySet()){ + if(group.equals(entry.getValue())){ + elements.add(entry.getKey()); + } + } + return elements.toArray(new String[elements.size()]); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSGraphPanel.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSGraphPanel.java similarity index 88% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSGraphPanel.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSGraphPanel.java index 0ce0ff3..a873acd 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSGraphPanel.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSGraphPanel.java @@ -1,200 +1,200 @@ -package jp.naist.se.stigmata.ui.swing.mds; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ComponentAdapter; -import java.awt.event.ComponentEvent; -import java.net.URL; - -import javax.swing.Action; -import javax.swing.Box; -import javax.swing.JCheckBox; -import javax.swing.JComboBox; -import javax.swing.JLabel; -import javax.swing.JPanel; - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ComparisonPair; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.result.SingleExtractionResultSet; -import jp.naist.se.stigmata.ui.swing.ClippedLRListCellRenderer; -import jp.naist.se.stigmata.ui.swing.GUIUtility; -import jp.naist.se.stigmata.ui.swing.PopupButton; -import jp.naist.se.stigmata.ui.swing.StigmataFrame; -import jp.naist.se.stigmata.ui.swing.actions.ChangeColorAction; -import jp.naist.se.stigmata.ui.swing.actions.SaveAction; -import jp.naist.se.stigmata.ui.swing.mds.mark.DrawerFactory; -import jp.sourceforge.talisman.i18n.Messages; -import Jama.Matrix; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class MDSGraphPanel extends JPanel{ - private static final long serialVersionUID = -7256554014379112897L; - - private StigmataFrame stigmata; - private BirthmarkSet[] set; - private BirthmarkContext context; - private LabelMap labels; - private MDSGraphViewer viewer; - - public MDSGraphPanel(StigmataFrame stigmata, BirthmarkSet[] set, BirthmarkContext context){ - this.stigmata = stigmata; - this.context = context; - this.set = set; - - double[][] matrix = initData(set, context); - initLayouts(matrix); - } - - private double[][] initData(BirthmarkSet[] set, BirthmarkContext context){ - labels = new LabelMap(); - double[][] matrix = new double[set.length][set.length]; - - for(int i = 0; i < set.length; i++){ - for(int j = 0; j <= i; j++){ - ComparisonPair pair = new ComparisonPair(set[i], set[j], context); - matrix[i][j] = 1d - pair.calculateSimilarity(); - if(i != j){ - matrix[j][i] = matrix[i][j]; - } - } - String className = set[i].getName(); - labels.addLabel(className); - String groupName = getGroupName(set[i].getLocation()); - labels.setGroup(className, groupName); - } - return matrix; - } - - private String getGroupName(URL location){ - String url = location.toString(); - if(url.startsWith("jar:")){ - url = url.substring("jar:".length(), url.lastIndexOf('!')); - } - return url; - } - - /** - * This method must called after - * {@link #initData(BirthmarkSet[], BirthmarkEnvironment) initData}. - * Because this method uses calculated value in initData method. - */ - private void initLayouts(double[][] matrix){ - final Messages messages = stigmata.getMessages(); - viewer = new MDSGraphViewer(stigmata.getMessages(), new MDSMethod(new Matrix(matrix)), labels); - viewer.setShowLabel(true); - - viewer.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - String c = e.getActionCommand(); - for(int i = 0; i < set.length; i++){ - if(c.equals(set[i].getName())){ - ExtractionResultSet ers = new SingleExtractionResultSet(context, set[i]); - stigmata.showExtractionResult(ers); - } - } - } - }); - JCheckBox check = new JCheckBox(stigmata.getMessages().get("showlabel.button.label"), true); - check.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - JCheckBox c = (JCheckBox)e.getSource(); - viewer.setShowLabel(c.isSelected()); - } - }); - - Action pointColorAction = new ChangeColorAction( - "updatecolor", stigmata, Color.BLACK, new ActionListener(){ - public void actionPerformed(ActionEvent e){ - ChangeColorAction action = (ChangeColorAction)e.getSource(); - viewer.setPointColor(action.getColor()); - } - }); - Action overColorAction = new ChangeColorAction( - "updateovercolor", stigmata, Color.BLUE, new ActionListener(){ - public void actionPerformed(ActionEvent e){ - ChangeColorAction action = (ChangeColorAction)e.getSource(); - viewer.setOverColor(action.getColor()); - } - }); - SaveAction saveMDSAction = new SaveAction(stigmata, new MDSImageExporter(viewer)); - saveMDSAction.setExtensions(stigmata.getMessages().getArray("savemds.extensions")); - saveMDSAction.setDescrpition(stigmata.getMessages().get("savemds.description")); - - SaveAction saveCoordinate = new SaveAction(stigmata, new MDSPointsLocationExporter(viewer)); - saveCoordinate.setExtensions(stigmata.getMessages().getArray("savelocation.extensions")); - saveCoordinate.setDescrpition(stigmata.getMessages().get("savelocation.description")); - - PopupButton colorButton = new PopupButton( - GUIUtility.createButton(messages, "updatecolor", pointColorAction) - ); - colorButton.addMenuItem(GUIUtility.createJMenuItem(messages, "updateovercolor", overColorAction)); - PopupButton saveButton = new PopupButton( - GUIUtility.createButton(messages, "savemds", saveMDSAction) - ); - saveButton.addMenuItem(GUIUtility.createJMenuItem(messages, "savelocation", saveCoordinate)); - - JLabel numberOfDotsLabel = new JLabel(String.valueOf(set.length)); - GUIUtility.decorateJComponent(messages, numberOfDotsLabel, "mdsgraph.count"); - // set the number of dots of each groups - JComboBox numberOfGroupsLabelCombo = new JComboBox(); - GeometoryType[] types = GeometoryType.values(); - DrawerFactory factory = DrawerFactory.getInstance(); - for(String name: labels.getGroupNames()){ - int count = labels.getGroupElementCount(name); - if(count != 0){ - ClippedLRListCellRenderer.LRItem item = new ClippedLRListCellRenderer.LRItem(name, count); - item.setIcon(factory.createIcon(types[labels.getGroupId(name)])); - numberOfGroupsLabelCombo.addItem(item); - } - } - numberOfGroupsLabelCombo.setEditable(false); - Dimension dim = new Dimension(100, numberOfGroupsLabelCombo.getPreferredSize().height); - numberOfGroupsLabelCombo.setRenderer(new ClippedLRListCellRenderer(dim, 50)); - GUIUtility.decorateJComponent(messages, numberOfGroupsLabelCombo, "mdsgraph.group"); - - JPanel north = new JPanel(new GridLayout(1, 2)); - north.add(numberOfDotsLabel); - north.add(numberOfGroupsLabelCombo); - - Box south = Box.createHorizontalBox(); - south.add(Box.createHorizontalGlue()); - south.add(saveButton); - south.add(Box.createHorizontalGlue()); - south.add(colorButton); - south.add(Box.createHorizontalGlue()); - south.add(check); - south.add(Box.createHorizontalGlue()); - - JPanel center = new JPanel(new FlowLayout(FlowLayout.CENTER)); - center.addComponentListener(new ComponentAdapter(){ - @Override - public void componentResized(ComponentEvent e){ - Dimension d = e.getComponent().getSize(); - viewer.setSize(d.width - 10, d.height - 10); - } - }); - setLayout(new BorderLayout()); - - center.add(viewer); - - add(north, BorderLayout.NORTH); - add(center, BorderLayout.CENTER); - add(south, BorderLayout.SOUTH); - } -} +package jp.sourceforge.stigmata.ui.swing.mds; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; +import java.net.URL; + +import javax.swing.Action; +import javax.swing.Box; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JPanel; + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ComparisonPair; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.result.SingleExtractionResultSet; +import jp.sourceforge.stigmata.ui.swing.ClippedLRListCellRenderer; +import jp.sourceforge.stigmata.ui.swing.GUIUtility; +import jp.sourceforge.stigmata.ui.swing.PopupButton; +import jp.sourceforge.stigmata.ui.swing.StigmataFrame; +import jp.sourceforge.stigmata.ui.swing.actions.ChangeColorAction; +import jp.sourceforge.stigmata.ui.swing.actions.SaveAction; +import jp.sourceforge.stigmata.ui.swing.mds.mark.DrawerFactory; +import jp.sourceforge.talisman.i18n.Messages; +import Jama.Matrix; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class MDSGraphPanel extends JPanel{ + private static final long serialVersionUID = -7256554014379112897L; + + private StigmataFrame stigmata; + private BirthmarkSet[] set; + private BirthmarkContext context; + private LabelMap labels; + private MDSGraphViewer viewer; + + public MDSGraphPanel(StigmataFrame stigmata, BirthmarkSet[] set, BirthmarkContext context){ + this.stigmata = stigmata; + this.context = context; + this.set = set; + + double[][] matrix = initData(set, context); + initLayouts(matrix); + } + + private double[][] initData(BirthmarkSet[] set, BirthmarkContext context){ + labels = new LabelMap(); + double[][] matrix = new double[set.length][set.length]; + + for(int i = 0; i < set.length; i++){ + for(int j = 0; j <= i; j++){ + ComparisonPair pair = new ComparisonPair(set[i], set[j], context); + matrix[i][j] = 1d - pair.calculateSimilarity(); + if(i != j){ + matrix[j][i] = matrix[i][j]; + } + } + String className = set[i].getName(); + labels.addLabel(className); + String groupName = getGroupName(set[i].getLocation()); + labels.setGroup(className, groupName); + } + return matrix; + } + + private String getGroupName(URL location){ + String url = location.toString(); + if(url.startsWith("jar:")){ + url = url.substring("jar:".length(), url.lastIndexOf('!')); + } + return url; + } + + /** + * This method must called after + * {@link #initData(BirthmarkSet[], BirthmarkEnvironment) initData}. + * Because this method uses calculated value in initData method. + */ + private void initLayouts(double[][] matrix){ + final Messages messages = stigmata.getMessages(); + viewer = new MDSGraphViewer(stigmata.getMessages(), new MDSMethod(new Matrix(matrix)), labels); + viewer.setShowLabel(true); + + viewer.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + String c = e.getActionCommand(); + for(int i = 0; i < set.length; i++){ + if(c.equals(set[i].getName())){ + ExtractionResultSet ers = new SingleExtractionResultSet(context, set[i]); + stigmata.showExtractionResult(ers); + } + } + } + }); + JCheckBox check = new JCheckBox(stigmata.getMessages().get("showlabel.button.label"), true); + check.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + JCheckBox c = (JCheckBox)e.getSource(); + viewer.setShowLabel(c.isSelected()); + } + }); + + Action pointColorAction = new ChangeColorAction( + "updatecolor", stigmata, Color.BLACK, new ActionListener(){ + public void actionPerformed(ActionEvent e){ + ChangeColorAction action = (ChangeColorAction)e.getSource(); + viewer.setPointColor(action.getColor()); + } + }); + Action overColorAction = new ChangeColorAction( + "updateovercolor", stigmata, Color.BLUE, new ActionListener(){ + public void actionPerformed(ActionEvent e){ + ChangeColorAction action = (ChangeColorAction)e.getSource(); + viewer.setOverColor(action.getColor()); + } + }); + SaveAction saveMDSAction = new SaveAction(stigmata, new MDSImageExporter(viewer)); + saveMDSAction.setExtensions(stigmata.getMessages().getArray("savemds.extensions")); + saveMDSAction.setDescrpition(stigmata.getMessages().get("savemds.description")); + + SaveAction saveCoordinate = new SaveAction(stigmata, new MDSPointsLocationExporter(viewer)); + saveCoordinate.setExtensions(stigmata.getMessages().getArray("savelocation.extensions")); + saveCoordinate.setDescrpition(stigmata.getMessages().get("savelocation.description")); + + PopupButton colorButton = new PopupButton( + GUIUtility.createButton(messages, "updatecolor", pointColorAction) + ); + colorButton.addMenuItem(GUIUtility.createJMenuItem(messages, "updateovercolor", overColorAction)); + PopupButton saveButton = new PopupButton( + GUIUtility.createButton(messages, "savemds", saveMDSAction) + ); + saveButton.addMenuItem(GUIUtility.createJMenuItem(messages, "savelocation", saveCoordinate)); + + JLabel numberOfDotsLabel = new JLabel(String.valueOf(set.length)); + GUIUtility.decorateJComponent(messages, numberOfDotsLabel, "mdsgraph.count"); + // set the number of dots of each groups + JComboBox numberOfGroupsLabelCombo = new JComboBox(); + GeometoryType[] types = GeometoryType.values(); + DrawerFactory factory = DrawerFactory.getInstance(); + for(String name: labels.getGroupNames()){ + int count = labels.getGroupElementCount(name); + if(count != 0){ + ClippedLRListCellRenderer.LRItem item = new ClippedLRListCellRenderer.LRItem(name, count); + item.setIcon(factory.createIcon(types[labels.getGroupId(name)])); + numberOfGroupsLabelCombo.addItem(item); + } + } + numberOfGroupsLabelCombo.setEditable(false); + Dimension dim = new Dimension(100, numberOfGroupsLabelCombo.getPreferredSize().height); + numberOfGroupsLabelCombo.setRenderer(new ClippedLRListCellRenderer(dim, 50)); + GUIUtility.decorateJComponent(messages, numberOfGroupsLabelCombo, "mdsgraph.group"); + + JPanel north = new JPanel(new GridLayout(1, 2)); + north.add(numberOfDotsLabel); + north.add(numberOfGroupsLabelCombo); + + Box south = Box.createHorizontalBox(); + south.add(Box.createHorizontalGlue()); + south.add(saveButton); + south.add(Box.createHorizontalGlue()); + south.add(colorButton); + south.add(Box.createHorizontalGlue()); + south.add(check); + south.add(Box.createHorizontalGlue()); + + JPanel center = new JPanel(new FlowLayout(FlowLayout.CENTER)); + center.addComponentListener(new ComponentAdapter(){ + @Override + public void componentResized(ComponentEvent e){ + Dimension d = e.getComponent().getSize(); + viewer.setSize(d.width - 10, d.height - 10); + } + }); + setLayout(new BorderLayout()); + + center.add(viewer); + + add(north, BorderLayout.NORTH); + add(center, BorderLayout.CENTER); + add(south, BorderLayout.SOUTH); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSGraphViewer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSGraphViewer.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSGraphViewer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSGraphViewer.java index bf34dc2..0f96d5d 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSGraphViewer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSGraphViewer.java @@ -1,294 +1,294 @@ -package jp.naist.se.stigmata.ui.swing.mds; - -/* - * $Id$ - */ - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Point; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JLayeredPane; - -import jp.naist.se.stigmata.ui.swing.mds.mark.DrawerFactory; -import jp.sourceforge.talisman.i18n.Messages; -import Jama.Matrix; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class MDSGraphViewer extends JLayeredPane{ - private static final long serialVersionUID = -9196070059428975126L; - private static final int POINT_LAYER = DEFAULT_LAYER; - private static final int LABEL_LAYER = DEFAULT_LAYER; - - private Messages messages; - private MDSMethod mds; - private List plots = new ArrayList(); - private Color overColor = PointComponent.DEFAULT_OVER_COLOR; - private Color pointColor = getForeground(); - private boolean sameAspect = false; - private boolean showLabel = false; - private List points = new ArrayList(); - private List listeners = new ArrayList(); - - public MDSGraphViewer(Messages messages, MDSMethod mds){ - this(messages, mds, null); - } - - public MDSGraphViewer(Messages messages, MDSMethod mds, LabelMap labels){ - this.messages = messages; - this.mds = mds; - - setSize(500, 500); - setMinimumSize(getSize()); - initLayouts(labels); - } - - public void addActionListener(ActionListener listener){ - listeners.add(listener); - } - - public void removeActionListener(ActionListener listener){ - listeners.remove(listener); - } - - public Messages getMessages(){ - return messages; - } - - public void setMessages(Messages messages){ - if(messages == null){ - throw new NullPointerException(); - } - this.messages = messages; - } - - @Override - public void setSize(int width, int height){ - if(width < height) height = width; - else width = height; - super.setSize(width, height); - setPreferredSize(getSize()); - } - - public Iterator coordinates(){ - return plots.iterator(); - } - - public int getPointCount(){ - return plots.size(); - } - - public Coordinate getCoordinate(int index){ - return plots.get(index); - } - - public boolean isShowLabel(){ - return showLabel; - } - - public void setShowLabel(boolean showLabel){ - this.showLabel = showLabel; - repaint(); - } - - public boolean isSameAspect(){ - return sameAspect; - } - - public void setSameAspect(boolean sameAspect){ - this.sameAspect = sameAspect; - repaint(); - } - - public Color getOverColor(){ - return overColor; - } - - public void setOverColor(Color color){ - this.overColor = color; - for(int i = 0; i < getComponentCount(); i++){ - Component c = getComponent(i); - if(c instanceof PointComponent){ - ((PointComponent)c).setOverColor(color); - } - } - } - - public Color getPointColor(){ - return pointColor; - } - - public void setPointColor(Color color){ - this.pointColor = color; - for(int i = 0; i < getComponentCount(); i++){ - Component c = getComponent(i); - if(c instanceof PointComponent){ - ((PointComponent)c).setForeground(color); - } - } - } - - @Override - public void paintComponent(Graphics g){ - super.paintComponent(g); - - Dimension d = getSize(); - - g.setColor(Color.GRAY); - - g.drawLine(0, 0, d.width - 1, 0); - g.drawLine(d.width - 1, 0, d.width - 1, d.height - 1); - g.drawLine(d.width / 2, d.height, d.width / 2, 0); - - g.drawLine(0, 0, 0, d.height - 1); - g.drawLine(0, d.height - 1, d.width - 1, d.height - 1); - g.drawLine(0, d.height / 2, d.width, d.height / 2); - - updatePointComponents(d); - } - - protected void fireEvent(PointComponent p){ - ActionEvent e = new ActionEvent(this, 0, p.getLabel()); - for(ActionListener l: listeners){ - l.actionPerformed(e); - } - } - - private void initLayouts(LabelMap labels){ - double[] x = mds.getCoordinate(0); - double[] y = mds.getCoordinate(1); - double[] z = mds.getCoordinate(2); - - double max = 0d; - for(int i = 0; i < x.length; i++){ - if(max < Math.abs(x[i])) max = Math.abs(x[i]); - } - for(int i = 0; i < y.length; i++){ - if(max < Math.abs(y[i])) max = Math.abs(y[i]); - } - for(int i = 0; i < z.length; i++){ - if(max < Math.abs(z[i])) max = Math.abs(z[i]); - } - - int w = getWidth(); - int h = getHeight(); - - int ww = w - 20; - int hh = h - 20; - DrawerFactory factory = DrawerFactory.getInstance(); - GeometoryType[] types = GeometoryType.values(); - ActionListener clickedListener = new ActionListener(){ - public void actionPerformed(ActionEvent e){ - fireEvent((PointComponent)e.getSource()); - } - }; - - for(int i = 0; i < x.length; i++){ - double[] xy = new double[] { - x[i] / max, - y[i] / max, z[i] / max, }; - double xx = xy[0] * ww / 2 + (w / 2); - double yy = xy[1] * hh / 2 + (h / 2); - String label = String.valueOf(i); - if(labels != null && labels.isAvailableLabel(i)){ - label = labels.getLabel(i); - } - Coordinate coordinate = new Coordinate(label, xy[0], xy[1], xy[2]); - if(labels != null && labels.isGroupEnabled()){ - coordinate.setGroupId(labels.getGroupIdFromElementName(coordinate.getLabel())); - } - plots.add(coordinate); - - PointComponent p = new PointComponent( - label, x[i], y[i], factory.create(types[coordinate.getGroupId()]) - ); - p.addActionListener(clickedListener); - add(p, POINT_LAYER); - JLabel l = new JLabel(coordinate.getShowName()); - add(l, LABEL_LAYER); - p.setShowLabel(l); - - Dimension size = p.getSize(); - p.setLocation( - new Point((int)(xx - (size.getWidth() / 2d)), (int)(yy - (size.getHeight() / 2d))) - ); - points.add(p); - - l.setSize(l.getPreferredSize()); - Point pcp = p.getLocation(); - Dimension dsize = l.getSize(); - l.setLocation(new Point(pcp.x - (dsize.width / 2), pcp.y - 15)); - l.setVisible(isShowLabel()); - } - } - - private void updatePointComponents(Dimension d){ - int index = 0; - double width = d.getWidth(); - double height = d.getHeight(); - if(isSameAspect()){ - if(width < height) height = width; - else width = height; - } - - for(PointComponent pc: points){ - updateLocation(pc, plots.get(index), width, height, d); - JLabel label = pc.getShowLabel(); - Point pcp = pc.getLocation(); - Dimension dsize = label.getSize(); - label.setLocation(new Point(pcp.x - (dsize.width / 2), pcp.y - 15)); - label.setVisible(isShowLabel()); - index++; - } - } - - private void updateLocation(PointComponent c, Coordinate coordinate, double width, double height, Dimension d){ - double xx = coordinate.getX() * (width - 20d) / 2d + (d.getWidth() / 2d); - double yy = coordinate.getY() * (height - 20d) / 2d + (d.getHeight() / 2d); - Dimension size = c.getSize(); - c.setLocation( - new Point((int)(xx - (size.getWidth() / 2d)), (int)(yy - (size.getHeight() / 2))) - ); - } - - public static void main(String[] args) throws Exception{ - MDSMethod mds; - LabelMap labels = new LabelMap(new String[] { - "Atlanta", "Chicago", "Denver", "Houston", "Los Angeles", "Miami", - "New York", "San Francisco", "Seattle", "Washington D.C.", - }); - Matrix matrix = new Matrix(new double[][]{ - { 0, 587, 1212, 701, 1936, 604, 748, 2139, 2182, 543, }, - { 587, 0, 920, 940, 1745, 1188, 713, 1858, 1737, 597, }, - { 1212, 920, 0, 879, 831, 1726, 1631, 949, 1021, 1494, }, - { 701, 940, 879, 0, 1374, 968, 1420, 1645, 1891, 1220, }, - { 1936, 1745, 831, 1374, 0, 2339, 2451, 347, 959, 2300, }, - { 604, 1188, 1726, 968, 2339, 0, 1092, 2592, 2734, 923, }, - { 748, 713, 1631, 1420, 2451, 1092, 0, 2571, 2408, 205, }, - { 2139, 1858, 949, 1645, 347, 2594, 2571, 0, 678, 2442, }, - { 2182, 1737, 1021, 1891, 959, 2734, 2408, 678, 0, 2329, }, - { 543, 597, 1494, 1220, 2300, 923, 205, 2442, 2329, 0, }, - }); - mds = new MDSMethod(matrix); - - mds.getCoordinateMatrix().print(8, 4); - MDSGraphViewer viewer = new MDSGraphViewer(new Messages("resources.messages"), mds, labels); - viewer.setShowLabel(true); - JFrame f = new JFrame(); - f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - f.getContentPane().add(viewer, BorderLayout.CENTER); - f.pack(); - f.setVisible(true); - } -} +package jp.sourceforge.stigmata.ui.swing.mds; + +/* + * $Id$ + */ + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JLayeredPane; + +import jp.sourceforge.stigmata.ui.swing.mds.mark.DrawerFactory; +import jp.sourceforge.talisman.i18n.Messages; +import Jama.Matrix; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class MDSGraphViewer extends JLayeredPane{ + private static final long serialVersionUID = -9196070059428975126L; + private static final int POINT_LAYER = DEFAULT_LAYER; + private static final int LABEL_LAYER = DEFAULT_LAYER; + + private Messages messages; + private MDSMethod mds; + private List plots = new ArrayList(); + private Color overColor = PointComponent.DEFAULT_OVER_COLOR; + private Color pointColor = getForeground(); + private boolean sameAspect = false; + private boolean showLabel = false; + private List points = new ArrayList(); + private List listeners = new ArrayList(); + + public MDSGraphViewer(Messages messages, MDSMethod mds){ + this(messages, mds, null); + } + + public MDSGraphViewer(Messages messages, MDSMethod mds, LabelMap labels){ + this.messages = messages; + this.mds = mds; + + setSize(500, 500); + setMinimumSize(getSize()); + initLayouts(labels); + } + + public void addActionListener(ActionListener listener){ + listeners.add(listener); + } + + public void removeActionListener(ActionListener listener){ + listeners.remove(listener); + } + + public Messages getMessages(){ + return messages; + } + + public void setMessages(Messages messages){ + if(messages == null){ + throw new NullPointerException(); + } + this.messages = messages; + } + + @Override + public void setSize(int width, int height){ + if(width < height) height = width; + else width = height; + super.setSize(width, height); + setPreferredSize(getSize()); + } + + public Iterator coordinates(){ + return plots.iterator(); + } + + public int getPointCount(){ + return plots.size(); + } + + public Coordinate getCoordinate(int index){ + return plots.get(index); + } + + public boolean isShowLabel(){ + return showLabel; + } + + public void setShowLabel(boolean showLabel){ + this.showLabel = showLabel; + repaint(); + } + + public boolean isSameAspect(){ + return sameAspect; + } + + public void setSameAspect(boolean sameAspect){ + this.sameAspect = sameAspect; + repaint(); + } + + public Color getOverColor(){ + return overColor; + } + + public void setOverColor(Color color){ + this.overColor = color; + for(int i = 0; i < getComponentCount(); i++){ + Component c = getComponent(i); + if(c instanceof PointComponent){ + ((PointComponent)c).setOverColor(color); + } + } + } + + public Color getPointColor(){ + return pointColor; + } + + public void setPointColor(Color color){ + this.pointColor = color; + for(int i = 0; i < getComponentCount(); i++){ + Component c = getComponent(i); + if(c instanceof PointComponent){ + ((PointComponent)c).setForeground(color); + } + } + } + + @Override + public void paintComponent(Graphics g){ + super.paintComponent(g); + + Dimension d = getSize(); + + g.setColor(Color.GRAY); + + g.drawLine(0, 0, d.width - 1, 0); + g.drawLine(d.width - 1, 0, d.width - 1, d.height - 1); + g.drawLine(d.width / 2, d.height, d.width / 2, 0); + + g.drawLine(0, 0, 0, d.height - 1); + g.drawLine(0, d.height - 1, d.width - 1, d.height - 1); + g.drawLine(0, d.height / 2, d.width, d.height / 2); + + updatePointComponents(d); + } + + protected void fireEvent(PointComponent p){ + ActionEvent e = new ActionEvent(this, 0, p.getLabel()); + for(ActionListener l: listeners){ + l.actionPerformed(e); + } + } + + private void initLayouts(LabelMap labels){ + double[] x = mds.getCoordinate(0); + double[] y = mds.getCoordinate(1); + double[] z = mds.getCoordinate(2); + + double max = 0d; + for(int i = 0; i < x.length; i++){ + if(max < Math.abs(x[i])) max = Math.abs(x[i]); + } + for(int i = 0; i < y.length; i++){ + if(max < Math.abs(y[i])) max = Math.abs(y[i]); + } + for(int i = 0; i < z.length; i++){ + if(max < Math.abs(z[i])) max = Math.abs(z[i]); + } + + int w = getWidth(); + int h = getHeight(); + + int ww = w - 20; + int hh = h - 20; + DrawerFactory factory = DrawerFactory.getInstance(); + GeometoryType[] types = GeometoryType.values(); + ActionListener clickedListener = new ActionListener(){ + public void actionPerformed(ActionEvent e){ + fireEvent((PointComponent)e.getSource()); + } + }; + + for(int i = 0; i < x.length; i++){ + double[] xy = new double[] { - x[i] / max, - y[i] / max, z[i] / max, }; + double xx = xy[0] * ww / 2 + (w / 2); + double yy = xy[1] * hh / 2 + (h / 2); + String label = String.valueOf(i); + if(labels != null && labels.isAvailableLabel(i)){ + label = labels.getLabel(i); + } + Coordinate coordinate = new Coordinate(label, xy[0], xy[1], xy[2]); + if(labels != null && labels.isGroupEnabled()){ + coordinate.setGroupId(labels.getGroupIdFromElementName(coordinate.getLabel())); + } + plots.add(coordinate); + + PointComponent p = new PointComponent( + label, x[i], y[i], factory.create(types[coordinate.getGroupId()]) + ); + p.addActionListener(clickedListener); + add(p, POINT_LAYER); + JLabel l = new JLabel(coordinate.getShowName()); + add(l, LABEL_LAYER); + p.setShowLabel(l); + + Dimension size = p.getSize(); + p.setLocation( + new Point((int)(xx - (size.getWidth() / 2d)), (int)(yy - (size.getHeight() / 2d))) + ); + points.add(p); + + l.setSize(l.getPreferredSize()); + Point pcp = p.getLocation(); + Dimension dsize = l.getSize(); + l.setLocation(new Point(pcp.x - (dsize.width / 2), pcp.y - 15)); + l.setVisible(isShowLabel()); + } + } + + private void updatePointComponents(Dimension d){ + int index = 0; + double width = d.getWidth(); + double height = d.getHeight(); + if(isSameAspect()){ + if(width < height) height = width; + else width = height; + } + + for(PointComponent pc: points){ + updateLocation(pc, plots.get(index), width, height, d); + JLabel label = pc.getShowLabel(); + Point pcp = pc.getLocation(); + Dimension dsize = label.getSize(); + label.setLocation(new Point(pcp.x - (dsize.width / 2), pcp.y - 15)); + label.setVisible(isShowLabel()); + index++; + } + } + + private void updateLocation(PointComponent c, Coordinate coordinate, double width, double height, Dimension d){ + double xx = coordinate.getX() * (width - 20d) / 2d + (d.getWidth() / 2d); + double yy = coordinate.getY() * (height - 20d) / 2d + (d.getHeight() / 2d); + Dimension size = c.getSize(); + c.setLocation( + new Point((int)(xx - (size.getWidth() / 2d)), (int)(yy - (size.getHeight() / 2))) + ); + } + + public static void main(String[] args) throws Exception{ + MDSMethod mds; + LabelMap labels = new LabelMap(new String[] { + "Atlanta", "Chicago", "Denver", "Houston", "Los Angeles", "Miami", + "New York", "San Francisco", "Seattle", "Washington D.C.", + }); + Matrix matrix = new Matrix(new double[][]{ + { 0, 587, 1212, 701, 1936, 604, 748, 2139, 2182, 543, }, + { 587, 0, 920, 940, 1745, 1188, 713, 1858, 1737, 597, }, + { 1212, 920, 0, 879, 831, 1726, 1631, 949, 1021, 1494, }, + { 701, 940, 879, 0, 1374, 968, 1420, 1645, 1891, 1220, }, + { 1936, 1745, 831, 1374, 0, 2339, 2451, 347, 959, 2300, }, + { 604, 1188, 1726, 968, 2339, 0, 1092, 2592, 2734, 923, }, + { 748, 713, 1631, 1420, 2451, 1092, 0, 2571, 2408, 205, }, + { 2139, 1858, 949, 1645, 347, 2594, 2571, 0, 678, 2442, }, + { 2182, 1737, 1021, 1891, 959, 2734, 2408, 678, 0, 2329, }, + { 543, 597, 1494, 1220, 2300, 923, 205, 2442, 2329, 0, }, + }); + mds = new MDSMethod(matrix); + + mds.getCoordinateMatrix().print(8, 4); + MDSGraphViewer viewer = new MDSGraphViewer(new Messages("resources.messages"), mds, labels); + viewer.setShowLabel(true); + JFrame f = new JFrame(); + f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + f.getContentPane().add(viewer, BorderLayout.CENTER); + f.pack(); + f.setVisible(true); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSImageExporter.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSImageExporter.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSImageExporter.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSImageExporter.java index 78e247f..e245cd9 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSImageExporter.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSImageExporter.java @@ -1,53 +1,53 @@ -package jp.naist.se.stigmata.ui.swing.mds; - -/* - * $Id$ - */ - -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics2D; -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.io.OutputStream; - -import javax.imageio.ImageIO; -import javax.swing.JOptionPane; -import javax.swing.SwingUtilities; - -import jp.naist.se.stigmata.ui.swing.UnsupportedFormatException; -import jp.naist.se.stigmata.utils.BinaryDataWritable; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class MDSImageExporter implements BinaryDataWritable{ - private MDSGraphViewer viewer; - - public MDSImageExporter(MDSGraphViewer viewer){ - this.viewer = viewer; - } - - public void writeBinaryData(OutputStream out, String format) - throws IOException, UnsupportedFormatException{ - Dimension size = viewer.getSize(); - BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_ARGB); - Graphics2D g = image.createGraphics(); - g.setColor(Color.WHITE); - g.fillRect(0, 0, size.width, size.height); - viewer.update(g); - - try{ - ImageIO.write(image, format, out); - out.flush(); - } catch(IOException e){ - JOptionPane.showMessageDialog( - SwingUtilities.getRoot(viewer), e.getMessage(), - viewer.getMessages().get("error.dialog.title"), - JOptionPane.WARNING_MESSAGE - ); - } - } - -} +package jp.sourceforge.stigmata.ui.swing.mds; + +/* + * $Id$ + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics2D; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.io.OutputStream; + +import javax.imageio.ImageIO; +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; + +import jp.sourceforge.stigmata.ui.swing.UnsupportedFormatException; +import jp.sourceforge.stigmata.utils.BinaryDataWritable; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class MDSImageExporter implements BinaryDataWritable{ + private MDSGraphViewer viewer; + + public MDSImageExporter(MDSGraphViewer viewer){ + this.viewer = viewer; + } + + public void writeBinaryData(OutputStream out, String format) + throws IOException, UnsupportedFormatException{ + Dimension size = viewer.getSize(); + BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = image.createGraphics(); + g.setColor(Color.WHITE); + g.fillRect(0, 0, size.width, size.height); + viewer.update(g); + + try{ + ImageIO.write(image, format, out); + out.flush(); + } catch(IOException e){ + JOptionPane.showMessageDialog( + SwingUtilities.getRoot(viewer), e.getMessage(), + viewer.getMessages().get("error.dialog.title"), + JOptionPane.WARNING_MESSAGE + ); + } + } + +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSMethod.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSMethod.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSMethod.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSMethod.java index 6be7fc3..c4638c5 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSMethod.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSMethod.java @@ -1,117 +1,117 @@ -package jp.naist.se.stigmata.ui.swing.mds; - -/* - * $Id$ - */ - -import Jama.EigenvalueDecomposition; -import Jama.Matrix; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class MDSMethod{ - private Matrix target; - private Matrix coordinate; - private Matrix eigenValues; - private Matrix eigenVectors; - private int[] indexes; - - public MDSMethod(Matrix matrix){ - this.target = matrix; - } - - protected Matrix getCenteredInnerProductMatrix(){ - Matrix centering = getCenteringMatrix(target.getColumnDimension()); - Matrix trans = centering.transpose(); - - return centering.times(target).times(trans).times(-1); - } - - public Matrix getEigenValues(){ - if(eigenValues == null){ - getCoordinateMatrix(); - } - return (Matrix)eigenValues.clone(); - } - - public Matrix getEigenVectors(){ - if(eigenVectors == null){ - getCoordinateMatrix(); - } - return (Matrix)eigenVectors.clone(); - } - - public double[] getCoordinate(int axis){ - if(coordinate == null){ - getCoordinateMatrix(); - } - double[] v = new double[coordinate.getRowDimension()]; - for(int i = 0; i < v.length; i++){ - v[i] = coordinate.get(i, indexes[axis]); - } - return v; - } - - public Matrix getCoordinateMatrix(){ - if(coordinate == null){ - Matrix mat = getCenteredInnerProductMatrix(); - EigenvalueDecomposition eigen = mat.eig(); - Matrix eigenVectors = eigen.getV(); - Matrix eigenValues = eigen.getD(); - Matrix coordinate = (Matrix)eigenVectors.clone(); - - int col = mat.getColumnDimension(); - int row = mat.getRowDimension(); - for(int i = 0; i < row; i++){ - for(int j = 0; j < col; j++){ - double v = coordinate.get(i, j); - v = v * Math.sqrt(eigenValues.get(j, j)); - coordinate.set(i, j, v); - } - } - sortValues(eigenValues); - this.coordinate = coordinate; - this.eigenVectors = eigenVectors; - this.eigenValues = eigenValues; - } - - return coordinate; - } - - protected static Matrix getCenteringMatrix(int n){ - Matrix matrix = Matrix.identity(n, n); - - for(int i = 0; i < n; i++){ - for(int j = 0; j < n; j++){ - matrix.set(i, j, matrix.get(i, j) - (1d / n)); - } - } - return matrix; - } - - private void sortValues(Matrix m){ - double[] v = new double[m.getColumnDimension()]; - int[] index = new int[v.length]; - for(int i = 0; i < v.length; i++){ - v[i] = m.get(i, i); - index[i] = i; - } - - for(int i = 0; i < v.length; i++){ - for(int j = i + 1; j < v.length; j++){ - if(Math.abs(v[i]) < Math.abs(v[j])){ - double tmpValue = v[j]; - v[j] = v[i]; - v[i] = tmpValue; - int tmpIndex = index[j]; - index[j] = index[i]; - index[i] = tmpIndex; - } - } - } - - indexes = index; - } -} +package jp.sourceforge.stigmata.ui.swing.mds; + +/* + * $Id$ + */ + +import Jama.EigenvalueDecomposition; +import Jama.Matrix; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class MDSMethod{ + private Matrix target; + private Matrix coordinate; + private Matrix eigenValues; + private Matrix eigenVectors; + private int[] indexes; + + public MDSMethod(Matrix matrix){ + this.target = matrix; + } + + protected Matrix getCenteredInnerProductMatrix(){ + Matrix centering = getCenteringMatrix(target.getColumnDimension()); + Matrix trans = centering.transpose(); + + return centering.times(target).times(trans).times(-1); + } + + public Matrix getEigenValues(){ + if(eigenValues == null){ + getCoordinateMatrix(); + } + return (Matrix)eigenValues.clone(); + } + + public Matrix getEigenVectors(){ + if(eigenVectors == null){ + getCoordinateMatrix(); + } + return (Matrix)eigenVectors.clone(); + } + + public double[] getCoordinate(int axis){ + if(coordinate == null){ + getCoordinateMatrix(); + } + double[] v = new double[coordinate.getRowDimension()]; + for(int i = 0; i < v.length; i++){ + v[i] = coordinate.get(i, indexes[axis]); + } + return v; + } + + public Matrix getCoordinateMatrix(){ + if(coordinate == null){ + Matrix mat = getCenteredInnerProductMatrix(); + EigenvalueDecomposition eigen = mat.eig(); + Matrix eigenVectors = eigen.getV(); + Matrix eigenValues = eigen.getD(); + Matrix coordinate = (Matrix)eigenVectors.clone(); + + int col = mat.getColumnDimension(); + int row = mat.getRowDimension(); + for(int i = 0; i < row; i++){ + for(int j = 0; j < col; j++){ + double v = coordinate.get(i, j); + v = v * Math.sqrt(eigenValues.get(j, j)); + coordinate.set(i, j, v); + } + } + sortValues(eigenValues); + this.coordinate = coordinate; + this.eigenVectors = eigenVectors; + this.eigenValues = eigenValues; + } + + return coordinate; + } + + protected static Matrix getCenteringMatrix(int n){ + Matrix matrix = Matrix.identity(n, n); + + for(int i = 0; i < n; i++){ + for(int j = 0; j < n; j++){ + matrix.set(i, j, matrix.get(i, j) - (1d / n)); + } + } + return matrix; + } + + private void sortValues(Matrix m){ + double[] v = new double[m.getColumnDimension()]; + int[] index = new int[v.length]; + for(int i = 0; i < v.length; i++){ + v[i] = m.get(i, i); + index[i] = i; + } + + for(int i = 0; i < v.length; i++){ + for(int j = i + 1; j < v.length; j++){ + if(Math.abs(v[i]) < Math.abs(v[j])){ + double tmpValue = v[j]; + v[j] = v[i]; + v[i] = tmpValue; + int tmpIndex = index[j]; + index[j] = index[i]; + index[i] = tmpIndex; + } + } + } + + indexes = index; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSPointsLocationExporter.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSPointsLocationExporter.java similarity index 81% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSPointsLocationExporter.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSPointsLocationExporter.java index a654af6..328667a 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSPointsLocationExporter.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MDSPointsLocationExporter.java @@ -1,37 +1,37 @@ -package jp.naist.se.stigmata.ui.swing.mds; - -/* - * $Id$ - */ - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Iterator; - -import jp.naist.se.stigmata.ui.swing.UnsupportedFormatException; -import jp.naist.se.stigmata.utils.AsciiDataWritable; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ - */ -public class MDSPointsLocationExporter implements AsciiDataWritable{ - private MDSGraphViewer viewer; - - public MDSPointsLocationExporter(MDSGraphViewer viewer){ - this.viewer = viewer; - } - - public void writeAsciiData(PrintWriter out, String format) - throws IOException, UnsupportedFormatException{ - if(!format.equals("csv")){ - throw new UnsupportedFormatException(viewer.getMessages().format("error.unsupportedformat", format)); - } - for(Iterator i = viewer.coordinates(); i.hasNext(); ){ - Coordinate c = i.next(); - out.printf("%s,%s,%g,%g%n", c.getLabel(), c.getGroupId(), c.getX(), c.getY()); - } - } - -} +package jp.sourceforge.stigmata.ui.swing.mds; + +/* + * $Id$ + */ + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Iterator; + +import jp.sourceforge.stigmata.ui.swing.UnsupportedFormatException; +import jp.sourceforge.stigmata.utils.AsciiDataWritable; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ + */ +public class MDSPointsLocationExporter implements AsciiDataWritable{ + private MDSGraphViewer viewer; + + public MDSPointsLocationExporter(MDSGraphViewer viewer){ + this.viewer = viewer; + } + + public void writeAsciiData(PrintWriter out, String format) + throws IOException, UnsupportedFormatException{ + if(!format.equals("csv")){ + throw new UnsupportedFormatException(viewer.getMessages().format("error.unsupportedformat", format)); + } + for(Iterator i = viewer.coordinates(); i.hasNext(); ){ + Coordinate c = i.next(); + out.printf("%s,%s,%g,%g%n", c.getLabel(), c.getGroupId(), c.getX(), c.getY()); + } + } + +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MarkDrawer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MarkDrawer.java similarity index 80% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/MarkDrawer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MarkDrawer.java index 3d821c9..a053693 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MarkDrawer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MarkDrawer.java @@ -1,17 +1,17 @@ -package jp.naist.se.stigmata.ui.swing.mds; - -/* - * $Id$ - */ - -import java.awt.Graphics2D; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface MarkDrawer{ - public void draw(Graphics2D g, int w, int h); - - public void drawOver(Graphics2D g, int w, int h); -} +package jp.sourceforge.stigmata.ui.swing.mds; + +/* + * $Id$ + */ + +import java.awt.Graphics2D; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface MarkDrawer{ + public void draw(Graphics2D g, int w, int h); + + public void drawOver(Graphics2D g, int w, int h); +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MarkIcon.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MarkIcon.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/MarkIcon.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MarkIcon.java index 150fc87..25901f9 100755 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/MarkIcon.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/MarkIcon.java @@ -1,61 +1,61 @@ -package jp.naist.se.stigmata.ui.swing.mds; - -/* - * $Id$ - */ - -import java.awt.Color; -import java.awt.Component; -import java.awt.Graphics; -import java.awt.Graphics2D; - -import javax.swing.Icon; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class MarkIcon implements Icon{ - private static final int DEFAULT_ICON_WIDTH = 16; - private static final int DEFAULT_ICON_HEIGHT = 16; - - private MarkDrawer drawer; - private int width = -1; - private int height = -1; - - public MarkIcon(MarkDrawer drawer){ - this.drawer = drawer; - } - - public void setIconHeight(int height){ - this.height = height; - } - - public int getIconHeight(){ - if(height < 0){ - return DEFAULT_ICON_HEIGHT; - } - return height; - } - - public void setIconWidth(int width){ - this.width = width; - } - - public int getIconWidth(){ - if(width < 0){ - return DEFAULT_ICON_WIDTH; - } - return width; - } - - public void paintIcon(Component c, Graphics g, int x, int y){ - Color initialColor = g.getColor(); - g.setColor(Color.BLACK); - g.translate(x, y); - drawer.drawOver((Graphics2D)g, getIconWidth(), getIconHeight()); - g.translate(-x, -y); - g.setColor(initialColor); - } -} +package jp.sourceforge.stigmata.ui.swing.mds; + +/* + * $Id$ + */ + +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Graphics2D; + +import javax.swing.Icon; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class MarkIcon implements Icon{ + private static final int DEFAULT_ICON_WIDTH = 16; + private static final int DEFAULT_ICON_HEIGHT = 16; + + private MarkDrawer drawer; + private int width = -1; + private int height = -1; + + public MarkIcon(MarkDrawer drawer){ + this.drawer = drawer; + } + + public void setIconHeight(int height){ + this.height = height; + } + + public int getIconHeight(){ + if(height < 0){ + return DEFAULT_ICON_HEIGHT; + } + return height; + } + + public void setIconWidth(int width){ + this.width = width; + } + + public int getIconWidth(){ + if(width < 0){ + return DEFAULT_ICON_WIDTH; + } + return width; + } + + public void paintIcon(Component c, Graphics g, int x, int y){ + Color initialColor = g.getColor(); + g.setColor(Color.BLACK); + g.translate(x, y); + drawer.drawOver((Graphics2D)g, getIconWidth(), getIconHeight()); + g.translate(-x, -y); + g.setColor(initialColor); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/PointComponent.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/PointComponent.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/PointComponent.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/PointComponent.java index be0ddf5..8f5c170 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/PointComponent.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/PointComponent.java @@ -1,137 +1,137 @@ -package jp.naist.se.stigmata.ui.swing.mds; - -/* - * $Id$ - */ - -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Stroke; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.JLabel; - -import jp.naist.se.stigmata.ui.swing.mds.mark.DrawerFactory; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -class PointComponent extends JLabel{ - private static final long serialVersionUID = 6945871049990818511L; - public static final Color DEFAULT_OVER_COLOR = Color.BLUE; - - private boolean entered = false; - private Color overColor = DEFAULT_OVER_COLOR; - private String label; - private MarkDrawer drawer; - private JLabel showLabel = null; - private List listeners = new ArrayList(); - - public PointComponent(String label, double x, double y){ - this(label); - - setToolTipText(String.format("%s [%g, %g]", label, x, y)); - drawer = DrawerFactory.getInstance().create(GeometoryType.UPPER_TRIANGLE); - } - - public PointComponent(String label, double x, double y, MarkDrawer drawer){ - this(label); - this.drawer = drawer; - setToolTipText(String.format("%s [%g, %g]", label, x, y)); - } - - public PointComponent(String label){ - this.label = label; - setSize(10, 10); - setMinimumSize(getSize()); - setMaximumSize(getSize()); - setPreferredSize(getSize()); - - addMouseListener(new MouseAdapter(){ - @Override - public void mouseEntered(MouseEvent e){ - entered = true; - if(showLabel != null){ - showLabel.setVisible(true); - showLabel.repaint(); - } - repaint(); - } - - @Override - public void mouseExited(MouseEvent e){ - entered = false; - if(showLabel != null){ - showLabel.setVisible(false); - showLabel.repaint(); - } - repaint(); - } - - @Override - public void mouseClicked(MouseEvent e){ - if(e.getClickCount() >= 2){ - ActionEvent ae = new ActionEvent(PointComponent.this, 0, null); - for(ActionListener listener: listeners){ - listener.actionPerformed(ae); - } - } - } - }); - setToolTipText(this.label); - } - - public void addActionListener(ActionListener listener){ - listeners.add(listener); - } - - public void removeActionListener(ActionListener listener){ - listeners.remove(listener); - } - - public void setShowLabel(JLabel label){ - this.showLabel = label; - } - - public JLabel getShowLabel(){ - return showLabel; - } - - public String getLabel(){ - return label; - } - - @Override - public void paintComponent(Graphics g){ - super.paintComponent(g); - Graphics2D gg = (Graphics2D)g; - Stroke stroke = gg.getStroke(); - Dimension d = getSize(); - - if(entered){ - g.setColor(getOverColor()); - drawer.drawOver(gg, d.width, d.height); - } - else{ - g.setColor(getForeground()); - drawer.draw(gg, d.width, d.height); - } - gg.setStroke(stroke); - } - - public Color getOverColor(){ - return overColor; - } - - public void setOverColor(Color overColor){ - this.overColor = overColor; - } -} +package jp.sourceforge.stigmata.ui.swing.mds; + +/* + * $Id$ + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Stroke; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.JLabel; + +import jp.sourceforge.stigmata.ui.swing.mds.mark.DrawerFactory; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +class PointComponent extends JLabel{ + private static final long serialVersionUID = 6945871049990818511L; + public static final Color DEFAULT_OVER_COLOR = Color.BLUE; + + private boolean entered = false; + private Color overColor = DEFAULT_OVER_COLOR; + private String label; + private MarkDrawer drawer; + private JLabel showLabel = null; + private List listeners = new ArrayList(); + + public PointComponent(String label, double x, double y){ + this(label); + + setToolTipText(String.format("%s [%g, %g]", label, x, y)); + drawer = DrawerFactory.getInstance().create(GeometoryType.UPPER_TRIANGLE); + } + + public PointComponent(String label, double x, double y, MarkDrawer drawer){ + this(label); + this.drawer = drawer; + setToolTipText(String.format("%s [%g, %g]", label, x, y)); + } + + public PointComponent(String label){ + this.label = label; + setSize(10, 10); + setMinimumSize(getSize()); + setMaximumSize(getSize()); + setPreferredSize(getSize()); + + addMouseListener(new MouseAdapter(){ + @Override + public void mouseEntered(MouseEvent e){ + entered = true; + if(showLabel != null){ + showLabel.setVisible(true); + showLabel.repaint(); + } + repaint(); + } + + @Override + public void mouseExited(MouseEvent e){ + entered = false; + if(showLabel != null){ + showLabel.setVisible(false); + showLabel.repaint(); + } + repaint(); + } + + @Override + public void mouseClicked(MouseEvent e){ + if(e.getClickCount() >= 2){ + ActionEvent ae = new ActionEvent(PointComponent.this, 0, null); + for(ActionListener listener: listeners){ + listener.actionPerformed(ae); + } + } + } + }); + setToolTipText(this.label); + } + + public void addActionListener(ActionListener listener){ + listeners.add(listener); + } + + public void removeActionListener(ActionListener listener){ + listeners.remove(listener); + } + + public void setShowLabel(JLabel label){ + this.showLabel = label; + } + + public JLabel getShowLabel(){ + return showLabel; + } + + public String getLabel(){ + return label; + } + + @Override + public void paintComponent(Graphics g){ + super.paintComponent(g); + Graphics2D gg = (Graphics2D)g; + Stroke stroke = gg.getStroke(); + Dimension d = getSize(); + + if(entered){ + g.setColor(getOverColor()); + drawer.drawOver(gg, d.width, d.height); + } + else{ + g.setColor(getForeground()); + drawer.draw(gg, d.width, d.height); + } + gg.setStroke(stroke); + } + + public Color getOverColor(){ + return overColor; + } + + public void setOverColor(Color overColor){ + this.overColor = overColor; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/AbstractMarkDrawer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/AbstractMarkDrawer.java similarity index 88% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/AbstractMarkDrawer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/AbstractMarkDrawer.java index 234ac44..338c009 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/AbstractMarkDrawer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/AbstractMarkDrawer.java @@ -1,73 +1,73 @@ -package jp.naist.se.stigmata.ui.swing.mds.mark; - -/* - * $Id$ - */ - -import java.awt.Graphics2D; -import java.awt.Shape; -import java.awt.Stroke; - -import jp.naist.se.stigmata.ui.swing.mds.MarkDrawer; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -abstract class AbstractMarkDrawer implements MarkDrawer{ - private boolean fill; - - public AbstractMarkDrawer(){ - this(false); - } - - public AbstractMarkDrawer(boolean fill){ - setFilled(fill); - } - - public boolean isFilled(){ - return fill; - } - - public void setFilled(boolean fill){ - this.fill = fill; - } - - public abstract Shape getPlainShape(int w, int h); - - public abstract Shape getOveredShape(int w, int h); - - public Stroke getPlainStroke(){ - return null; - } - - public Stroke getOverStroke(){ - return null; - } - - public void draw(Graphics2D g, int w, int h){ - Stroke s = getPlainStroke(); - if(s != null){ - g.setStroke(s); - } - drawImpl(g, getPlainShape(w, h)); - } - - public void drawOver(Graphics2D g, int w, int h){ - Stroke s = getOverStroke(); - if(s != null){ - g.setStroke(s); - } - drawImpl(g, getOveredShape(w, h)); - } - - private void drawImpl(Graphics2D g, Shape s){ - if(isFilled()){ - g.fill(s); - } - else{ - g.draw(s); - } - } -} +package jp.sourceforge.stigmata.ui.swing.mds.mark; + +/* + * $Id$ + */ + +import java.awt.Graphics2D; +import java.awt.Shape; +import java.awt.Stroke; + +import jp.sourceforge.stigmata.ui.swing.mds.MarkDrawer; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +abstract class AbstractMarkDrawer implements MarkDrawer{ + private boolean fill; + + public AbstractMarkDrawer(){ + this(false); + } + + public AbstractMarkDrawer(boolean fill){ + setFilled(fill); + } + + public boolean isFilled(){ + return fill; + } + + public void setFilled(boolean fill){ + this.fill = fill; + } + + public abstract Shape getPlainShape(int w, int h); + + public abstract Shape getOveredShape(int w, int h); + + public Stroke getPlainStroke(){ + return null; + } + + public Stroke getOverStroke(){ + return null; + } + + public void draw(Graphics2D g, int w, int h){ + Stroke s = getPlainStroke(); + if(s != null){ + g.setStroke(s); + } + drawImpl(g, getPlainShape(w, h)); + } + + public void drawOver(Graphics2D g, int w, int h){ + Stroke s = getOverStroke(); + if(s != null){ + g.setStroke(s); + } + drawImpl(g, getOveredShape(w, h)); + } + + private void drawImpl(Graphics2D g, Shape s){ + if(isFilled()){ + g.fill(s); + } + else{ + g.draw(s); + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/CircleDrawer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/CircleDrawer.java similarity index 88% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/CircleDrawer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/CircleDrawer.java index 52f30ce..b9776ef 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/CircleDrawer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/CircleDrawer.java @@ -1,37 +1,37 @@ -package jp.naist.se.stigmata.ui.swing.mds.mark; - -/* - * $Id$ - */ - -import java.awt.Shape; -import java.awt.geom.Ellipse2D; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -class CircleDrawer extends AbstractMarkDrawer{ - - public CircleDrawer(){ - super(); - } - - public CircleDrawer(boolean fill){ - super(fill); - } - - @Override - public Shape getPlainShape(int w, int h){ - double ww = (double)w / 2d; - double hh = (double)h / 2d; - - return new Ellipse2D.Double(ww - 2d, hh - 2d, 4d, 4d); - } - - @Override - public Shape getOveredShape(int w, int h){ - return new Ellipse2D.Double(0, 0, w - 1d, h - 1d); - } -} +package jp.sourceforge.stigmata.ui.swing.mds.mark; + +/* + * $Id$ + */ + +import java.awt.Shape; +import java.awt.geom.Ellipse2D; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +class CircleDrawer extends AbstractMarkDrawer{ + + public CircleDrawer(){ + super(); + } + + public CircleDrawer(boolean fill){ + super(fill); + } + + @Override + public Shape getPlainShape(int w, int h){ + double ww = (double)w / 2d; + double hh = (double)h / 2d; + + return new Ellipse2D.Double(ww - 2d, hh - 2d, 4d, 4d); + } + + @Override + public Shape getOveredShape(int w, int h){ + return new Ellipse2D.Double(0, 0, w - 1d, h - 1d); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/CrossDrawer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/CrossDrawer.java similarity index 88% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/CrossDrawer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/CrossDrawer.java index 7e7e20a..d259bf7 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/CrossDrawer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/CrossDrawer.java @@ -1,37 +1,37 @@ -package jp.naist.se.stigmata.ui.swing.mds.mark; - -/* - * $Id$ - */ - -import java.awt.Shape; -import java.awt.geom.GeneralPath; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -class CrossDrawer extends LineMarkDrawer{ - public CrossDrawer(){ - } - - @Override - public Shape getPlainShape(int w, int h){ - float ww = w / 2f; - float hh = h / 2f; - - GeneralPath path = new GeneralPath(); - path.moveTo(0, hh); - path.lineTo(w, hh); - path.moveTo(ww, 0); - path.lineTo(ww, h); - - return path; - } - - @Override - public Shape getOveredShape(int w, int h){ - return getPlainShape(w, h); - } -} +package jp.sourceforge.stigmata.ui.swing.mds.mark; + +/* + * $Id$ + */ + +import java.awt.Shape; +import java.awt.geom.GeneralPath; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +class CrossDrawer extends LineMarkDrawer{ + public CrossDrawer(){ + } + + @Override + public Shape getPlainShape(int w, int h){ + float ww = w / 2f; + float hh = h / 2f; + + GeneralPath path = new GeneralPath(); + path.moveTo(0, hh); + path.lineTo(w, hh); + path.moveTo(ww, 0); + path.lineTo(ww, h); + + return path; + } + + @Override + public Shape getOveredShape(int w, int h){ + return getPlainShape(w, h); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/DownerTriangleDrawer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/DownerTriangleDrawer.java similarity index 90% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/DownerTriangleDrawer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/DownerTriangleDrawer.java index 9048e36..498e154 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/DownerTriangleDrawer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/DownerTriangleDrawer.java @@ -1,49 +1,49 @@ -package jp.naist.se.stigmata.ui.swing.mds.mark; - -/* - * $Id$ - */ - -import java.awt.Shape; -import java.awt.geom.GeneralPath; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -class DownerTriangleDrawer extends AbstractMarkDrawer{ - public DownerTriangleDrawer(){ - super(); - } - - public DownerTriangleDrawer(boolean fill){ - super(fill); - } - - @Override - public Shape getPlainShape(int w, int h){ - float ww = (float)w / 2f; - float hh = (float)h / 2f; - - GeneralPath path = new GeneralPath(); - path.moveTo(ww - 2f, hh - 2f); - path.lineTo(ww + 2f, hh - 2f); - path.lineTo(ww, hh - 2f + (float)(2 * Math.sqrt(3))); - path.lineTo(ww - 2f, hh - 2f); - - return path; - } - - @Override - public Shape getOveredShape(int w, int h){ - GeneralPath path = new GeneralPath(); - path.moveTo(0, 0); - path.lineTo(w, 0); - path.lineTo(w / 2f, h); - path.lineTo(0, 0); - - return path; - } - -} +package jp.sourceforge.stigmata.ui.swing.mds.mark; + +/* + * $Id$ + */ + +import java.awt.Shape; +import java.awt.geom.GeneralPath; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +class DownerTriangleDrawer extends AbstractMarkDrawer{ + public DownerTriangleDrawer(){ + super(); + } + + public DownerTriangleDrawer(boolean fill){ + super(fill); + } + + @Override + public Shape getPlainShape(int w, int h){ + float ww = (float)w / 2f; + float hh = (float)h / 2f; + + GeneralPath path = new GeneralPath(); + path.moveTo(ww - 2f, hh - 2f); + path.lineTo(ww + 2f, hh - 2f); + path.lineTo(ww, hh - 2f + (float)(2 * Math.sqrt(3))); + path.lineTo(ww - 2f, hh - 2f); + + return path; + } + + @Override + public Shape getOveredShape(int w, int h){ + GeneralPath path = new GeneralPath(); + path.moveTo(0, 0); + path.lineTo(w, 0); + path.lineTo(w / 2f, h); + path.lineTo(0, 0); + + return path; + } + +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/DrawerFactory.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/DrawerFactory.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/DrawerFactory.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/DrawerFactory.java index 2dd9782..35c57d2 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/DrawerFactory.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/DrawerFactory.java @@ -1,53 +1,53 @@ -package jp.naist.se.stigmata.ui.swing.mds.mark; - -/* - * $Id$ - */ - -import java.util.HashMap; -import java.util.Map; - -import javax.swing.Icon; - -import jp.naist.se.stigmata.ui.swing.mds.GeometoryType; -import jp.naist.se.stigmata.ui.swing.mds.MarkDrawer; -import jp.naist.se.stigmata.ui.swing.mds.MarkIcon; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class DrawerFactory{ - private static final DrawerFactory instance = new DrawerFactory(); - - private Map drawers = new HashMap(); - - private DrawerFactory(){ - drawers.put(GeometoryType.CROSS, new CrossDrawer()); - drawers.put(GeometoryType.XMARK, new XMarkDrawer()); - drawers.put(GeometoryType.STAR, new StarDrawer()); - drawers.put(GeometoryType.CIRCLE, new CircleDrawer()); - drawers.put(GeometoryType.FILLED_CIRCLE, new CircleDrawer(true)); - drawers.put(GeometoryType.RHOMBUS, new RhombusDrawer()); - drawers.put(GeometoryType.FILLED_RHOMBUS, new RhombusDrawer(true)); - drawers.put(GeometoryType.RECTANGLE, new RectangleDrawer()); - drawers.put(GeometoryType.FILLED_RECTANGLE, new RectangleDrawer(true)); - drawers.put(GeometoryType.UPPER_TRIANGLE, new UpperTriangleDrawer()); - drawers.put(GeometoryType.FILLED_UPPER_TRIANGLE, new UpperTriangleDrawer(true)); - drawers.put(GeometoryType.DOWNER_TRIANGLE, new DownerTriangleDrawer()); - drawers.put(GeometoryType.FILLED_DOWNER_TRIANGLE, new DownerTriangleDrawer(true)); - } - - public static DrawerFactory getInstance(){ - return instance; - } - - public MarkDrawer create(GeometoryType type){ - return drawers.get(type); - } - - public Icon createIcon(GeometoryType type){ - return new MarkIcon(create(type)); - } -} +package jp.sourceforge.stigmata.ui.swing.mds.mark; + +/* + * $Id$ + */ + +import java.util.HashMap; +import java.util.Map; + +import javax.swing.Icon; + +import jp.sourceforge.stigmata.ui.swing.mds.GeometoryType; +import jp.sourceforge.stigmata.ui.swing.mds.MarkDrawer; +import jp.sourceforge.stigmata.ui.swing.mds.MarkIcon; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class DrawerFactory{ + private static final DrawerFactory instance = new DrawerFactory(); + + private Map drawers = new HashMap(); + + private DrawerFactory(){ + drawers.put(GeometoryType.CROSS, new CrossDrawer()); + drawers.put(GeometoryType.XMARK, new XMarkDrawer()); + drawers.put(GeometoryType.STAR, new StarDrawer()); + drawers.put(GeometoryType.CIRCLE, new CircleDrawer()); + drawers.put(GeometoryType.FILLED_CIRCLE, new CircleDrawer(true)); + drawers.put(GeometoryType.RHOMBUS, new RhombusDrawer()); + drawers.put(GeometoryType.FILLED_RHOMBUS, new RhombusDrawer(true)); + drawers.put(GeometoryType.RECTANGLE, new RectangleDrawer()); + drawers.put(GeometoryType.FILLED_RECTANGLE, new RectangleDrawer(true)); + drawers.put(GeometoryType.UPPER_TRIANGLE, new UpperTriangleDrawer()); + drawers.put(GeometoryType.FILLED_UPPER_TRIANGLE, new UpperTriangleDrawer(true)); + drawers.put(GeometoryType.DOWNER_TRIANGLE, new DownerTriangleDrawer()); + drawers.put(GeometoryType.FILLED_DOWNER_TRIANGLE, new DownerTriangleDrawer(true)); + } + + public static DrawerFactory getInstance(){ + return instance; + } + + public MarkDrawer create(GeometoryType type){ + return drawers.get(type); + } + + public Icon createIcon(GeometoryType type){ + return new MarkIcon(create(type)); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/LineMarkDrawer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/LineMarkDrawer.java similarity index 85% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/LineMarkDrawer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/LineMarkDrawer.java index afc4586..02674db 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/LineMarkDrawer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/LineMarkDrawer.java @@ -1,34 +1,34 @@ -package jp.naist.se.stigmata.ui.swing.mds.mark; - -/* - * $Id$ - */ - -import java.awt.BasicStroke; -import java.awt.Stroke; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -abstract class LineMarkDrawer extends AbstractMarkDrawer{ - public LineMarkDrawer(){ - } - - @Override - public boolean isFilled(){ - return false; - } - - @Override - public void setFilled(boolean fill){ - // nothing to to. - } - - @Override - public Stroke getOverStroke(){ - return new BasicStroke(3f); - } - -} +package jp.sourceforge.stigmata.ui.swing.mds.mark; + +/* + * $Id$ + */ + +import java.awt.BasicStroke; +import java.awt.Stroke; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +abstract class LineMarkDrawer extends AbstractMarkDrawer{ + public LineMarkDrawer(){ + } + + @Override + public boolean isFilled(){ + return false; + } + + @Override + public void setFilled(boolean fill){ + // nothing to to. + } + + @Override + public Stroke getOverStroke(){ + return new BasicStroke(3f); + } + +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/RectangleDrawer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/RectangleDrawer.java similarity index 88% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/RectangleDrawer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/RectangleDrawer.java index afd85e2..475cfe9 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/RectangleDrawer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/RectangleDrawer.java @@ -1,37 +1,37 @@ -package jp.naist.se.stigmata.ui.swing.mds.mark; - -/* - * $Id$ - */ - -import java.awt.Shape; -import java.awt.geom.Rectangle2D; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -class RectangleDrawer extends AbstractMarkDrawer{ - - public RectangleDrawer(){ - super(); - } - - public RectangleDrawer(boolean fill){ - super(fill); - } - - @Override - public Shape getPlainShape(int w, int h){ - double ww = (double)w / 2d; - double hh = (double)h / 2d; - - return new Rectangle2D.Double(ww - 2d, hh - 2d, 4d, 4d); - } - - @Override - public Shape getOveredShape(int w, int h){ - return new Rectangle2D.Double(0, 0, w - 1, h - 1); - } -} +package jp.sourceforge.stigmata.ui.swing.mds.mark; + +/* + * $Id$ + */ + +import java.awt.Shape; +import java.awt.geom.Rectangle2D; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +class RectangleDrawer extends AbstractMarkDrawer{ + + public RectangleDrawer(){ + super(); + } + + public RectangleDrawer(boolean fill){ + super(fill); + } + + @Override + public Shape getPlainShape(int w, int h){ + double ww = (double)w / 2d; + double hh = (double)h / 2d; + + return new Rectangle2D.Double(ww - 2d, hh - 2d, 4d, 4d); + } + + @Override + public Shape getOveredShape(int w, int h){ + return new Rectangle2D.Double(0, 0, w - 1, h - 1); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/RhombusDrawer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/RhombusDrawer.java similarity index 91% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/RhombusDrawer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/RhombusDrawer.java index 17811f3..fd96e84 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/RhombusDrawer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/RhombusDrawer.java @@ -1,55 +1,55 @@ -package jp.naist.se.stigmata.ui.swing.mds.mark; - -/* - * $Id$ - */ - -import java.awt.Shape; -import java.awt.geom.GeneralPath; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -class RhombusDrawer extends AbstractMarkDrawer{ - - public RhombusDrawer(){ - super(); - } - - public RhombusDrawer(boolean fill){ - super(fill); - } - - @Override - public Shape getPlainShape(int w, int h){ - float ww = (float)w / 2f; - float hh = (float)h / 2f; - - GeneralPath path = new GeneralPath(); - path.moveTo(ww, hh - 2f); - path.lineTo(ww + 2f, hh); - path.lineTo(ww, hh + 2f); - path.lineTo(ww - 2f, hh); - path.lineTo(ww, hh - 2f); - - return path; - } - - @Override - public Shape getOveredShape(int w, int h){ - float ww = (float)w / 2f; - float hh = (float)h / 2f; - - GeneralPath path = new GeneralPath(); - path.moveTo(ww, 0); - path.lineTo(0, hh); - path.lineTo(ww, h); - path.lineTo(w, hh); - path.lineTo(ww, 0); - - return path; - } - -} +package jp.sourceforge.stigmata.ui.swing.mds.mark; + +/* + * $Id$ + */ + +import java.awt.Shape; +import java.awt.geom.GeneralPath; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +class RhombusDrawer extends AbstractMarkDrawer{ + + public RhombusDrawer(){ + super(); + } + + public RhombusDrawer(boolean fill){ + super(fill); + } + + @Override + public Shape getPlainShape(int w, int h){ + float ww = (float)w / 2f; + float hh = (float)h / 2f; + + GeneralPath path = new GeneralPath(); + path.moveTo(ww, hh - 2f); + path.lineTo(ww + 2f, hh); + path.lineTo(ww, hh + 2f); + path.lineTo(ww - 2f, hh); + path.lineTo(ww, hh - 2f); + + return path; + } + + @Override + public Shape getOveredShape(int w, int h){ + float ww = (float)w / 2f; + float hh = (float)h / 2f; + + GeneralPath path = new GeneralPath(); + path.moveTo(ww, 0); + path.lineTo(0, hh); + path.lineTo(ww, h); + path.lineTo(w, hh); + path.lineTo(ww, 0); + + return path; + } + +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/StarDrawer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/StarDrawer.java similarity index 89% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/StarDrawer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/StarDrawer.java index 8e28b87..1500818 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/StarDrawer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/StarDrawer.java @@ -1,37 +1,37 @@ -package jp.naist.se.stigmata.ui.swing.mds.mark; - -/* - * $Id$ - */ - -import java.awt.Shape; -import java.awt.geom.GeneralPath; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -class StarDrawer extends LineMarkDrawer{ - public StarDrawer(){ - } - - @Override - public Shape getPlainShape(int w, int h){ - float ww = w / 2f; - float hh = h / 2f; - - GeneralPath path = new GeneralPath(); - path.moveTo(0, hh); path.lineTo(w, hh); - path.moveTo(ww, 0); path.lineTo(ww, h); - path.moveTo(0, 0); path.lineTo(w, h); - path.moveTo(w, 0); path.lineTo(0, h); - - return path; - } - - @Override - public Shape getOveredShape(int w, int h){ - return getPlainShape(w, h); - } -} +package jp.sourceforge.stigmata.ui.swing.mds.mark; + +/* + * $Id$ + */ + +import java.awt.Shape; +import java.awt.geom.GeneralPath; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +class StarDrawer extends LineMarkDrawer{ + public StarDrawer(){ + } + + @Override + public Shape getPlainShape(int w, int h){ + float ww = w / 2f; + float hh = h / 2f; + + GeneralPath path = new GeneralPath(); + path.moveTo(0, hh); path.lineTo(w, hh); + path.moveTo(ww, 0); path.lineTo(ww, h); + path.moveTo(0, 0); path.lineTo(w, h); + path.moveTo(w, 0); path.lineTo(0, h); + + return path; + } + + @Override + public Shape getOveredShape(int w, int h){ + return getPlainShape(w, h); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/UpperTriangleDrawer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/UpperTriangleDrawer.java similarity index 90% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/UpperTriangleDrawer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/UpperTriangleDrawer.java index c9e9b9c..b89d951 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/UpperTriangleDrawer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/UpperTriangleDrawer.java @@ -1,50 +1,50 @@ -package jp.naist.se.stigmata.ui.swing.mds.mark; - -/* - * $Id$ - */ - -import java.awt.Shape; -import java.awt.geom.GeneralPath; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -class UpperTriangleDrawer extends AbstractMarkDrawer{ - - public UpperTriangleDrawer(){ - super(); - } - - public UpperTriangleDrawer(boolean fill){ - super(fill); - } - - @Override - public Shape getPlainShape(int w, int h){ - float ww = (float)w / 2f; - float hh = (float)h / 2f; - - GeneralPath path = new GeneralPath(); - path.moveTo(ww - 2f, hh + 2f); - path.lineTo(ww + 2f, hh + 2f); - path.lineTo(ww, hh + 2f - (float)(2 * Math.sqrt(3))); - path.lineTo(ww - 2f, hh + 2f); - - return path; - } - - @Override - public Shape getOveredShape(int w, int h){ - GeneralPath path = new GeneralPath(); - path.moveTo(0, h - 1f); - path.lineTo(w, h - 1f); - path.lineTo(w / 2f, 0); - path.lineTo(0, h - 1f); - - return path; - } - -} +package jp.sourceforge.stigmata.ui.swing.mds.mark; + +/* + * $Id$ + */ + +import java.awt.Shape; +import java.awt.geom.GeneralPath; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +class UpperTriangleDrawer extends AbstractMarkDrawer{ + + public UpperTriangleDrawer(){ + super(); + } + + public UpperTriangleDrawer(boolean fill){ + super(fill); + } + + @Override + public Shape getPlainShape(int w, int h){ + float ww = (float)w / 2f; + float hh = (float)h / 2f; + + GeneralPath path = new GeneralPath(); + path.moveTo(ww - 2f, hh + 2f); + path.lineTo(ww + 2f, hh + 2f); + path.lineTo(ww, hh + 2f - (float)(2 * Math.sqrt(3))); + path.lineTo(ww - 2f, hh + 2f); + + return path; + } + + @Override + public Shape getOveredShape(int w, int h){ + GeneralPath path = new GeneralPath(); + path.moveTo(0, h - 1f); + path.lineTo(w, h - 1f); + path.lineTo(w / 2f, 0); + path.lineTo(0, h - 1f); + + return path; + } + +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/XMarkDrawer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/XMarkDrawer.java similarity index 87% rename from src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/XMarkDrawer.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/XMarkDrawer.java index 4580aae..963ca45 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/mds/mark/XMarkDrawer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/mds/mark/XMarkDrawer.java @@ -1,34 +1,34 @@ -package jp.naist.se.stigmata.ui.swing.mds.mark; - -/* - * $Id$ - */ - -import java.awt.Shape; -import java.awt.geom.GeneralPath; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -class XMarkDrawer extends LineMarkDrawer{ - public XMarkDrawer(){ - } - - @Override - public Shape getPlainShape(int w, int h){ - GeneralPath path = new GeneralPath(); - path.moveTo(0, 0); - path.lineTo(w, h); - path.moveTo(w, 0); - path.lineTo(0, h); - - return path; - } - - @Override - public Shape getOveredShape(int w, int h){ - return getPlainShape(w, h); - } -} +package jp.sourceforge.stigmata.ui.swing.mds.mark; + +/* + * $Id$ + */ + +import java.awt.Shape; +import java.awt.geom.GeneralPath; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +class XMarkDrawer extends LineMarkDrawer{ + public XMarkDrawer(){ + } + + @Override + public Shape getPlainShape(int w, int h){ + GeneralPath path = new GeneralPath(); + path.moveTo(0, 0); + path.lineTo(w, h); + path.moveTo(w, 0); + path.lineTo(0, h); + + return path; + } + + @Override + public Shape getOveredShape(int w, int h){ + return getPlainShape(w, h); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/tab/EditableGlassPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/tab/EditableGlassPane.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/ui/swing/tab/EditableGlassPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/tab/EditableGlassPane.java index c0a0e89..d362be1 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/tab/EditableGlassPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/tab/EditableGlassPane.java @@ -1,53 +1,53 @@ -package jp.naist.se.stigmata.ui.swing.tab; - -/* - * $Id$ - */ - -import java.awt.LayoutManager; -import java.awt.Rectangle; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; - -import javax.swing.JPanel; - -/** - * This program is copied from below URL. - * http://terai.xrea.jp/Swing/EditTabTitle.html - * - * @author Haruaki Tamada - * @author Terai Atsuhiro - * @version $Revision$ $Date$ - */ -class EditableGlassPane extends JPanel{ - private static final long serialVersionUID = 9009103705988625476L; - - private EditableTabbedPane pane; - private Rectangle rect; - - public EditableGlassPane(EditableTabbedPane panel){ - super((LayoutManager)null); - this.pane = panel; - - setOpaque(false); - addMouseListener(new MouseAdapter(){ - public void mouseClicked(MouseEvent e){ - if(rect == null || rect.contains(e.getPoint())) - return; - pane.renameTab(); - } - }); - } - - public void setRectangle(int x, int y, int w, int h){ - setRectangle(new Rectangle(x, y, w, h)); - } - - public void setRectangle(Rectangle rect){ - this.rect = rect; - } - - public Rectangle getRectangle(){ - return rect; - } -} +package jp.sourceforge.stigmata.ui.swing.tab; + +/* + * $Id$ + */ + +import java.awt.LayoutManager; +import java.awt.Rectangle; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.JPanel; + +/** + * This program is copied from below URL. + * http://terai.xrea.jp/Swing/EditTabTitle.html + * + * @author Haruaki Tamada + * @author Terai Atsuhiro + * @version $Revision$ $Date$ + */ +class EditableGlassPane extends JPanel{ + private static final long serialVersionUID = 9009103705988625476L; + + private EditableTabbedPane pane; + private Rectangle rect; + + public EditableGlassPane(EditableTabbedPane panel){ + super((LayoutManager)null); + this.pane = panel; + + setOpaque(false); + addMouseListener(new MouseAdapter(){ + public void mouseClicked(MouseEvent e){ + if(rect == null || rect.contains(e.getPoint())) + return; + pane.renameTab(); + } + }); + } + + public void setRectangle(int x, int y, int w, int h){ + setRectangle(new Rectangle(x, y, w, h)); + } + + public void setRectangle(Rectangle rect){ + this.rect = rect; + } + + public Rectangle getRectangle(){ + return rect; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/tab/EditableTabbedPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/tab/EditableTabbedPane.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/ui/swing/tab/EditableTabbedPane.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/tab/EditableTabbedPane.java index 525a846..1ff9adc 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/tab/EditableTabbedPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/tab/EditableTabbedPane.java @@ -1,115 +1,115 @@ -package jp.naist.se.stigmata.ui.swing.tab; - -/* - * $Id$ - */ - -import java.awt.FocusTraversalPolicy; -import java.awt.Rectangle; -import java.awt.event.FocusAdapter; -import java.awt.event.FocusEvent; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; - -import javax.swing.BorderFactory; -import javax.swing.JFrame; -import javax.swing.JMenuBar; -import javax.swing.JTabbedPane; -import javax.swing.JTextField; - -/** - * This program is copied from below URL. - * http://terai.xrea.jp/Swing/EditTabTitle.html - * - * @author Haruaki Tamada - * @author Terai Atsuhiro - * @version $Revision$ $Date$ - */ -public class EditableTabbedPane extends JTabbedPane{ - private static final long serialVersionUID = -66174062280771547L; - - private final EditableGlassPane panel; - private final JTextField editor; - private final JFrame frame; - private final FocusTraversalPolicy policy; - private FocusTraversalPolicy ftp; - - public EditableTabbedPane(JFrame frame){ - this.frame = frame; - this.panel = new EditableGlassPane(this); - this.editor = new JTextField(); - - policy = new EditableTabbedPaneFocusTraversalPolicy(editor); - - editor.setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 3)); - editor.addFocusListener(new FocusAdapter(){ - public void focusGained(final FocusEvent e){ - ((JTextField)e.getSource()).selectAll(); - } - }); - editor.addKeyListener(new KeyAdapter(){ - public void keyPressed(KeyEvent e){ - if(e.getKeyCode() == KeyEvent.VK_ENTER){ - renameTab(); - } - else if(e.getKeyCode() == KeyEvent.VK_ESCAPE){ - cancelEditing(); - } - } - }); - addMouseListener(new MouseAdapter(){ - public void mouseClicked(MouseEvent me){ - if(me.getClickCount() == 2){ - startEditing(); - } - } - }); - addKeyListener(new KeyAdapter(){ - public void keyPressed(KeyEvent e){ - if(e.getKeyCode() == KeyEvent.VK_ENTER){ - startEditing(); - } - } - }); - - frame.setGlassPane(panel); - panel.add(editor); - panel.setVisible(false); - } - - void renameTab(){ - frame.setFocusTraversalPolicy(ftp); - if(editor.getText().trim().length() > 0){ - setTitleAt(getSelectedIndex(), editor.getText()); - } - panel.setVisible(false); - } - - private void startEditing(){ - initEditor(); - ftp = frame.getFocusTraversalPolicy(); - panel.setVisible(true); - editor.requestFocusInWindow(); - frame.setFocusTraversalPolicy(policy); - } - - private void cancelEditing(){ - frame.setFocusTraversalPolicy(ftp); - panel.setVisible(false); - } - - private void initEditor(){ - JMenuBar bar = frame.getJMenuBar(); - Rectangle rect = getUI().getTabBounds(this, getSelectedIndex()); - rect.setRect(rect.x + 2, rect.y + 2, rect.width - 2, rect.height - 2); - if(bar != null){ - rect.y += bar.getSize().height; - } - panel.setRectangle(rect); - - editor.setBounds(rect); - editor.setText(getTitleAt(getSelectedIndex())); - } -} +package jp.sourceforge.stigmata.ui.swing.tab; + +/* + * $Id$ + */ + +import java.awt.FocusTraversalPolicy; +import java.awt.Rectangle; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.BorderFactory; +import javax.swing.JFrame; +import javax.swing.JMenuBar; +import javax.swing.JTabbedPane; +import javax.swing.JTextField; + +/** + * This program is copied from below URL. + * http://terai.xrea.jp/Swing/EditTabTitle.html + * + * @author Haruaki Tamada + * @author Terai Atsuhiro + * @version $Revision$ $Date$ + */ +public class EditableTabbedPane extends JTabbedPane{ + private static final long serialVersionUID = -66174062280771547L; + + private final EditableGlassPane panel; + private final JTextField editor; + private final JFrame frame; + private final FocusTraversalPolicy policy; + private FocusTraversalPolicy ftp; + + public EditableTabbedPane(JFrame frame){ + this.frame = frame; + this.panel = new EditableGlassPane(this); + this.editor = new JTextField(); + + policy = new EditableTabbedPaneFocusTraversalPolicy(editor); + + editor.setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 3)); + editor.addFocusListener(new FocusAdapter(){ + public void focusGained(final FocusEvent e){ + ((JTextField)e.getSource()).selectAll(); + } + }); + editor.addKeyListener(new KeyAdapter(){ + public void keyPressed(KeyEvent e){ + if(e.getKeyCode() == KeyEvent.VK_ENTER){ + renameTab(); + } + else if(e.getKeyCode() == KeyEvent.VK_ESCAPE){ + cancelEditing(); + } + } + }); + addMouseListener(new MouseAdapter(){ + public void mouseClicked(MouseEvent me){ + if(me.getClickCount() == 2){ + startEditing(); + } + } + }); + addKeyListener(new KeyAdapter(){ + public void keyPressed(KeyEvent e){ + if(e.getKeyCode() == KeyEvent.VK_ENTER){ + startEditing(); + } + } + }); + + frame.setGlassPane(panel); + panel.add(editor); + panel.setVisible(false); + } + + void renameTab(){ + frame.setFocusTraversalPolicy(ftp); + if(editor.getText().trim().length() > 0){ + setTitleAt(getSelectedIndex(), editor.getText()); + } + panel.setVisible(false); + } + + private void startEditing(){ + initEditor(); + ftp = frame.getFocusTraversalPolicy(); + panel.setVisible(true); + editor.requestFocusInWindow(); + frame.setFocusTraversalPolicy(policy); + } + + private void cancelEditing(){ + frame.setFocusTraversalPolicy(ftp); + panel.setVisible(false); + } + + private void initEditor(){ + JMenuBar bar = frame.getJMenuBar(); + Rectangle rect = getUI().getTabBounds(this, getSelectedIndex()); + rect.setRect(rect.x + 2, rect.y + 2, rect.width - 2, rect.height - 2); + if(bar != null){ + rect.y += bar.getSize().height; + } + panel.setRectangle(rect); + + editor.setBounds(rect); + editor.setText(getTitleAt(getSelectedIndex())); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/ui/swing/tab/EditableTabbedPaneFocusTraversalPolicy.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/tab/EditableTabbedPaneFocusTraversalPolicy.java similarity index 92% rename from src/main/java/jp/naist/se/stigmata/ui/swing/tab/EditableTabbedPaneFocusTraversalPolicy.java rename to src/main/java/jp/sourceforge/stigmata/ui/swing/tab/EditableTabbedPaneFocusTraversalPolicy.java index c98bb10..ecbba0a 100644 --- a/src/main/java/jp/naist/se/stigmata/ui/swing/tab/EditableTabbedPaneFocusTraversalPolicy.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/tab/EditableTabbedPaneFocusTraversalPolicy.java @@ -1,52 +1,52 @@ -package jp.naist.se.stigmata.ui.swing.tab; - -/* - * $Id$ - */ - -import java.awt.Component; -import java.awt.Container; -import java.awt.FocusTraversalPolicy; - -import javax.swing.JTextField; - -/** - * This program is copied from below URL. - * http://terai.xrea.jp/Swing/EditTabTitle.html - * - * @author Haruaki Tamada - * @author Terai Atsuhiro - * @version $Revision$ $Date$ - */ -class EditableTabbedPaneFocusTraversalPolicy extends FocusTraversalPolicy{ - private JTextField editor; - - public EditableTabbedPaneFocusTraversalPolicy(JTextField editor){ - this.editor = editor; - } - - @Override - public Component getFirstComponent(Container focusCycleRoot){ - return null; - } - - @Override - public Component getLastComponent(Container focusCycleRoot){ - return editor; - } - - @Override - public Component getComponentAfter(Container focusCycleRoot, Component cmp){ - return editor; - } - - @Override - public Component getComponentBefore(Container focusCycleRoot, Component cmp){ - return editor; - } - - @Override - public Component getDefaultComponent(Container focusCycleRoot){ - return editor; - } -} +package jp.sourceforge.stigmata.ui.swing.tab; + +/* + * $Id$ + */ + +import java.awt.Component; +import java.awt.Container; +import java.awt.FocusTraversalPolicy; + +import javax.swing.JTextField; + +/** + * This program is copied from below URL. + * http://terai.xrea.jp/Swing/EditTabTitle.html + * + * @author Haruaki Tamada + * @author Terai Atsuhiro + * @version $Revision$ $Date$ + */ +class EditableTabbedPaneFocusTraversalPolicy extends FocusTraversalPolicy{ + private JTextField editor; + + public EditableTabbedPaneFocusTraversalPolicy(JTextField editor){ + this.editor = editor; + } + + @Override + public Component getFirstComponent(Container focusCycleRoot){ + return null; + } + + @Override + public Component getLastComponent(Container focusCycleRoot){ + return editor; + } + + @Override + public Component getComponentAfter(Container focusCycleRoot, Component cmp){ + return editor; + } + + @Override + public Component getComponentBefore(Container focusCycleRoot, Component cmp){ + return editor; + } + + @Override + public Component getDefaultComponent(Container focusCycleRoot){ + return editor; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/utils/ArrayIterator.java b/src/main/java/jp/sourceforge/stigmata/utils/ArrayIterator.java similarity index 89% rename from src/main/java/jp/naist/se/stigmata/utils/ArrayIterator.java rename to src/main/java/jp/sourceforge/stigmata/utils/ArrayIterator.java index 6978277..5c86776 100755 --- a/src/main/java/jp/naist/se/stigmata/utils/ArrayIterator.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/ArrayIterator.java @@ -1,41 +1,41 @@ -package jp.naist.se.stigmata.utils; - -/* - * $Id$ - */ - -import java.util.Iterator; - -/** - * - * @author Haruaki Tamada - * @version $Revission$ $Date$ - */ -public class ArrayIterator implements Iterator{ - private T[] values; - private int length; - private int currentIndex = 0; - - public ArrayIterator(T[] values){ - this.values = values; - if(values != null){ - length = values.length; - } - else{ - length = 0; - } - } - - public boolean hasNext(){ - return currentIndex < length; - } - - public T next(){ - T value = values[currentIndex]; - currentIndex++; - return value; - } - - public void remove(){ - } -} +package jp.sourceforge.stigmata.utils; + +/* + * $Id$ + */ + +import java.util.Iterator; + +/** + * + * @author Haruaki Tamada + * @version $Revission$ $Date$ + */ +public class ArrayIterator implements Iterator{ + private T[] values; + private int length; + private int currentIndex = 0; + + public ArrayIterator(T[] values){ + this.values = values; + if(values != null){ + length = values.length; + } + else{ + length = 0; + } + } + + public boolean hasNext(){ + return currentIndex < length; + } + + public T next(){ + T value = values[currentIndex]; + currentIndex++; + return value; + } + + public void remove(){ + } +} diff --git a/src/main/java/jp/naist/se/stigmata/utils/AsciiDataWritable.java b/src/main/java/jp/sourceforge/stigmata/utils/AsciiDataWritable.java similarity index 70% rename from src/main/java/jp/naist/se/stigmata/utils/AsciiDataWritable.java rename to src/main/java/jp/sourceforge/stigmata/utils/AsciiDataWritable.java index 5ee3d29..8c890ba 100644 --- a/src/main/java/jp/naist/se/stigmata/utils/AsciiDataWritable.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/AsciiDataWritable.java @@ -1,19 +1,19 @@ -package jp.naist.se.stigmata.utils; - -/* - * $Id$ - */ - -import java.io.IOException; -import java.io.PrintWriter; - -import jp.naist.se.stigmata.ui.swing.UnsupportedFormatException; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public interface AsciiDataWritable{ - public void writeAsciiData(PrintWriter out, String format) throws IOException, UnsupportedFormatException; -} +package jp.sourceforge.stigmata.utils; + +/* + * $Id$ + */ + +import java.io.IOException; +import java.io.PrintWriter; + +import jp.sourceforge.stigmata.ui.swing.UnsupportedFormatException; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public interface AsciiDataWritable{ + public void writeAsciiData(PrintWriter out, String format) throws IOException, UnsupportedFormatException; +} diff --git a/src/main/java/jp/naist/se/stigmata/utils/BinaryDataWritable.java b/src/main/java/jp/sourceforge/stigmata/utils/BinaryDataWritable.java similarity index 71% rename from src/main/java/jp/naist/se/stigmata/utils/BinaryDataWritable.java rename to src/main/java/jp/sourceforge/stigmata/utils/BinaryDataWritable.java index 57b2e58..3747ac9 100644 --- a/src/main/java/jp/naist/se/stigmata/utils/BinaryDataWritable.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/BinaryDataWritable.java @@ -1,18 +1,18 @@ -package jp.naist.se.stigmata.utils; - -/* - * $Id$ - */ - -import java.io.IOException; -import java.io.OutputStream; - -import jp.naist.se.stigmata.ui.swing.UnsupportedFormatException; - -/** - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public interface BinaryDataWritable{ - public void writeBinaryData(OutputStream out, String format) throws IOException, UnsupportedFormatException; -} +package jp.sourceforge.stigmata.utils; + +/* + * $Id$ + */ + +import java.io.IOException; +import java.io.OutputStream; + +import jp.sourceforge.stigmata.ui.swing.UnsupportedFormatException; + +/** + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public interface BinaryDataWritable{ + public void writeBinaryData(OutputStream out, String format) throws IOException, UnsupportedFormatException; +} diff --git a/src/main/java/jp/naist/se/stigmata/utils/ConfigFileExporter.java b/src/main/java/jp/sourceforge/stigmata/utils/ConfigFileExporter.java similarity index 93% rename from src/main/java/jp/naist/se/stigmata/utils/ConfigFileExporter.java rename to src/main/java/jp/sourceforge/stigmata/utils/ConfigFileExporter.java index 31a7592..cc8c311 100644 --- a/src/main/java/jp/naist/se/stigmata/utils/ConfigFileExporter.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/ConfigFileExporter.java @@ -1,176 +1,176 @@ -package jp.naist.se.stigmata.utils; - -/* - * $Id$ - */ -import java.io.IOException; -import java.io.PrintWriter; -import java.net.URL; -import java.util.Iterator; -import java.util.Map; - -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.ComparisonPairFilterSet; -import jp.naist.se.stigmata.birthmarks.BirthmarkService; -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -import org.apache.commons.beanutils.BeanUtils; - -/** - * Export birthmark environment to xml file. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ConfigFileExporter{ - private BirthmarkEnvironment environment; - - public ConfigFileExporter(BirthmarkEnvironment environment){ - this.environment = environment; - } - - public void export(BirthmarkEnvironment environment, PrintWriter out) throws IOException{ - new ConfigFileExporter(environment).export(out); - } - - public void export(PrintWriter out) throws IOException{ - out.println(""); - out.println(""); - - exportServices(out); - exportFilters(out); - exportWellknownClasses(out); - exportClasspath(out); - exportProperties(out); - - out.println(""); - out.flush(); - } - - private void exportProperties(PrintWriter out) throws IOException{ - out.println(" "); - for(Iterator i = environment.propertyKeys(); i.hasNext(); ){ - String key = i.next(); - String value = environment.getProperty(key); - out.println(" "); - out.printf(" %s%n", key); - out.printf(" %s%n", value); - out.println(" "); - } - out.println(" "); - } - - private void exportClasspath(PrintWriter out) throws IOException{ - out.println(" "); - for(URL location: environment.getClasspathContext()){ - out.printf(" %s%n", location.toString()); - } - out.println(" "); - } - - private void exportWellknownClasses(PrintWriter out) throws IOException{ - out.println(" "); - for(WellknownClassJudgeRule rule: environment.getWellknownClassManager()){ - String value = rule.getPattern(); - String tag; - String matchtag; - switch(rule.getMatchPartType()){ - case CLASS_NAME: - tag = "class-name"; - break; - case FULLY_NAME: - tag = "fully-name"; - break; - case PACKAGE_NAME: - tag = "package-name"; - break; - default: - throw new InternalError("unknown part type: " + rule.getMatchPartType()); - } - switch(rule.getMatchType()){ - case EXACT: - matchtag = "match"; - break; - case NOT_MATCH: - matchtag = "not-match"; - break; - case PREFIX: - matchtag = "prefix"; - break; - case SUFFIX: - matchtag = "suffix"; - break; - default: - throw new InternalError("unknown match type: " + rule.getMatchType()); - } - - out.print(" "); - if(rule.isExclude()) out.print(""); - out.printf("<%s><%s>%s", tag, matchtag, value, matchtag, tag); - if(rule.isExclude()) out.print(""); - out.println(); - } - out.println(" "); - } - - @SuppressWarnings("unchecked") - private void exportFilters(PrintWriter out) throws IOException{ - out.println(" "); - for(ComparisonPairFilterSet filterset: environment.getFilterManager().getFilterSets()){ - out.println(" "); - out.printf(" %s%n", filterset.getName()); - out.printf(" %s%n", filterset.isMatchAll()? "all": "any"); - out.println(" "); - for(ComparisonPairFilter filter: filterset){ - out.println(" "); - out.printf(" %s%n", filter.getService().getFilterName()); - out.printf(" %s%n", filter.getCriterion()); - try{ - Map props = BeanUtils.describe(filter); - props.remove("service"); - props.remove("class"); - props.remove("criterion"); - props.remove("acceptableCriteria"); - out.println(" "); - for(Object object: props.entrySet()){ - Map.Entry entry = (Map.Entry)object; - Object value = entry.getValue(); - out.println(" "); - out.printf(" %s%n", String.valueOf(entry.getKey())); - if(value == null){ - out.println(" %n"); - } - else{ - out.printf(" %s%n", String.valueOf(entry.getValue())); - } - out.println(" "); - } - out.println(" "); - } catch(Exception e){ - e.printStackTrace(); - } - out.println(" "); - } - out.println(" "); - out.println(" "); - } - out.println(" "); - } - - private void exportServices(PrintWriter out) throws IOException{ - out.println(" "); - for(BirthmarkSpi service: environment.getServices()){ - if(service.isExpert() && service instanceof BirthmarkService){ - out.println(" "); - out.printf(" %s%n", service.getType()); - out.printf(" %s%n", service.getDisplayType()); - out.printf(" %s%n", service.getDescription()); - out.printf(" %s%n", service.getExtractorClassName()); - out.printf(" %s%n", service.getComparatorClassName()); - out.println(" "); - } - } - out.println(" "); - } -} +package jp.sourceforge.stigmata.utils; + +/* + * $Id$ + */ +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URL; +import java.util.Iterator; +import java.util.Map; + +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.ComparisonPairFilterSet; +import jp.sourceforge.stigmata.birthmarks.BirthmarkService; +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +import org.apache.commons.beanutils.BeanUtils; + +/** + * Export birthmark environment to xml file. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ConfigFileExporter{ + private BirthmarkEnvironment environment; + + public ConfigFileExporter(BirthmarkEnvironment environment){ + this.environment = environment; + } + + public void export(BirthmarkEnvironment environment, PrintWriter out) throws IOException{ + new ConfigFileExporter(environment).export(out); + } + + public void export(PrintWriter out) throws IOException{ + out.println(""); + out.println(""); + + exportServices(out); + exportFilters(out); + exportWellknownClasses(out); + exportClasspath(out); + exportProperties(out); + + out.println(""); + out.flush(); + } + + private void exportProperties(PrintWriter out) throws IOException{ + out.println(" "); + for(Iterator i = environment.propertyKeys(); i.hasNext(); ){ + String key = i.next(); + String value = environment.getProperty(key); + out.println(" "); + out.printf(" %s%n", key); + out.printf(" %s%n", value); + out.println(" "); + } + out.println(" "); + } + + private void exportClasspath(PrintWriter out) throws IOException{ + out.println(" "); + for(URL location: environment.getClasspathContext()){ + out.printf(" %s%n", location.toString()); + } + out.println(" "); + } + + private void exportWellknownClasses(PrintWriter out) throws IOException{ + out.println(" "); + for(WellknownClassJudgeRule rule: environment.getWellknownClassManager()){ + String value = rule.getPattern(); + String tag; + String matchtag; + switch(rule.getMatchPartType()){ + case CLASS_NAME: + tag = "class-name"; + break; + case FULLY_NAME: + tag = "fully-name"; + break; + case PACKAGE_NAME: + tag = "package-name"; + break; + default: + throw new InternalError("unknown part type: " + rule.getMatchPartType()); + } + switch(rule.getMatchType()){ + case EXACT: + matchtag = "match"; + break; + case NOT_MATCH: + matchtag = "not-match"; + break; + case PREFIX: + matchtag = "prefix"; + break; + case SUFFIX: + matchtag = "suffix"; + break; + default: + throw new InternalError("unknown match type: " + rule.getMatchType()); + } + + out.print(" "); + if(rule.isExclude()) out.print(""); + out.printf("<%s><%s>%s", tag, matchtag, value, matchtag, tag); + if(rule.isExclude()) out.print(""); + out.println(); + } + out.println(" "); + } + + @SuppressWarnings("unchecked") + private void exportFilters(PrintWriter out) throws IOException{ + out.println(" "); + for(ComparisonPairFilterSet filterset: environment.getFilterManager().getFilterSets()){ + out.println(" "); + out.printf(" %s%n", filterset.getName()); + out.printf(" %s%n", filterset.isMatchAll()? "all": "any"); + out.println(" "); + for(ComparisonPairFilter filter: filterset){ + out.println(" "); + out.printf(" %s%n", filter.getService().getFilterName()); + out.printf(" %s%n", filter.getCriterion()); + try{ + Map props = BeanUtils.describe(filter); + props.remove("service"); + props.remove("class"); + props.remove("criterion"); + props.remove("acceptableCriteria"); + out.println(" "); + for(Object object: props.entrySet()){ + Map.Entry entry = (Map.Entry)object; + Object value = entry.getValue(); + out.println(" "); + out.printf(" %s%n", String.valueOf(entry.getKey())); + if(value == null){ + out.println(" %n"); + } + else{ + out.printf(" %s%n", String.valueOf(entry.getValue())); + } + out.println(" "); + } + out.println(" "); + } catch(Exception e){ + e.printStackTrace(); + } + out.println(" "); + } + out.println(" "); + out.println(" "); + } + out.println(" "); + } + + private void exportServices(PrintWriter out) throws IOException{ + out.println(" "); + for(BirthmarkSpi service: environment.getServices()){ + if(service.isExpert() && service instanceof BirthmarkService){ + out.println(" "); + out.printf(" %s%n", service.getType()); + out.printf(" %s%n", service.getDisplayType()); + out.printf(" %s%n", service.getDescription()); + out.printf(" %s%n", service.getExtractorClassName()); + out.printf(" %s%n", service.getComparatorClassName()); + out.println(" "); + } + } + out.println(" "); + } +} diff --git a/src/main/java/jp/naist/se/stigmata/utils/ConfigFileImporter.java b/src/main/java/jp/sourceforge/stigmata/utils/ConfigFileImporter.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/utils/ConfigFileImporter.java rename to src/main/java/jp/sourceforge/stigmata/utils/ConfigFileImporter.java index f645f80..9a354fa 100644 --- a/src/main/java/jp/naist/se/stigmata/utils/ConfigFileImporter.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/ConfigFileImporter.java @@ -1,241 +1,241 @@ -package jp.naist.se.stigmata.utils; - -/* - * $Id$ - */ - -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; - -import jp.naist.se.stigmata.BirthmarkEnvironment; -import jp.naist.se.stigmata.ComparisonPairFilter; -import jp.naist.se.stigmata.ComparisonPairFilterSet; -import jp.naist.se.stigmata.Stigmata; -import jp.naist.se.stigmata.birthmarks.BirthmarkService; - -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.DefaultHandler; - -/** - * configuration file parser. - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ConfigFileImporter{ - private BirthmarkEnvironment environment; - - public ConfigFileImporter(BirthmarkEnvironment environment){ - this.environment = environment; - } - - public ConfigFileImporter(){ - // generate environment. - } - - public BirthmarkEnvironment parse(InputStream in) throws IOException{ - try{ - SAXParserFactory factory = SAXParserFactory.newInstance(); - SAXParser parser = factory.newSAXParser(); - Handler handler = new Handler(getEnvironment()); - parser.parse(in, handler); - this.environment = handler.getEnvironment(); - - return environment; - }catch(ParserConfigurationException e){ - throw new IOException(e.getMessage()); - }catch(SAXException e){ - throw new IOException(e.getMessage()); - } - } - - public BirthmarkEnvironment getEnvironment(){ - return environment; - } - - private static enum Part{ - WELLKNOWN_CLASSES, PROPERTIES, CLASSPATH, SERVICES, FILTER_SET, FILTER_DEFINITION, - } - - private static class Handler extends DefaultHandler{ - private BirthmarkEnvironment environment; - private WellknownClassManager manager; - private BirthmarkService service; - private ComparisonPairFilterSet filter; - private Part part; - private boolean exclude; - private WellknownClassJudgeRule.MatchType matchType; - private WellknownClassJudgeRule.MatchPartType partType; - private String qname; - private String key; - private String filterType, filterCriterion, attributeName; - private Map filterAttributes = new HashMap(); - - public Handler(BirthmarkEnvironment environment){ - if(environment == null){ - environment = Stigmata.getInstance().createEnvironment(); - } - this.environment = environment; - this.manager = environment.getWellknownClassManager(); - } - - public BirthmarkEnvironment getEnvironment(){ - return environment; - } - - @Override - public void startElement(String uri, String localName, String qname, - Attributes attributes) throws SAXException{ - this.qname = qname; - - if(qname.equals("wellknown-classes")){ - part = Part.WELLKNOWN_CLASSES; - } - else if(qname.equals("property")){ - part = Part.PROPERTIES; - } - else if(qname.equals("classpath-list")){ - part = Part.CLASSPATH; - } - else if(qname.equals("birthmark-service")){ - part = Part.SERVICES; - service = new BirthmarkService(); - service.setUserDefined(false); - } - else if(qname.equals("filterset-list")){ - part = Part.FILTER_SET; - } - - if(part == Part.FILTER_SET){ - if(qname.equals("filterset")){ - filter = new ComparisonPairFilterSet(); - } - else if(qname.equals("filter")){ - part = Part.FILTER_DEFINITION; - filterAttributes.clear(); - } - } - else if(part == Part.WELLKNOWN_CLASSES){ - if(qname.equals("exclude")){ - exclude = true; - } - else if(qname.equals("package-name")){ - partType = WellknownClassJudgeRule.MatchPartType.PACKAGE_NAME; - } - else if(qname.equals("class-name")){ - partType = WellknownClassJudgeRule.MatchPartType.CLASS_NAME; - } - else if(qname.equals("fully-name")){ - partType = WellknownClassJudgeRule.MatchPartType.FULLY_NAME; - } - else if(qname.equals("suffix")){ - matchType = WellknownClassJudgeRule.MatchType.SUFFIX; - } - else if(qname.equals("prefix")){ - matchType = WellknownClassJudgeRule.MatchType.PREFIX; - } - else if(qname.equals("match")){ - matchType = WellknownClassJudgeRule.MatchType.EXACT; - } - else if(qname.equals("not-match")){ - matchType = WellknownClassJudgeRule.MatchType.NOT_MATCH; - } - } - } - - @Override - public void characters(char[] data, int offset, int length) throws SAXException{ - String value = new String(data, offset, length).trim(); - - if(value.length() > 0){ - if(part == Part.PROPERTIES){ - if(qname.equals("name")){ - key = value; - } - else if(qname.equals("value")){ - environment.addProperty(key, value); - } - } - else if(part == Part.WELLKNOWN_CLASSES - && (qname.equals("suffix") || qname.equals("prefix") || qname.equals("match"))){ - manager.add(new WellknownClassJudgeRule(value, matchType, partType, exclude)); - exclude = false; - } - else if(part == Part.CLASSPATH && qname.equals("classpath")){ - try{ - environment.getClasspathContext().addClasspath( - new URL(value)); - }catch(MalformedURLException e){ - throw new SAXException(e); - } - } - else if(part == Part.SERVICES){ - if(qname.equals("type")) - service.setType(value); - else if(qname.equals("display-name")) - service.setDisplayType(value); - else if(qname.equals("description")) - service.setDescription(value); - else if(qname.equals("extractor")) - service.setExtractorClassName(value); - else if(qname.equals("comparator")) - service.setComparatorClassName(value); - } - else if(part == Part.FILTER_SET){ - if(qname.equals("name")){ - filter.setName(value); - } - else if(qname.equals("match")){ - if(value.equals("all")){ - filter.setMatchAll(); - } - else{ - filter.setMatchAny(); - } - } - } - else if(part == Part.FILTER_DEFINITION){ - if(qname.equals("filter-type")){ - filterType = value; - } - else if(qname.equals("criterion")){ - filterCriterion = value; - } - else if(qname.equals("name")){ - attributeName = value; - } - else{ - filterAttributes.put(attributeName, value); - } - } - } - } - - @Override - public void endElement(String uri, String localname, String qname){ - if(part == Part.SERVICES && qname.equals("birthmark-service")){ - environment.addService(service); - service = null; - } - else if(part == Part.FILTER_DEFINITION && qname.equals("filter")){ - ComparisonPairFilter f = environment.getFilterManager().buildFilter( - filterType, filterCriterion, filterAttributes - ); - filter.addFilter(f); - part = Part.FILTER_SET; - } - else if(part == Part.FILTER_SET && qname.equals("filterset")){ - environment.getFilterManager().addFilterSet(filter); - } - } - } -} +package jp.sourceforge.stigmata.utils; + +/* + * $Id$ + */ + +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.ComparisonPairFilterSet; +import jp.sourceforge.stigmata.Stigmata; +import jp.sourceforge.stigmata.birthmarks.BirthmarkService; + +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +/** + * configuration file parser. + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ConfigFileImporter{ + private BirthmarkEnvironment environment; + + public ConfigFileImporter(BirthmarkEnvironment environment){ + this.environment = environment; + } + + public ConfigFileImporter(){ + // generate environment. + } + + public BirthmarkEnvironment parse(InputStream in) throws IOException{ + try{ + SAXParserFactory factory = SAXParserFactory.newInstance(); + SAXParser parser = factory.newSAXParser(); + Handler handler = new Handler(getEnvironment()); + parser.parse(in, handler); + this.environment = handler.getEnvironment(); + + return environment; + }catch(ParserConfigurationException e){ + throw new IOException(e.getMessage()); + }catch(SAXException e){ + throw new IOException(e.getMessage()); + } + } + + public BirthmarkEnvironment getEnvironment(){ + return environment; + } + + private static enum Part{ + WELLKNOWN_CLASSES, PROPERTIES, CLASSPATH, SERVICES, FILTER_SET, FILTER_DEFINITION, + } + + private static class Handler extends DefaultHandler{ + private BirthmarkEnvironment environment; + private WellknownClassManager manager; + private BirthmarkService service; + private ComparisonPairFilterSet filter; + private Part part; + private boolean exclude; + private WellknownClassJudgeRule.MatchType matchType; + private WellknownClassJudgeRule.MatchPartType partType; + private String qname; + private String key; + private String filterType, filterCriterion, attributeName; + private Map filterAttributes = new HashMap(); + + public Handler(BirthmarkEnvironment environment){ + if(environment == null){ + environment = Stigmata.getInstance().createEnvironment(); + } + this.environment = environment; + this.manager = environment.getWellknownClassManager(); + } + + public BirthmarkEnvironment getEnvironment(){ + return environment; + } + + @Override + public void startElement(String uri, String localName, String qname, + Attributes attributes) throws SAXException{ + this.qname = qname; + + if(qname.equals("wellknown-classes")){ + part = Part.WELLKNOWN_CLASSES; + } + else if(qname.equals("property")){ + part = Part.PROPERTIES; + } + else if(qname.equals("classpath-list")){ + part = Part.CLASSPATH; + } + else if(qname.equals("birthmark-service")){ + part = Part.SERVICES; + service = new BirthmarkService(); + service.setUserDefined(false); + } + else if(qname.equals("filterset-list")){ + part = Part.FILTER_SET; + } + + if(part == Part.FILTER_SET){ + if(qname.equals("filterset")){ + filter = new ComparisonPairFilterSet(); + } + else if(qname.equals("filter")){ + part = Part.FILTER_DEFINITION; + filterAttributes.clear(); + } + } + else if(part == Part.WELLKNOWN_CLASSES){ + if(qname.equals("exclude")){ + exclude = true; + } + else if(qname.equals("package-name")){ + partType = WellknownClassJudgeRule.MatchPartType.PACKAGE_NAME; + } + else if(qname.equals("class-name")){ + partType = WellknownClassJudgeRule.MatchPartType.CLASS_NAME; + } + else if(qname.equals("fully-name")){ + partType = WellknownClassJudgeRule.MatchPartType.FULLY_NAME; + } + else if(qname.equals("suffix")){ + matchType = WellknownClassJudgeRule.MatchType.SUFFIX; + } + else if(qname.equals("prefix")){ + matchType = WellknownClassJudgeRule.MatchType.PREFIX; + } + else if(qname.equals("match")){ + matchType = WellknownClassJudgeRule.MatchType.EXACT; + } + else if(qname.equals("not-match")){ + matchType = WellknownClassJudgeRule.MatchType.NOT_MATCH; + } + } + } + + @Override + public void characters(char[] data, int offset, int length) throws SAXException{ + String value = new String(data, offset, length).trim(); + + if(value.length() > 0){ + if(part == Part.PROPERTIES){ + if(qname.equals("name")){ + key = value; + } + else if(qname.equals("value")){ + environment.addProperty(key, value); + } + } + else if(part == Part.WELLKNOWN_CLASSES + && (qname.equals("suffix") || qname.equals("prefix") || qname.equals("match"))){ + manager.add(new WellknownClassJudgeRule(value, matchType, partType, exclude)); + exclude = false; + } + else if(part == Part.CLASSPATH && qname.equals("classpath")){ + try{ + environment.getClasspathContext().addClasspath( + new URL(value)); + }catch(MalformedURLException e){ + throw new SAXException(e); + } + } + else if(part == Part.SERVICES){ + if(qname.equals("type")) + service.setType(value); + else if(qname.equals("display-name")) + service.setDisplayType(value); + else if(qname.equals("description")) + service.setDescription(value); + else if(qname.equals("extractor")) + service.setExtractorClassName(value); + else if(qname.equals("comparator")) + service.setComparatorClassName(value); + } + else if(part == Part.FILTER_SET){ + if(qname.equals("name")){ + filter.setName(value); + } + else if(qname.equals("match")){ + if(value.equals("all")){ + filter.setMatchAll(); + } + else{ + filter.setMatchAny(); + } + } + } + else if(part == Part.FILTER_DEFINITION){ + if(qname.equals("filter-type")){ + filterType = value; + } + else if(qname.equals("criterion")){ + filterCriterion = value; + } + else if(qname.equals("name")){ + attributeName = value; + } + else{ + filterAttributes.put(attributeName, value); + } + } + } + } + + @Override + public void endElement(String uri, String localname, String qname){ + if(part == Part.SERVICES && qname.equals("birthmark-service")){ + environment.addService(service); + service = null; + } + else if(part == Part.FILTER_DEFINITION && qname.equals("filter")){ + ComparisonPairFilter f = environment.getFilterManager().buildFilter( + filterType, filterCriterion, filterAttributes + ); + filter.addFilter(f); + part = Part.FILTER_SET; + } + else if(part == Part.FILTER_SET && qname.equals("filterset")){ + environment.getFilterManager().addFilterSet(filter); + } + } + } +} diff --git a/src/main/java/jp/naist/se/stigmata/utils/LocalizedDescriptionManager.java b/src/main/java/jp/sourceforge/stigmata/utils/LocalizedDescriptionManager.java similarity index 94% rename from src/main/java/jp/naist/se/stigmata/utils/LocalizedDescriptionManager.java rename to src/main/java/jp/sourceforge/stigmata/utils/LocalizedDescriptionManager.java index 049b847..4e3d533 100644 --- a/src/main/java/jp/naist/se/stigmata/utils/LocalizedDescriptionManager.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/LocalizedDescriptionManager.java @@ -1,67 +1,67 @@ -package jp.naist.se.stigmata.utils; - -/* - * $Id$ - */ - -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -/** - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class LocalizedDescriptionManager{ - public static enum ServiceCategory{ - comparator, extractor, birthmark, formatter, filter, - }; - private Map resources = new HashMap(); - - /** - * only one instance of singleton pattern. - */ - private static LocalizedDescriptionManager manager = new LocalizedDescriptionManager(); - - private LocalizedDescriptionManager(){ - } - - public String getDisplayType(Locale locale, String type){ - return getDisplayType(locale, type, ServiceCategory.birthmark); - } - - public String getDisplayType(Locale locale, String type, ServiceCategory category){ - try{ - return getBundle(locale).getString(category.name() + "." + type + ".display.type"); - } catch(MissingResourceException e){ - return null; - } - } - - public String getDescription(Locale locale, String birthmarkType){ - return getDescription(locale, birthmarkType, ServiceCategory.birthmark); - } - - public String getDescription(Locale locale, String type, ServiceCategory category){ - try{ - return getBundle(locale).getString(category.name() + "." + type + ".description"); - } catch(MissingResourceException e){ - return null; - } - } - - private ResourceBundle getBundle(Locale locale){ - ResourceBundle bundle = resources.get(locale); - if(bundle == null){ - bundle = ResourceBundle.getBundle("resources.description", locale); - resources.put(locale, bundle); - } - return bundle; - } - - public static LocalizedDescriptionManager getInstance(){ - return manager; - } -} +package jp.sourceforge.stigmata.utils; + +/* + * $Id$ + */ + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +/** + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class LocalizedDescriptionManager{ + public static enum ServiceCategory{ + comparator, extractor, birthmark, formatter, filter, + }; + private Map resources = new HashMap(); + + /** + * only one instance of singleton pattern. + */ + private static LocalizedDescriptionManager manager = new LocalizedDescriptionManager(); + + private LocalizedDescriptionManager(){ + } + + public String getDisplayType(Locale locale, String type){ + return getDisplayType(locale, type, ServiceCategory.birthmark); + } + + public String getDisplayType(Locale locale, String type, ServiceCategory category){ + try{ + return getBundle(locale).getString(category.name() + "." + type + ".display.type"); + } catch(MissingResourceException e){ + return null; + } + } + + public String getDescription(Locale locale, String birthmarkType){ + return getDescription(locale, birthmarkType, ServiceCategory.birthmark); + } + + public String getDescription(Locale locale, String type, ServiceCategory category){ + try{ + return getBundle(locale).getString(category.name() + "." + type + ".description"); + } catch(MissingResourceException e){ + return null; + } + } + + private ResourceBundle getBundle(Locale locale){ + ResourceBundle bundle = resources.get(locale); + if(bundle == null){ + bundle = ResourceBundle.getBundle("resources.description", locale); + resources.put(locale, bundle); + } + return bundle; + } + + public static LocalizedDescriptionManager getInstance(){ + return manager; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/utils/MultipleIterator.java b/src/main/java/jp/sourceforge/stigmata/utils/MultipleIterator.java similarity index 97% rename from src/main/java/jp/naist/se/stigmata/utils/MultipleIterator.java rename to src/main/java/jp/sourceforge/stigmata/utils/MultipleIterator.java index 73d9600..e379540 100755 --- a/src/main/java/jp/naist/se/stigmata/utils/MultipleIterator.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/MultipleIterator.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.utils; +package jp.sourceforge.stigmata.utils; /* * $Id$ diff --git a/src/main/java/jp/naist/se/stigmata/utils/Names.java b/src/main/java/jp/sourceforge/stigmata/utils/Names.java similarity index 96% rename from src/main/java/jp/naist/se/stigmata/utils/Names.java rename to src/main/java/jp/sourceforge/stigmata/utils/Names.java index ab13c8b..5578ec4 100755 --- a/src/main/java/jp/naist/se/stigmata/utils/Names.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/Names.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.utils; +package jp.sourceforge.stigmata.utils; /* * $Id$ diff --git a/src/main/java/jp/naist/se/stigmata/utils/NullIterator.java b/src/main/java/jp/sourceforge/stigmata/utils/NullIterator.java similarity index 86% rename from src/main/java/jp/naist/se/stigmata/utils/NullIterator.java rename to src/main/java/jp/sourceforge/stigmata/utils/NullIterator.java index 35a0d6a..0672f68 100755 --- a/src/main/java/jp/naist/se/stigmata/utils/NullIterator.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/NullIterator.java @@ -1,26 +1,26 @@ -package jp.naist.se.stigmata.utils; - -/* - * $Id$ - */ - -import java.util.Iterator; -import java.util.NoSuchElementException; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class NullIterator implements Iterator{ - public boolean hasNext(){ - return false; - } - - public T next(){ - throw new NoSuchElementException("no more object"); - } - - public void remove(){ - } -} +package jp.sourceforge.stigmata.utils; + +/* + * $Id$ + */ + +import java.util.Iterator; +import java.util.NoSuchElementException; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class NullIterator implements Iterator{ + public boolean hasNext(){ + return false; + } + + public T next(){ + throw new NoSuchElementException("no more object"); + } + + public void remove(){ + } +} diff --git a/src/main/java/jp/naist/se/stigmata/utils/Utility.java b/src/main/java/jp/sourceforge/stigmata/utils/Utility.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/utils/Utility.java rename to src/main/java/jp/sourceforge/stigmata/utils/Utility.java index b871898..8fe8cef 100755 --- a/src/main/java/jp/naist/se/stigmata/utils/Utility.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/Utility.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.utils; +package jp.sourceforge.stigmata.utils; import java.io.File; diff --git a/src/main/java/jp/naist/se/stigmata/utils/WarClassLoader.java b/src/main/java/jp/sourceforge/stigmata/utils/WarClassLoader.java similarity index 95% rename from src/main/java/jp/naist/se/stigmata/utils/WarClassLoader.java rename to src/main/java/jp/sourceforge/stigmata/utils/WarClassLoader.java index fd48031..10ec066 100755 --- a/src/main/java/jp/naist/se/stigmata/utils/WarClassLoader.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/WarClassLoader.java @@ -1,71 +1,71 @@ -package jp.naist.se.stigmata.utils; - -/* - * $Id$ - */ - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.net.URLClassLoader; -import java.net.URLStreamHandlerFactory; - -/** - * ClassLoader for war file. - * A war file layouts classes in /WEB-INF/classes directory. - * Therefore, plain jar class loader cannot load classes included in war file. - * Because plain jar class loader only loads classes in top directory. - * Then, this class loader can load classes included in a plain jar file and a war file. - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class WarClassLoader extends URLClassLoader{ - public WarClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory){ - super(urls, parent, factory); - } - - public WarClassLoader(URL[] urls, ClassLoader parent){ - super(urls, parent); - } - - public WarClassLoader(URL[] urls){ - super(urls); - } - - @Override - protected Class findClass(String name) throws ClassNotFoundException{ - Class clazz = null; - try{ - clazz = super.findClass(name); - } catch(ClassNotFoundException e){ - String path = "WEB-INF/classes/" + name.replace('.', '/') + ".class"; - for(URL url: getURLs()){ - if(url.toString().endsWith(".war")){ - try{ - URL newurl = new URL("jar:" + url + "!/" + path); - InputStream in = newurl.openStream(); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - byte[] data = new byte[256]; - int read = 0; - while((read = in.read(data, 0, data.length)) != -1){ - out.write(data, 0, read); - } - byte[] classdata = out.toByteArray(); - in.close(); - out.close(); - - clazz = defineClass(name, classdata, 0, classdata.length); - break; - } catch(IOException exp){ - } - } - } - } - if(clazz == null){ - throw new ClassNotFoundException(name); - } - return clazz; - } -} +package jp.sourceforge.stigmata.utils; + +/* + * $Id$ + */ + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLStreamHandlerFactory; + +/** + * ClassLoader for war file. + * A war file layouts classes in /WEB-INF/classes directory. + * Therefore, plain jar class loader cannot load classes included in war file. + * Because plain jar class loader only loads classes in top directory. + * Then, this class loader can load classes included in a plain jar file and a war file. + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class WarClassLoader extends URLClassLoader{ + public WarClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory){ + super(urls, parent, factory); + } + + public WarClassLoader(URL[] urls, ClassLoader parent){ + super(urls, parent); + } + + public WarClassLoader(URL[] urls){ + super(urls); + } + + @Override + protected Class findClass(String name) throws ClassNotFoundException{ + Class clazz = null; + try{ + clazz = super.findClass(name); + } catch(ClassNotFoundException e){ + String path = "WEB-INF/classes/" + name.replace('.', '/') + ".class"; + for(URL url: getURLs()){ + if(url.toString().endsWith(".war")){ + try{ + URL newurl = new URL("jar:" + url + "!/" + path); + InputStream in = newurl.openStream(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + byte[] data = new byte[256]; + int read = 0; + while((read = in.read(data, 0, data.length)) != -1){ + out.write(data, 0, read); + } + byte[] classdata = out.toByteArray(); + in.close(); + out.close(); + + clazz = defineClass(name, classdata, 0, classdata.length); + break; + } catch(IOException exp){ + } + } + } + } + if(clazz == null){ + throw new ClassNotFoundException(name); + } + return clazz; + } +} diff --git a/src/main/java/jp/naist/se/stigmata/utils/WellknownClassJudgeRule.java b/src/main/java/jp/sourceforge/stigmata/utils/WellknownClassJudgeRule.java similarity index 98% rename from src/main/java/jp/naist/se/stigmata/utils/WellknownClassJudgeRule.java rename to src/main/java/jp/sourceforge/stigmata/utils/WellknownClassJudgeRule.java index 863a279..2397212 100644 --- a/src/main/java/jp/naist/se/stigmata/utils/WellknownClassJudgeRule.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/WellknownClassJudgeRule.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.utils; +package jp.sourceforge.stigmata.utils; /* * $Id$ diff --git a/src/main/java/jp/naist/se/stigmata/utils/WellknownClassManager.java b/src/main/java/jp/sourceforge/stigmata/utils/WellknownClassManager.java similarity index 96% rename from src/main/java/jp/naist/se/stigmata/utils/WellknownClassManager.java rename to src/main/java/jp/sourceforge/stigmata/utils/WellknownClassManager.java index 122038c..89f09b4 100644 --- a/src/main/java/jp/naist/se/stigmata/utils/WellknownClassManager.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/WellknownClassManager.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.utils; +package jp.sourceforge.stigmata.utils; /* * $Id$ @@ -8,8 +8,8 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import jp.naist.se.stigmata.utils.WellknownClassJudgeRule.MatchPartType; -import jp.naist.se.stigmata.utils.WellknownClassJudgeRule.MatchType; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchPartType; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchType; import org.objectweb.asm.Opcodes; diff --git a/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.BirthmarkComparatorSpi b/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.BirthmarkComparatorSpi deleted file mode 100755 index faad882..0000000 --- a/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.BirthmarkComparatorSpi +++ /dev/null @@ -1,6 +0,0 @@ -jp.naist.se.stigmata.birthmarks.comparators.PlainBirthmarkComparatorService -jp.naist.se.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparatorService -jp.naist.se.stigmata.birthmarks.comparators.DPMatchingBirthmarkComparatorService -jp.naist.se.stigmata.birthmarks.comparators.EditDistanceBirthmarkComparatorService -jp.naist.se.stigmata.birthmarks.comparators.ExtendedEditDistanceBirthmarkComparatorService -jp.naist.se.stigmata.birthmarks.comparators.CosineSimilarityBirthmarkComparatorService diff --git a/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.BirthmarkExtractorSpi b/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.BirthmarkExtractorSpi deleted file mode 100755 index 814d715..0000000 --- a/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.BirthmarkExtractorSpi +++ /dev/null @@ -1,7 +0,0 @@ -jp.naist.se.stigmata.birthmarks.extractors.ConstantValueOfFieldVariableBirthmarkExtractorService -jp.naist.se.stigmata.birthmarks.extractors.InheritanceStructureBirthmarkExtractorService -jp.naist.se.stigmata.birthmarks.extractors.SequentialMethodCallBirthmarkExtractorService -jp.naist.se.stigmata.birthmarks.extractors.UsedClassesBirthmarkExtractorService -jp.naist.se.stigmata.birthmarks.extractors.KGramBasedBirthmarkExtractorService -jp.naist.se.stigmata.birthmarks.extractors.FrequencyMethodCallBirthmarkExtractorService -jp.naist.se.stigmata.birthmarks.extractors.FrequencyUsedClassesBirthmarkExtractorService diff --git a/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.BirthmarkSpi b/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.BirthmarkSpi deleted file mode 100755 index 0760b1b..0000000 --- a/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.BirthmarkSpi +++ /dev/null @@ -1,7 +0,0 @@ -jp.naist.se.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkService -jp.naist.se.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkService -jp.naist.se.stigmata.birthmarks.is.InheritanceStructureBirthmarkService -jp.naist.se.stigmata.birthmarks.uc.UsedClassesBirthmarkService -jp.naist.se.stigmata.birthmarks.kgram.KGramBasedBirthmarkService -jp.naist.se.stigmata.birthmarks.fmc.FrequencyMethodCallBirthmarkService -jp.naist.se.stigmata.birthmarks.fuc.FrequencyUsedClassesBirthmarkService diff --git a/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.ComparisonPairFilterSpi b/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.ComparisonPairFilterSpi deleted file mode 100755 index 8a0d755..0000000 --- a/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.ComparisonPairFilterSpi +++ /dev/null @@ -1,4 +0,0 @@ -jp.naist.se.stigmata.filter.BirthmarkElementCountComparisonPairFilterService -jp.naist.se.stigmata.filter.SimilarityComparisonPairFilterService -jp.naist.se.stigmata.filter.TargetNameComparisonPairFilterService -jp.naist.se.stigmata.filter.TotalElementCountComparisonPairFilterService diff --git a/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.ExtractedBirthmarkSpi b/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.ExtractedBirthmarkSpi deleted file mode 100755 index 9697f49..0000000 --- a/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.ExtractedBirthmarkSpi +++ /dev/null @@ -1,3 +0,0 @@ -jp.naist.se.stigmata.result.MemoryExtractedBirthmarkService -jp.naist.se.stigmata.result.XmlFileExtractedBirthmarkService -jp.naist.se.stigmata.result.RDBExtractedBirthmarkService diff --git a/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.ResultPrinterSpi b/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.ResultPrinterSpi deleted file mode 100755 index 019a10e..0000000 --- a/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.ResultPrinterSpi +++ /dev/null @@ -1,2 +0,0 @@ -jp.naist.se.stigmata.printer.xml.XmlResultPrinterService -jp.naist.se.stigmata.printer.csv.CsvResultPrinterService diff --git a/src/main/resources/META-INF/services/jp.naist.se.stigmata.ui.swing.filter.ComparisonPairFilterComponentService b/src/main/resources/META-INF/services/jp.naist.se.stigmata.ui.swing.filter.ComparisonPairFilterComponentService deleted file mode 100755 index 03c3a79..0000000 --- a/src/main/resources/META-INF/services/jp.naist.se.stigmata.ui.swing.filter.ComparisonPairFilterComponentService +++ /dev/null @@ -1,4 +0,0 @@ -jp.naist.se.stigmata.ui.swing.filter.BirthmarkElementCountComparisonPairFilterComponentService -jp.naist.se.stigmata.ui.swing.filter.SimilarityComparisonPairFilterComponentService -jp.naist.se.stigmata.ui.swing.filter.TargetNameComparisonPairFilterComponentService -jp.naist.se.stigmata.ui.swing.filter.TotalElementCountComparisonPairFilterComponentService diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi new file mode 100755 index 0000000..9be018c --- /dev/null +++ b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi @@ -0,0 +1,6 @@ +jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparatorService +jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparatorService +jp.sourceforge.stigmata.birthmarks.comparators.DPMatchingBirthmarkComparatorService +jp.sourceforge.stigmata.birthmarks.comparators.EditDistanceBirthmarkComparatorService +jp.sourceforge.stigmata.birthmarks.comparators.ExtendedEditDistanceBirthmarkComparatorService +jp.sourceforge.stigmata.birthmarks.comparators.CosineSimilarityBirthmarkComparatorService diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi new file mode 100755 index 0000000..a9dd8e0 --- /dev/null +++ b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi @@ -0,0 +1,7 @@ +jp.sourceforge.stigmata.birthmarks.extractors.ConstantValueOfFieldVariableBirthmarkExtractorService +jp.sourceforge.stigmata.birthmarks.extractors.InheritanceStructureBirthmarkExtractorService +jp.sourceforge.stigmata.birthmarks.extractors.SequentialMethodCallBirthmarkExtractorService +jp.sourceforge.stigmata.birthmarks.extractors.UsedClassesBirthmarkExtractorService +jp.sourceforge.stigmata.birthmarks.extractors.KGramBasedBirthmarkExtractorService +jp.sourceforge.stigmata.birthmarks.extractors.FrequencyMethodCallBirthmarkExtractorService +jp.sourceforge.stigmata.birthmarks.extractors.FrequencyUsedClassesBirthmarkExtractorService diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkSpi new file mode 100755 index 0000000..0869b5d --- /dev/null +++ b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkSpi @@ -0,0 +1,7 @@ +jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkService +jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkService +jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkService +jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkService +jp.sourceforge.stigmata.birthmarks.kgram.KGramBasedBirthmarkService +jp.sourceforge.stigmata.birthmarks.fmc.FrequencyMethodCallBirthmarkService +jp.sourceforge.stigmata.birthmarks.fuc.FrequencyUsedClassesBirthmarkService diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi new file mode 100755 index 0000000..814cf3b --- /dev/null +++ b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi @@ -0,0 +1,4 @@ +jp.sourceforge.stigmata.filter.BirthmarkElementCountComparisonPairFilterService +jp.sourceforge.stigmata.filter.SimilarityComparisonPairFilterService +jp.sourceforge.stigmata.filter.TargetNameComparisonPairFilterService +jp.sourceforge.stigmata.filter.TotalElementCountComparisonPairFilterService diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi new file mode 100755 index 0000000..e6d0b97 --- /dev/null +++ b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi @@ -0,0 +1,3 @@ +jp.sourceforge.stigmata.result.MemoryExtractedBirthmarkService +jp.sourceforge.stigmata.result.XmlFileExtractedBirthmarkService +jp.sourceforge.stigmata.result.RDBExtractedBirthmarkService diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ResultPrinterSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ResultPrinterSpi new file mode 100755 index 0000000..588ce8e --- /dev/null +++ b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ResultPrinterSpi @@ -0,0 +1,2 @@ +jp.sourceforge.stigmata.printer.xml.XmlResultPrinterService +jp.sourceforge.stigmata.printer.csv.CsvResultPrinterService diff --git a/src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.StigmataHookSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.StigmataHookSpi similarity index 100% rename from src/main/resources/META-INF/services/jp.naist.se.stigmata.spi.StigmataHookSpi rename to src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.StigmataHookSpi diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.ui.swing.filter.ComparisonPairFilterComponentService b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.ui.swing.filter.ComparisonPairFilterComponentService new file mode 100755 index 0000000..cc783f3 --- /dev/null +++ b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.ui.swing.filter.ComparisonPairFilterComponentService @@ -0,0 +1,4 @@ +jp.sourceforge.stigmata.ui.swing.filter.BirthmarkElementCountComparisonPairFilterComponentService +jp.sourceforge.stigmata.ui.swing.filter.SimilarityComparisonPairFilterComponentService +jp.sourceforge.stigmata.ui.swing.filter.TargetNameComparisonPairFilterComponentService +jp.sourceforge.stigmata.ui.swing.filter.TotalElementCountComparisonPairFilterComponentService diff --git a/src/main/resources/resources/options.properties b/src/main/resources/resources/options.properties index 2e32898..9203be5 100755 --- a/src/main/resources/resources/options.properties +++ b/src/main/resources/resources/options.properties @@ -14,7 +14,7 @@ cli.option.store-target=This option represents how to store extracted birthmarks cli.interface=java -jar stigmata-%s.jar %nTARGETS is allowed as jar files, war files, class files, and classpath directory. cli.interface.birthmarks=Available birthmarks: cli.interface.filters=Available filters: -cli.interface.copyright=Copyright (C) by Haruaki Tamada, Ph.D. (SE Lab., NAIST) +cli.interface.copyright=Copyright (C) by Haruaki Tamada, Ph.D. (Kyoto Sangyo University, Japan) cli.interface.mailto=Please notify us some bugs and requests to cli.interface.filter.matchall=Match all cli.interface.filter.matchany=Match any diff --git a/src/main/resources/resources/options_ja.source b/src/main/resources/resources/options_ja.source index 1a03edb..7dd1d13 100755 --- a/src/main/resources/resources/options_ja.source +++ b/src/main/resources/resources/options_ja.source @@ -14,7 +14,7 @@ cli.option.store-target= cli.interface=java -jar stigmata-%s.jar %nTARGETS‚É‚Íjarƒtƒ@ƒCƒ‹Cwarƒtƒ@ƒCƒ‹CƒNƒ‰ƒXƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚ªŽw’è‰Â”\‚Å‚·D cli.interface.birthmarks=Žw’è‰Â”\‚ȃo[ƒXƒ}[ƒN: cli.interface.filters=Žw’è‰Â”\‚ȃtƒBƒ‹ƒ^: -cli.interface.copyright=Copyright (C) by Haruaki Tamada, Ph.D. (SE Lab., NAIST) +cli.interface.copyright=Copyright (C) by Haruaki Tamada, Ph.D. (Kyoto Sangyo University) cli.interface.mailto=ƒŠƒNƒGƒXƒg‚âƒoƒO•ñ‚Í ‚Ü‚Å‚¨Šè‚¢‚µ‚Ü‚·D cli.interface.filter.matchall=‘S‚Ä‚ÌðŒ‚Éƒ}ƒbƒ` cli.interface.filter.matchany=‚¢‚¸‚ê‚©‚ÌðŒ‚Éƒ}ƒbƒ` diff --git a/src/main/resources/resources/stigmata.xml b/src/main/resources/resources/stigmata.xml index 57e1e9b..d025465 100755 --- a/src/main/resources/resources/stigmata.xml +++ b/src/main/resources/resources/stigmata.xml @@ -10,72 +10,72 @@ $Id$ uc_seq Used Classes (compare as sequence) - jp.naist.se.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor - jp.naist.se.stigmata.birthmarks.comparators.PlainBirthmarkComparator + jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor + jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator uc_dp Used Classes (DP matching) - jp.naist.se.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor - jp.naist.se.stigmata.birthmarks.comparators.DPMatchingBirthmarkComparator + jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor + jp.sourceforge.stigmata.birthmarks.comparators.DPMatchingBirthmarkComparator uc_ed Used Classes (Edit distance) - jp.naist.se.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor - jp.naist.se.stigmata.birthmarks.comparators.EditDistanceBirthmarkComparator + jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor + jp.sourceforge.stigmata.birthmarks.comparators.EditDistanceBirthmarkComparator is_ed Inheritance Structure (Edit distance) - jp.naist.se.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor - jp.naist.se.stigmata.birthmarks.comparators.EditDistanceBirthmarkComparator + jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor + jp.sourceforge.stigmata.birthmarks.comparators.EditDistanceBirthmarkComparator is_dp Inheritance Structure (DP matching) - jp.naist.se.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor - jp.naist.se.stigmata.birthmarks.comparators.DPMatchingBirthmarkComparator + jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor + jp.sourceforge.stigmata.birthmarks.comparators.DPMatchingBirthmarkComparator smc_ed Sequence of Method Calls (Edit distance) - jp.naist.se.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor - jp.naist.se.stigmata.birthmarks.comparators.EditDistanceBirthmarkComparator + jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor + jp.sourceforge.stigmata.birthmarks.comparators.EditDistanceBirthmarkComparator smc_dp Sequence of Method Calls (DP matching) - jp.naist.se.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor - jp.naist.se.stigmata.birthmarks.comparators.DPMatchingBirthmarkComparator + jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor + jp.sourceforge.stigmata.birthmarks.comparators.DPMatchingBirthmarkComparator cvfv_ed Constant Value of Field Variable (Edit distance) - jp.naist.se.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor - jp.naist.se.stigmata.birthmarks.comparators.EditDistanceBirthmarkComparator + jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor + jp.sourceforge.stigmata.birthmarks.comparators.EditDistanceBirthmarkComparator cvfv_dp Constant Value of Field Variable (DP matching) - jp.naist.se.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor - jp.naist.se.stigmata.birthmarks.comparators.DPMatchingBirthmarkComparator + jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor + jp.sourceforge.stigmata.birthmarks.comparators.DPMatchingBirthmarkComparator diff --git a/src/site/apt/download.apt b/src/site/apt/download.apt index bb40544..d07a656 100755 --- a/src/site/apt/download.apt +++ b/src/site/apt/download.apt @@ -117,9 +117,9 @@ Next, add dependency tag entry to dependencies tag in `pom.xml.' : - jp.naist.se + jp.sourceforge stigmata - 1.0.0 + 1.2.0 : diff --git a/src/site/apt/index.apt b/src/site/apt/index.apt index 49506a5..eec932b 100755 --- a/src/site/apt/index.apt +++ b/src/site/apt/index.apt @@ -93,7 +93,7 @@ Related Tools Contact - Contact us by emal \ + Contact us by emal \ *{{{http://sourceforge.jp/developer/sendmessage.php?touser=587}Email sending form}} diff --git a/src/site/site.xml b/src/site/site.xml index 66e0084..9355d88 100755 --- a/src/site/site.xml +++ b/src/site/site.xml @@ -2,10 +2,9 @@ - NAIST SE Lab. - images/logos/selogo.png - http://se.naist.jp/ - se.naist.jp + sourceforge.jp + http://sourceforge.jp/ + sourceforge.jp Stigmata @@ -57,6 +56,7 @@ + diff --git a/src/test/java/jp/naist/se/stigmata/ServiceListTest.java b/src/test/java/jp/sourceforge/stigmata/ServiceListTest.java similarity index 94% rename from src/test/java/jp/naist/se/stigmata/ServiceListTest.java rename to src/test/java/jp/sourceforge/stigmata/ServiceListTest.java index 46eca1f..f21593f 100755 --- a/src/test/java/jp/naist/se/stigmata/ServiceListTest.java +++ b/src/test/java/jp/sourceforge/stigmata/ServiceListTest.java @@ -1,43 +1,43 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import static org.junit.Assert.assertNotNull; - -import org.junit.Before; -import org.junit.Test; - -/** - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class ServiceListTest{ - private BirthmarkEnvironment env; - - @Before - public void setup() throws Exception{ - env = Stigmata.getInstance().createEnvironment(); - } - - @Test - public void testServiceList(){ - assertNotNull(env.getService("cvfv")); - assertNotNull(env.getService("fmc")); - assertNotNull(env.getService("fuc")); - assertNotNull(env.getService("is")); - assertNotNull(env.getService("kgram")); - assertNotNull(env.getService("smc")); - assertNotNull(env.getService("uc")); - assertNotNull(env.getService("cvfv_dp")); - assertNotNull(env.getService("cvfv_ed")); - assertNotNull(env.getService("is_dp")); - assertNotNull(env.getService("is_ed")); - assertNotNull(env.getService("smc_dp")); - assertNotNull(env.getService("smc_ed")); - assertNotNull(env.getService("uc_dp")); - assertNotNull(env.getService("uc_ed")); - assertNotNull(env.getService("uc_seq")); - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import static org.junit.Assert.assertNotNull; + +import org.junit.Before; +import org.junit.Test; + +/** + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class ServiceListTest{ + private BirthmarkEnvironment env; + + @Before + public void setup() throws Exception{ + env = Stigmata.getInstance().createEnvironment(); + } + + @Test + public void testServiceList(){ + assertNotNull(env.getService("cvfv")); + assertNotNull(env.getService("fmc")); + assertNotNull(env.getService("fuc")); + assertNotNull(env.getService("is")); + assertNotNull(env.getService("kgram")); + assertNotNull(env.getService("smc")); + assertNotNull(env.getService("uc")); + assertNotNull(env.getService("cvfv_dp")); + assertNotNull(env.getService("cvfv_ed")); + assertNotNull(env.getService("is_dp")); + assertNotNull(env.getService("is_ed")); + assertNotNull(env.getService("smc_dp")); + assertNotNull(env.getService("smc_ed")); + assertNotNull(env.getService("uc_dp")); + assertNotNull(env.getService("uc_ed")); + assertNotNull(env.getService("uc_seq")); + } +} diff --git a/src/test/java/jp/naist/se/stigmata/StigmataTest.java b/src/test/java/jp/sourceforge/stigmata/StigmataTest.java similarity index 74% rename from src/test/java/jp/naist/se/stigmata/StigmataTest.java rename to src/test/java/jp/sourceforge/stigmata/StigmataTest.java index 9a0d757..315bc63 100755 --- a/src/test/java/jp/naist/se/stigmata/StigmataTest.java +++ b/src/test/java/jp/sourceforge/stigmata/StigmataTest.java @@ -1,117 +1,117 @@ -package jp.naist.se.stigmata; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.spi.BirthmarkSpi; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -/** - * test case. - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class StigmataTest{ - private BirthmarkContext context; - private BirthmarkEnvironment environment; - - @Before - public void prepare(){ - Stigmata stigmata = Stigmata.getInstance(); - context = stigmata.createContext(); - environment = context.getEnvironment(); - } - - @Test - public void checkAvailableServices() throws Exception{ - Assert.assertNotNull(environment.getService("smc")); - Assert.assertNotNull(environment.getService("cvfv")); - Assert.assertNotNull(environment.getService("is")); - Assert.assertNotNull(environment.getService("uc")); - Assert.assertNotNull(environment.getService("kgram")); - } - - @Test - public void checkSmcBirthmarkService() throws Exception{ - BirthmarkSpi service = environment.getService("smc"); - - Assert.assertNotNull(service.getComparator()); - Assert.assertNotNull(service.getExtractor()); - Assert.assertEquals( - "jp.naist.se.stigmata.birthmarks.comparators.PlainBirthmarkComparator", - service.getComparator().getClass().getName() - ); - Assert.assertEquals( - "jp.naist.se.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor", - service.getExtractor().getClass().getName() - ); - } - - @Test - public void checkCvfvBirthmarkService() throws Exception{ - BirthmarkSpi service = environment.getService("cvfv"); - - Assert.assertNotNull(service.getComparator()); - Assert.assertNotNull(service.getExtractor()); - Assert.assertEquals( - "jp.naist.se.stigmata.birthmarks.comparators.PlainBirthmarkComparator", - service.getComparator().getClass().getName() - ); - Assert.assertEquals( - "jp.naist.se.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor", - service.getExtractor().getClass().getName() - ); - } - - @Test - public void checkIsBirthmarkService() throws Exception{ - BirthmarkSpi service = environment.getService("is"); - - Assert.assertNotNull(service.getComparator()); - Assert.assertNotNull(service.getExtractor()); - Assert.assertEquals( - "jp.naist.se.stigmata.birthmarks.comparators.PlainBirthmarkComparator", - service.getComparator().getClass().getName() - ); - Assert.assertEquals( - "jp.naist.se.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor", - service.getExtractor().getClass().getName() - ); - } - - @Test - public void checkUcBirthmarkService() throws Exception{ - BirthmarkSpi service = environment.getService("uc"); - - Assert.assertNotNull(service.getComparator()); - Assert.assertNotNull(service.getExtractor()); - Assert.assertEquals( - "jp.naist.se.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator", - service.getComparator().getClass().getName() - ); - Assert.assertEquals( - "jp.naist.se.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor", - service.getExtractor().getClass().getName() - ); - } - - @Test - public void checkKgramBirthmarkService() throws Exception{ - BirthmarkSpi service = environment.getService("kgram"); - - Assert.assertNotNull(service.getComparator()); - Assert.assertNotNull(service.getExtractor()); - Assert.assertEquals( - "jp.naist.se.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator", - service.getComparator().getClass().getName() - ); - Assert.assertEquals( - "jp.naist.se.stigmata.birthmarks.kgram.KGramBasedBirthmarkExtractor", - service.getExtractor().getClass().getName() - ); - } -} +package jp.sourceforge.stigmata; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.spi.BirthmarkSpi; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * test case. + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class StigmataTest{ + private BirthmarkContext context; + private BirthmarkEnvironment environment; + + @Before + public void prepare(){ + Stigmata stigmata = Stigmata.getInstance(); + context = stigmata.createContext(); + environment = context.getEnvironment(); + } + + @Test + public void checkAvailableServices() throws Exception{ + Assert.assertNotNull(environment.getService("smc")); + Assert.assertNotNull(environment.getService("cvfv")); + Assert.assertNotNull(environment.getService("is")); + Assert.assertNotNull(environment.getService("uc")); + Assert.assertNotNull(environment.getService("kgram")); + } + + @Test + public void checkSmcBirthmarkService() throws Exception{ + BirthmarkSpi service = environment.getService("smc"); + + Assert.assertNotNull(service.getComparator()); + Assert.assertNotNull(service.getExtractor()); + Assert.assertEquals( + "jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator", + service.getComparator().getClass().getName() + ); + Assert.assertEquals( + "jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor", + service.getExtractor().getClass().getName() + ); + } + + @Test + public void checkCvfvBirthmarkService() throws Exception{ + BirthmarkSpi service = environment.getService("cvfv"); + + Assert.assertNotNull(service.getComparator()); + Assert.assertNotNull(service.getExtractor()); + Assert.assertEquals( + "jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator", + service.getComparator().getClass().getName() + ); + Assert.assertEquals( + "jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor", + service.getExtractor().getClass().getName() + ); + } + + @Test + public void checkIsBirthmarkService() throws Exception{ + BirthmarkSpi service = environment.getService("is"); + + Assert.assertNotNull(service.getComparator()); + Assert.assertNotNull(service.getExtractor()); + Assert.assertEquals( + "jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator", + service.getComparator().getClass().getName() + ); + Assert.assertEquals( + "jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor", + service.getExtractor().getClass().getName() + ); + } + + @Test + public void checkUcBirthmarkService() throws Exception{ + BirthmarkSpi service = environment.getService("uc"); + + Assert.assertNotNull(service.getComparator()); + Assert.assertNotNull(service.getExtractor()); + Assert.assertEquals( + "jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator", + service.getComparator().getClass().getName() + ); + Assert.assertEquals( + "jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor", + service.getExtractor().getClass().getName() + ); + } + + @Test + public void checkKgramBirthmarkService() throws Exception{ + BirthmarkSpi service = environment.getService("kgram"); + + Assert.assertNotNull(service.getComparator()); + Assert.assertNotNull(service.getExtractor()); + Assert.assertEquals( + "jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator", + service.getComparator().getClass().getName() + ); + Assert.assertEquals( + "jp.sourceforge.stigmata.birthmarks.kgram.KGramBasedBirthmarkExtractor", + service.getExtractor().getClass().getName() + ); + } +} diff --git a/src/test/java/jp/naist/se/stigmata/birthmarks/BirthmarkCompareTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/BirthmarkCompareTest.java similarity index 69% rename from src/test/java/jp/naist/se/stigmata/birthmarks/BirthmarkCompareTest.java rename to src/test/java/jp/sourceforge/stigmata/birthmarks/BirthmarkCompareTest.java index ac34ca0..a806fe9 100755 --- a/src/test/java/jp/naist/se/stigmata/birthmarks/BirthmarkCompareTest.java +++ b/src/test/java/jp/sourceforge/stigmata/birthmarks/BirthmarkCompareTest.java @@ -1,53 +1,53 @@ -package jp.naist.se.stigmata.birthmarks; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkEngine; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.ExtractionTarget; -import jp.naist.se.stigmata.Stigmata; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -/** - * - * @author Haruaki Tamada - * @version $Revision$ $Date$ - */ -public class BirthmarkCompareTest{ - private BirthmarkContext context; - private BirthmarkSet[] birthmarks; - private BirthmarkEngine engine; - - @Before - public void readBirthmarks() throws Exception{ - context = Stigmata.getInstance().createContext(); - context.setBirthmarkTypes(new String[] { "cvfv", "smc", "uc", "is", "kgram", }); - engine = new BirthmarkEngine(context.getEnvironment()); - - ExtractionResultSet ers = engine.extract( - new String[] { - "target/classes/jp/naist/se/stigmata/Stigmata.class", - "target/classes/jp/naist/se/stigmata/Main.class", - "target/classes/jp/naist/se/stigmata/BirthmarkEnvironment.class", - }, context - ); - birthmarks = ers.getBirthmarkSets(ExtractionTarget.TARGET_BOTH); - } - - @Test - public void equalsTest() throws Exception{ - Assert.assertEquals(3, birthmarks.length); - BirthmarkEngine engine = Stigmata.getInstance().createEngine(); - - Assert.assertEquals(1d, engine.compareDetails(birthmarks[0], birthmarks[0], context).calculateSimilarity(), 1E-6); - Assert.assertEquals(1d, engine.compareDetails(birthmarks[1], birthmarks[1], context).calculateSimilarity(), 1E-6); - Assert.assertEquals(1d, engine.compareDetails(birthmarks[2], birthmarks[2], context).calculateSimilarity(), 1E-6); - } -} +package jp.sourceforge.stigmata.birthmarks; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEngine; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.ExtractionTarget; +import jp.sourceforge.stigmata.Stigmata; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * + * @author Haruaki Tamada + * @version $Revision$ $Date$ + */ +public class BirthmarkCompareTest{ + private BirthmarkContext context; + private BirthmarkSet[] birthmarks; + private BirthmarkEngine engine; + + @Before + public void readBirthmarks() throws Exception{ + context = Stigmata.getInstance().createContext(); + context.setBirthmarkTypes(new String[] { "cvfv", "smc", "uc", "is", "kgram", }); + engine = new BirthmarkEngine(context.getEnvironment()); + + ExtractionResultSet ers = engine.extract( + new String[] { + "target/classes/jp/sourceforge/stigmata/Stigmata.class", + "target/classes/jp/sourceforge/stigmata/Main.class", + "target/classes/jp/sourceforge/stigmata/BirthmarkEnvironment.class", + }, context + ); + birthmarks = ers.getBirthmarkSets(ExtractionTarget.TARGET_BOTH); + } + + @Test + public void equalsTest() throws Exception{ + Assert.assertEquals(3, birthmarks.length); + BirthmarkEngine engine = Stigmata.getInstance().createEngine(); + + Assert.assertEquals(1d, engine.compareDetails(birthmarks[0], birthmarks[0], context).calculateSimilarity(), 1E-6); + Assert.assertEquals(1d, engine.compareDetails(birthmarks[1], birthmarks[1], context).calculateSimilarity(), 1E-6); + Assert.assertEquals(1d, engine.compareDetails(birthmarks[2], birthmarks[2], context).calculateSimilarity(), 1E-6); + } +} diff --git a/src/test/java/jp/naist/se/stigmata/birthmarks/cvfv/CVFVBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/cvfv/CVFVBirthmarkExtractorTest.java similarity index 70% rename from src/test/java/jp/naist/se/stigmata/birthmarks/cvfv/CVFVBirthmarkExtractorTest.java rename to src/test/java/jp/sourceforge/stigmata/birthmarks/cvfv/CVFVBirthmarkExtractorTest.java index 46872e0..949e30f 100755 --- a/src/test/java/jp/naist/se/stigmata/birthmarks/cvfv/CVFVBirthmarkExtractorTest.java +++ b/src/test/java/jp/sourceforge/stigmata/birthmarks/cvfv/CVFVBirthmarkExtractorTest.java @@ -1,103 +1,103 @@ -package jp.naist.se.stigmata.birthmarks.cvfv; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.Stigmata; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class CVFVBirthmarkExtractorTest{ - private Stigmata stigmata; - private BirthmarkContext context; - - @Before - public void setup(){ - stigmata = Stigmata.getInstance(); - context = stigmata.createContext(); - context.addBirthmarkType("cvfv"); - } - - @Test - public void checkCVFVBirthmark() throws Exception{ - ExtractionResultSet ers = stigmata.createEngine().extract( - new String[] { "target/classes/jp/naist/se/stigmata/Stigmata.class", }, - context - ); - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(1, array.length); - Assert.assertNotNull(array[0].getBirthmark("cvfv")); - - Birthmark birthmark = array[0].getBirthmark("cvfv"); - Assert.assertEquals("cvfv", birthmark.getType()); - Assert.assertEquals(3, birthmark.getElementCount()); - - BirthmarkElement[] elements = birthmark.getElements(); - Assert.assertEquals("jp.naist.se.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", - elements[0].getClass().getName()); - Assert.assertEquals("jp.naist.se.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", - elements[1].getClass().getName()); - Assert.assertEquals("jp.naist.se.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", - elements[2].getClass().getName()); - - Assert.assertEquals("Ljp/naist/se/stigmata/Stigmata;", - ((TypeAndValueBirthmarkElement)elements[0]).getSignature()); - Assert.assertNull(((TypeAndValueBirthmarkElement)elements[0]).getValue()); - - Assert.assertEquals("Ljp/naist/se/stigmata/BirthmarkEnvironment;", - ((TypeAndValueBirthmarkElement)elements[1]).getSignature()); - Assert.assertNull(((TypeAndValueBirthmarkElement)elements[1]).getValue()); - - Assert.assertEquals("Ljava/util/List;", - ((TypeAndValueBirthmarkElement)elements[2]).getSignature()); - Assert.assertNull(((TypeAndValueBirthmarkElement)elements[2]).getValue()); - } - - @Test - public void checkCVFVBirthmark2() throws Exception{ - ExtractionResultSet ers = stigmata.createEngine().extract( - new String[] { "target/classes/jp/naist/se/stigmata/result/RoundRobinComparisonResultSet.class", }, - context - ); - - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(array.length, 1); - Assert.assertNotNull(array[0].getBirthmark("cvfv")); - - Birthmark birthmark = array[0].getBirthmark("cvfv"); - Assert.assertEquals(birthmark.getType(), "cvfv"); - Assert.assertEquals(3, birthmark.getElementCount()); - - BirthmarkElement[] elements = birthmark.getElements(); - Assert.assertEquals("jp.naist.se.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", - elements[0].getClass().getName()); - Assert.assertEquals("jp.naist.se.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", - elements[1].getClass().getName()); - Assert.assertEquals("jp.naist.se.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", - elements[2].getClass().getName()); - - Assert.assertEquals("I", ((TypeAndValueBirthmarkElement)elements[0]).getSignature()); - Assert.assertEquals(-1, ((TypeAndValueBirthmarkElement)elements[0]).getValue()); - - Assert.assertEquals("Z", ((TypeAndValueBirthmarkElement)elements[1]).getSignature()); - Assert.assertEquals(null, ((TypeAndValueBirthmarkElement)elements[1]).getValue()); - - Assert.assertEquals("Z", ((TypeAndValueBirthmarkElement)elements[2]).getSignature()); - Assert.assertEquals(0, ((TypeAndValueBirthmarkElement)elements[2]).getValue()); - } -} +package jp.sourceforge.stigmata.birthmarks.cvfv; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.Stigmata; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class CVFVBirthmarkExtractorTest{ + private Stigmata stigmata; + private BirthmarkContext context; + + @Before + public void setup(){ + stigmata = Stigmata.getInstance(); + context = stigmata.createContext(); + context.addBirthmarkType("cvfv"); + } + + @Test + public void checkCVFVBirthmark() throws Exception{ + ExtractionResultSet ers = stigmata.createEngine().extract( + new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", }, + context + ); + BirthmarkSet[] array = ers.getBirthmarkSets(); + + Assert.assertEquals(1, array.length); + Assert.assertNotNull(array[0].getBirthmark("cvfv")); + + Birthmark birthmark = array[0].getBirthmark("cvfv"); + Assert.assertEquals("cvfv", birthmark.getType()); + Assert.assertEquals(3, birthmark.getElementCount()); + + BirthmarkElement[] elements = birthmark.getElements(); + Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", + elements[0].getClass().getName()); + Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", + elements[1].getClass().getName()); + Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", + elements[2].getClass().getName()); + + Assert.assertEquals("Ljp/sourceforge/stigmata/Stigmata;", + ((TypeAndValueBirthmarkElement)elements[0]).getSignature()); + Assert.assertNull(((TypeAndValueBirthmarkElement)elements[0]).getValue()); + + Assert.assertEquals("Ljp/sourceforge/stigmata/BirthmarkEnvironment;", + ((TypeAndValueBirthmarkElement)elements[1]).getSignature()); + Assert.assertNull(((TypeAndValueBirthmarkElement)elements[1]).getValue()); + + Assert.assertEquals("Ljava/util/List;", + ((TypeAndValueBirthmarkElement)elements[2]).getSignature()); + Assert.assertNull(((TypeAndValueBirthmarkElement)elements[2]).getValue()); + } + + @Test + public void checkCVFVBirthmark2() throws Exception{ + ExtractionResultSet ers = stigmata.createEngine().extract( + new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", }, + context + ); + + BirthmarkSet[] array = ers.getBirthmarkSets(); + + Assert.assertEquals(array.length, 1); + Assert.assertNotNull(array[0].getBirthmark("cvfv")); + + Birthmark birthmark = array[0].getBirthmark("cvfv"); + Assert.assertEquals(birthmark.getType(), "cvfv"); + Assert.assertEquals(3, birthmark.getElementCount()); + + BirthmarkElement[] elements = birthmark.getElements(); + Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", + elements[0].getClass().getName()); + Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", + elements[1].getClass().getName()); + Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", + elements[2].getClass().getName()); + + Assert.assertEquals("I", ((TypeAndValueBirthmarkElement)elements[0]).getSignature()); + Assert.assertEquals(-1, ((TypeAndValueBirthmarkElement)elements[0]).getValue()); + + Assert.assertEquals("Z", ((TypeAndValueBirthmarkElement)elements[1]).getSignature()); + Assert.assertEquals(null, ((TypeAndValueBirthmarkElement)elements[1]).getValue()); + + Assert.assertEquals("Z", ((TypeAndValueBirthmarkElement)elements[2]).getSignature()); + Assert.assertEquals(0, ((TypeAndValueBirthmarkElement)elements[2]).getValue()); + } +} diff --git a/src/test/java/jp/naist/se/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java similarity index 75% rename from src/test/java/jp/naist/se/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java rename to src/test/java/jp/sourceforge/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java index d0fedea..164cc8a 100755 --- a/src/test/java/jp/naist/se/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java +++ b/src/test/java/jp/sourceforge/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java @@ -1,76 +1,76 @@ -package jp.naist.se.stigmata.birthmarks.is; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkEngine; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.Stigmata; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class ISBirthmarkExtractorTest{ - private BirthmarkEngine engine; - private BirthmarkContext context; - - @Before - public void setup(){ - engine = Stigmata.getInstance().createEngine(); - context = Stigmata.getInstance().createContext(); - context.addBirthmarkType("is"); - } - - @Test - public void checkISBirthmark() throws Exception{ - ExtractionResultSet ers = engine.extract( - new String[] { "target/classes/jp/naist/se/stigmata/Stigmata.class", }, - context - ); - - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(1, array.length); - Assert.assertNotNull(array[0].getBirthmark("is")); - - Birthmark birthmark = array[0].getBirthmark("is"); - Assert.assertEquals("is", birthmark.getType()); - Assert.assertEquals(2, birthmark.getElementCount()); - - BirthmarkElement[] elements = birthmark.getElements(); - Assert.assertNull(elements[0].getValue()); - Assert.assertEquals("java.lang.Object", elements[1].getValue()); - } - - @Test - public void checkISBirthmark2() throws Exception{ - ExtractionResultSet ers = engine.extract( - new String[] { "target/classes/jp/naist/se/stigmata/result/RoundRobinComparisonResultSet.class", }, - context - ); - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(1, array.length); - Assert.assertNotNull(array[0].getBirthmark("is")); - - Birthmark birthmark = array[0].getBirthmark("is"); - Assert.assertEquals("is", birthmark.getType()); - Assert.assertEquals(3, birthmark.getElementCount()); - - BirthmarkElement[] elements = birthmark.getElements(); - Assert.assertNull(elements[0].getValue()); - Assert.assertNull(elements[1].getValue()); - Assert.assertEquals("java.lang.Object", elements[2].getValue()); - } -} +package jp.sourceforge.stigmata.birthmarks.is; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkEngine; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.Stigmata; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class ISBirthmarkExtractorTest{ + private BirthmarkEngine engine; + private BirthmarkContext context; + + @Before + public void setup(){ + engine = Stigmata.getInstance().createEngine(); + context = Stigmata.getInstance().createContext(); + context.addBirthmarkType("is"); + } + + @Test + public void checkISBirthmark() throws Exception{ + ExtractionResultSet ers = engine.extract( + new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", }, + context + ); + + BirthmarkSet[] array = ers.getBirthmarkSets(); + + Assert.assertEquals(1, array.length); + Assert.assertNotNull(array[0].getBirthmark("is")); + + Birthmark birthmark = array[0].getBirthmark("is"); + Assert.assertEquals("is", birthmark.getType()); + Assert.assertEquals(2, birthmark.getElementCount()); + + BirthmarkElement[] elements = birthmark.getElements(); + Assert.assertNull(elements[0].getValue()); + Assert.assertEquals("java.lang.Object", elements[1].getValue()); + } + + @Test + public void checkISBirthmark2() throws Exception{ + ExtractionResultSet ers = engine.extract( + new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", }, + context + ); + BirthmarkSet[] array = ers.getBirthmarkSets(); + + Assert.assertEquals(1, array.length); + Assert.assertNotNull(array[0].getBirthmark("is")); + + Birthmark birthmark = array[0].getBirthmark("is"); + Assert.assertEquals("is", birthmark.getType()); + Assert.assertEquals(3, birthmark.getElementCount()); + + BirthmarkElement[] elements = birthmark.getElements(); + Assert.assertNull(elements[0].getValue()); + Assert.assertNull(elements[1].getValue()); + Assert.assertEquals("java.lang.Object", elements[2].getValue()); + } +} diff --git a/src/test/java/jp/naist/se/stigmata/birthmarks/kgram/KGramTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java similarity index 98% rename from src/test/java/jp/naist/se/stigmata/birthmarks/kgram/KGramTest.java rename to src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java index b91ecd0..b57ebd7 100755 --- a/src/test/java/jp/naist/se/stigmata/birthmarks/kgram/KGramTest.java +++ b/src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java @@ -1,4 +1,4 @@ -package jp.naist.se.stigmata.birthmarks.kgram; +package jp.sourceforge.stigmata.birthmarks.kgram; /* * $Id$ diff --git a/src/test/java/jp/naist/se/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java similarity index 93% rename from src/test/java/jp/naist/se/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java rename to src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java index 40dfee4..b77d506 100755 --- a/src/test/java/jp/naist/se/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java +++ b/src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java @@ -1,196 +1,196 @@ -package jp.naist.se.stigmata.birthmarks.smc; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.Stigmata; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class SmcBirthmarkExtractorTest{ - private Stigmata stigmata; - private BirthmarkContext context; - - @Before - public void setup(){ - stigmata = Stigmata.getInstance(); - context = stigmata.createContext(); - context.addBirthmarkType("smc"); - } - - @Test - public void checkSmcBirthmark() throws Exception{ - ExtractionResultSet ers = stigmata.createEngine().extract( - new String[] { "target/classes/jp/naist/se/stigmata/Stigmata.class", }, - context - ); - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(1, array.length); - Assert.assertNotNull(array[0].getBirthmark("smc")); - - Birthmark birthmark = array[0].getBirthmark("smc"); - Assert.assertEquals("smc", birthmark.getType()); - - BirthmarkElement[] elements = birthmark.getElements(); - for(int i = 0; i < elements.length; i++){ - Assert.assertEquals( - "jp.naist.se.stigmata.birthmarks.smc.MethodCallBirthmarkElement", - elements[i].getClass().getName() - ); - } - /* - Assert.assertEquals(76, birthmark.getElementCount()); - int index = 0; - Assert.assertEquals("java.io.FileInputStream#", elements[index++].getValue()); - Assert.assertEquals("java.io.File#", elements[index++].getValue()); - Assert.assertEquals("java.io.File#exists", elements[index++].getValue()); - Assert.assertEquals("java.lang.System#getProperty", elements[index++].getValue()); - Assert.assertEquals("java.io.File#", elements[index++].getValue()); - Assert.assertEquals("java.io.File#exists", elements[index++].getValue()); - Assert.assertEquals("java.io.FileInputStream#", elements[index++].getValue()); - Assert.assertEquals("java.lang.Object#getClass", elements[index++].getValue()); - Assert.assertEquals("java.lang.Class#getResourceAsStream", elements[index++].getValue()); - Assert.assertEquals("java.util.ArrayList#", elements[index++].getValue()); - Assert.assertEquals("java.util.ArrayList#", elements[index++].getValue()); - Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue()); - Assert.assertEquals("java.util.List#add", elements[index++].getValue()); - Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue()); - Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue()); - Assert.assertEquals("java.util.List#add", elements[index++].getValue()); - Assert.assertEquals("java.io.File#", elements[index++].getValue()); - Assert.assertEquals("java.io.File#toURI", elements[index++].getValue()); - Assert.assertEquals("java.net.URI#toURL", elements[index++].getValue()); - Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue()); - Assert.assertEquals("java.util.List#add", elements[index++].getValue()); - Assert.assertEquals("java.util.List#iterator", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); - Assert.assertEquals("java.net.URL#openStream", elements[index++].getValue()); - Assert.assertEquals("java.util.List#add", elements[index++].getValue()); - Assert.assertEquals("java.util.List#size", elements[index++].getValue()); - Assert.assertEquals("java.util.List#toArray", elements[index++].getValue()); - Assert.assertEquals("java.util.ArrayList#", elements[index++].getValue()); - Assert.assertEquals("java.util.List#add", elements[index++].getValue()); - Assert.assertEquals("java.lang.Object#getClass", elements[index++].getValue()); - Assert.assertEquals("java.lang.Class#getName", elements[index++].getValue()); - Assert.assertEquals("java.util.logging.Logger#getLogger", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#toString", elements[index++].getValue()); - Assert.assertEquals("java.util.logging.Logger#warning", elements[index++].getValue()); - Assert.assertEquals("java.util.List#size", elements[index++].getValue()); - Assert.assertEquals("java.util.List#toArray", elements[index++].getValue()); - Assert.assertEquals("java.util.ArrayList#", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); - Assert.assertEquals("java.lang.Double#valueOf", elements[index++].getValue()); - Assert.assertEquals("java.util.List#add", elements[index++].getValue()); - Assert.assertEquals("java.util.List#iterator", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); - Assert.assertEquals("java.lang.Double#doubleValue", elements[index++].getValue()); - Assert.assertEquals("java.lang.Double#doubleValue", elements[index++].getValue()); - Assert.assertEquals("org.apache.commons.beanutils.BeanUtils#describe", - elements[index++].getValue()); - Assert.assertEquals("java.util.Map#remove", elements[index++].getValue()); - Assert.assertEquals("java.util.Map#remove", elements[index++].getValue()); - Assert.assertEquals("java.util.Map#keySet", elements[index++].getValue()); - Assert.assertEquals("java.util.Set#iterator", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); - Assert.assertEquals("java.lang.String#valueOf", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#toString", elements[index++].getValue()); - Assert.assertEquals("org.apache.commons.beanutils.BeanUtils#setProperty", - elements[index++].getValue()); - Assert.assertEquals("java.io.ByteArrayInputStream#", elements[index++].getValue()); - Assert.assertEquals("java.io.ByteArrayOutputStream#", elements[index++].getValue()); - Assert.assertEquals("java.io.InputStream#read", elements[index++].getValue()); - Assert.assertEquals("java.io.ByteArrayOutputStream#write", elements[index++].getValue()); - Assert.assertEquals("java.io.ByteArrayOutputStream#toByteArray", - elements[index++].getValue()); - Assert.assertEquals("java.io.ByteArrayOutputStream#close", elements[index++].getValue()); - Assert.assertEquals("javax.imageio.spi.ServiceRegistry#lookupProviders", - elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); - */ - } - - @Test - public void checkSmcBirthmark2() throws Exception{ - ExtractionResultSet ers = stigmata.createEngine().extract( - new String[] { "target/classes/jp/naist/se/stigmata/result/RoundRobinComparisonResultSet.class", }, - context - ); - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(array.length, 1); - Assert.assertNotNull(array[0].getBirthmark("smc")); - - Birthmark birthmark = array[0].getBirthmark("smc"); - Assert.assertEquals("smc", birthmark.getType()); - Assert.assertEquals(18, birthmark.getElementCount()); - - BirthmarkElement[] elements = birthmark.getElements(); - for(int i = 0; i < elements.length; i++){ - Assert.assertEquals( - "jp.naist.se.stigmata.birthmarks.smc.MethodCallBirthmarkElement", - elements[i].getClass().getName() - ); - } - /* - int index = 0; - // (ExtractionResult, BirthmarkEnvironment, boolean) - Assert.assertEquals("java.lang.Object#", elements[index++].toString()); - - // getComparisonSources - Assert.assertEquals("java.util.ArrayArrays#", elements[index++].toString()); - Assert.assertEquals("java.util.Arrays#asList", elements[index++].toString()); - - // setCompareSamePair - Assert.assertEquals("java.util.List#size", elements[index++].toString()); - Assert.assertEquals("java.util.List#size", elements[index++].toString()); - Assert.assertEquals("java.util.List#size", elements[index++].toString()); - Assert.assertEquals("java.util.List#size", elements[index++].toString()); - - // getComparisonSources - Assert.assertEquals("java.util.HashMap#", elements[index++].toString()); - Assert.assertEquals("java.util.List#iterator", elements[index++].toString()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].toString()); - Assert.assertEquals("java.util.Map#put", elements[index++].toString()); - Assert.assertEquals("java.util.List#iterator", elements[index++].toString()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].toString()); - Assert.assertEquals("java.util.Map#put", elements[index++].toString()); - Assert.assertEquals("java.util.Map#size", elements[index++].toString()); - Assert.assertEquals("java.util.Map#entrySet", elements[index++].toString()); - Assert.assertEquals("java.util.Set#iterator", elements[index++].toString()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].toString()); - Assert.assertEquals("java.util.Map$Entry#getValue", elements[index++].toString()); - */ - } -} +package jp.sourceforge.stigmata.birthmarks.smc; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.Stigmata; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class SmcBirthmarkExtractorTest{ + private Stigmata stigmata; + private BirthmarkContext context; + + @Before + public void setup(){ + stigmata = Stigmata.getInstance(); + context = stigmata.createContext(); + context.addBirthmarkType("smc"); + } + + @Test + public void checkSmcBirthmark() throws Exception{ + ExtractionResultSet ers = stigmata.createEngine().extract( + new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", }, + context + ); + BirthmarkSet[] array = ers.getBirthmarkSets(); + + Assert.assertEquals(1, array.length); + Assert.assertNotNull(array[0].getBirthmark("smc")); + + Birthmark birthmark = array[0].getBirthmark("smc"); + Assert.assertEquals("smc", birthmark.getType()); + + BirthmarkElement[] elements = birthmark.getElements(); + for(int i = 0; i < elements.length; i++){ + Assert.assertEquals( + "jp.sourceforge.stigmata.birthmarks.smc.MethodCallBirthmarkElement", + elements[i].getClass().getName() + ); + } + /* + Assert.assertEquals(76, birthmark.getElementCount()); + int index = 0; + Assert.assertEquals("java.io.FileInputStream#", elements[index++].getValue()); + Assert.assertEquals("java.io.File#", elements[index++].getValue()); + Assert.assertEquals("java.io.File#exists", elements[index++].getValue()); + Assert.assertEquals("java.lang.System#getProperty", elements[index++].getValue()); + Assert.assertEquals("java.io.File#", elements[index++].getValue()); + Assert.assertEquals("java.io.File#exists", elements[index++].getValue()); + Assert.assertEquals("java.io.FileInputStream#", elements[index++].getValue()); + Assert.assertEquals("java.lang.Object#getClass", elements[index++].getValue()); + Assert.assertEquals("java.lang.Class#getResourceAsStream", elements[index++].getValue()); + Assert.assertEquals("java.util.ArrayList#", elements[index++].getValue()); + Assert.assertEquals("java.util.ArrayList#", elements[index++].getValue()); + Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue()); + Assert.assertEquals("java.util.List#add", elements[index++].getValue()); + Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue()); + Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue()); + Assert.assertEquals("java.util.List#add", elements[index++].getValue()); + Assert.assertEquals("java.io.File#", elements[index++].getValue()); + Assert.assertEquals("java.io.File#toURI", elements[index++].getValue()); + Assert.assertEquals("java.net.URI#toURL", elements[index++].getValue()); + Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue()); + Assert.assertEquals("java.util.List#add", elements[index++].getValue()); + Assert.assertEquals("java.util.List#iterator", elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); + Assert.assertEquals("java.net.URL#openStream", elements[index++].getValue()); + Assert.assertEquals("java.util.List#add", elements[index++].getValue()); + Assert.assertEquals("java.util.List#size", elements[index++].getValue()); + Assert.assertEquals("java.util.List#toArray", elements[index++].getValue()); + Assert.assertEquals("java.util.ArrayList#", elements[index++].getValue()); + Assert.assertEquals("java.util.List#add", elements[index++].getValue()); + Assert.assertEquals("java.lang.Object#getClass", elements[index++].getValue()); + Assert.assertEquals("java.lang.Class#getName", elements[index++].getValue()); + Assert.assertEquals("java.util.logging.Logger#getLogger", elements[index++].getValue()); + Assert.assertEquals("java.lang.StringBuilder#", elements[index++].getValue()); + Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); + Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); + Assert.assertEquals("java.lang.StringBuilder#toString", elements[index++].getValue()); + Assert.assertEquals("java.util.logging.Logger#warning", elements[index++].getValue()); + Assert.assertEquals("java.util.List#size", elements[index++].getValue()); + Assert.assertEquals("java.util.List#toArray", elements[index++].getValue()); + Assert.assertEquals("java.util.ArrayList#", elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); + Assert.assertEquals("java.lang.Double#valueOf", elements[index++].getValue()); + Assert.assertEquals("java.util.List#add", elements[index++].getValue()); + Assert.assertEquals("java.util.List#iterator", elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); + Assert.assertEquals("java.lang.Double#doubleValue", elements[index++].getValue()); + Assert.assertEquals("java.lang.Double#doubleValue", elements[index++].getValue()); + Assert.assertEquals("org.apache.commons.beanutils.BeanUtils#describe", + elements[index++].getValue()); + Assert.assertEquals("java.util.Map#remove", elements[index++].getValue()); + Assert.assertEquals("java.util.Map#remove", elements[index++].getValue()); + Assert.assertEquals("java.util.Map#keySet", elements[index++].getValue()); + Assert.assertEquals("java.util.Set#iterator", elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); + Assert.assertEquals("java.lang.StringBuilder#", elements[index++].getValue()); + Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); + Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); + Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); + Assert.assertEquals("java.lang.String#valueOf", elements[index++].getValue()); + Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); + Assert.assertEquals("java.lang.StringBuilder#toString", elements[index++].getValue()); + Assert.assertEquals("org.apache.commons.beanutils.BeanUtils#setProperty", + elements[index++].getValue()); + Assert.assertEquals("java.io.ByteArrayInputStream#", elements[index++].getValue()); + Assert.assertEquals("java.io.ByteArrayOutputStream#", elements[index++].getValue()); + Assert.assertEquals("java.io.InputStream#read", elements[index++].getValue()); + Assert.assertEquals("java.io.ByteArrayOutputStream#write", elements[index++].getValue()); + Assert.assertEquals("java.io.ByteArrayOutputStream#toByteArray", + elements[index++].getValue()); + Assert.assertEquals("java.io.ByteArrayOutputStream#close", elements[index++].getValue()); + Assert.assertEquals("javax.imageio.spi.ServiceRegistry#lookupProviders", + elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); + */ + } + + @Test + public void checkSmcBirthmark2() throws Exception{ + ExtractionResultSet ers = stigmata.createEngine().extract( + new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", }, + context + ); + BirthmarkSet[] array = ers.getBirthmarkSets(); + + Assert.assertEquals(array.length, 1); + Assert.assertNotNull(array[0].getBirthmark("smc")); + + Birthmark birthmark = array[0].getBirthmark("smc"); + Assert.assertEquals("smc", birthmark.getType()); + Assert.assertEquals(18, birthmark.getElementCount()); + + BirthmarkElement[] elements = birthmark.getElements(); + for(int i = 0; i < elements.length; i++){ + Assert.assertEquals( + "jp.sourceforge.stigmata.birthmarks.smc.MethodCallBirthmarkElement", + elements[i].getClass().getName() + ); + } + /* + int index = 0; + // (ExtractionResult, BirthmarkEnvironment, boolean) + Assert.assertEquals("java.lang.Object#", elements[index++].toString()); + + // getComparisonSources + Assert.assertEquals("java.util.ArrayArrays#", elements[index++].toString()); + Assert.assertEquals("java.util.Arrays#asList", elements[index++].toString()); + + // setCompareSamePair + Assert.assertEquals("java.util.List#size", elements[index++].toString()); + Assert.assertEquals("java.util.List#size", elements[index++].toString()); + Assert.assertEquals("java.util.List#size", elements[index++].toString()); + Assert.assertEquals("java.util.List#size", elements[index++].toString()); + + // getComparisonSources + Assert.assertEquals("java.util.HashMap#", elements[index++].toString()); + Assert.assertEquals("java.util.List#iterator", elements[index++].toString()); + Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString()); + Assert.assertEquals("java.util.Iterator#next", elements[index++].toString()); + Assert.assertEquals("java.util.Map#put", elements[index++].toString()); + Assert.assertEquals("java.util.List#iterator", elements[index++].toString()); + Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString()); + Assert.assertEquals("java.util.Iterator#next", elements[index++].toString()); + Assert.assertEquals("java.util.Map#put", elements[index++].toString()); + Assert.assertEquals("java.util.Map#size", elements[index++].toString()); + Assert.assertEquals("java.util.Map#entrySet", elements[index++].toString()); + Assert.assertEquals("java.util.Set#iterator", elements[index++].toString()); + Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString()); + Assert.assertEquals("java.util.Iterator#next", elements[index++].toString()); + Assert.assertEquals("java.util.Map$Entry#getValue", elements[index++].toString()); + */ + } +} diff --git a/src/test/java/jp/naist/se/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java similarity index 87% rename from src/test/java/jp/naist/se/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java rename to src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java index 84dacdd..a2a1811 100755 --- a/src/test/java/jp/naist/se/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java +++ b/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java @@ -1,98 +1,98 @@ -package jp.naist.se.stigmata.birthmarks.uc; - -/* - * $Id$ - */ - -import jp.naist.se.stigmata.Birthmark; -import jp.naist.se.stigmata.BirthmarkContext; -import jp.naist.se.stigmata.BirthmarkElement; -import jp.naist.se.stigmata.BirthmarkSet; -import jp.naist.se.stigmata.ExtractionResultSet; -import jp.naist.se.stigmata.Stigmata; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -/** - * - * @author Haruaki TAMADA - * @version $Revision$ $Date$ - */ -public class UCBirthmarkExtractorTest{ - private Stigmata stigmata; - private BirthmarkContext context; - - @Before - public void setup(){ - stigmata = Stigmata.getInstance(); - context = stigmata.createContext(); - context.addBirthmarkType("uc"); - } - - @Test - public void checkUCBirthmark() throws Exception{ - ExtractionResultSet ers = stigmata.createEngine().extract( - new String[] { "target/classes/jp/naist/se/stigmata/Stigmata.class", }, - context - ); - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(1, array.length); - Assert.assertNotNull(array[0].getBirthmark("uc")); - - Birthmark birthmark = array[0].getBirthmark("uc"); - Assert.assertEquals("uc", birthmark.getType()); - Assert.assertEquals(18, birthmark.getElementCount()); - - BirthmarkElement[] elements = birthmark.getElements(); - int index = 0; - Assert.assertEquals("java.io.File", elements[index++].getValue()); - Assert.assertEquals("java.io.FileFilter", elements[index++].getValue()); - Assert.assertEquals("java.io.FileInputStream", elements[index++].getValue()); - Assert.assertEquals("java.io.FileWriter", elements[index++].getValue()); - Assert.assertEquals("java.io.InputStream", elements[index++].getValue()); - Assert.assertEquals("java.io.PrintWriter", elements[index++].getValue()); - Assert.assertEquals("java.io.Writer", elements[index++].getValue()); - Assert.assertEquals("java.lang.Class", elements[index++].getValue()); - Assert.assertEquals("java.lang.ClassLoader", elements[index++].getValue()); - Assert.assertEquals("java.lang.Object", elements[index++].getValue()); - Assert.assertEquals("java.lang.String", elements[index++].getValue()); - Assert.assertEquals("java.lang.System", elements[index++].getValue()); - Assert.assertEquals("java.net.URI", elements[index++].getValue()); - Assert.assertEquals("java.net.URL", elements[index++].getValue()); - Assert.assertEquals("java.net.URLClassLoader", elements[index++].getValue()); - Assert.assertEquals("java.util.ArrayList", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator", elements[index++].getValue()); - Assert.assertEquals("java.util.List", elements[index++].getValue()); - } - - @Test - public void checkUCBirthmark2() throws Exception{ - ExtractionResultSet ers = stigmata.createEngine().extract( - new String[] { "target/classes/jp/naist/se/stigmata/result/RoundRobinComparisonResultSet.class", }, - context - ); - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(1, array.length); - Assert.assertNotNull(array[0].getBirthmark("uc")); - - Birthmark birthmark = array[0].getBirthmark("uc"); - Assert.assertEquals("uc", birthmark.getType()); - Assert.assertEquals(9, birthmark.getElementCount()); - - BirthmarkElement[] elements = birthmark.getElements(); - int index = 0; - Assert.assertEquals("java.lang.Object", elements[index++].getValue()); - Assert.assertEquals("java.lang.String", elements[index++].getValue()); - Assert.assertEquals("java.net.URL", elements[index++].getValue()); - Assert.assertEquals("java.util.ArrayList", elements[index++].getValue()); - Assert.assertEquals("java.util.Collection", elements[index++].getValue()); - Assert.assertEquals("java.util.HashMap", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator", elements[index++].getValue()); - Assert.assertEquals("java.util.List", elements[index++].getValue()); - Assert.assertEquals("java.util.Map", elements[index++].getValue()); - } -} +package jp.sourceforge.stigmata.birthmarks.uc; + +/* + * $Id$ + */ + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkSet; +import jp.sourceforge.stigmata.ExtractionResultSet; +import jp.sourceforge.stigmata.Stigmata; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * + * @author Haruaki TAMADA + * @version $Revision$ $Date$ + */ +public class UCBirthmarkExtractorTest{ + private Stigmata stigmata; + private BirthmarkContext context; + + @Before + public void setup(){ + stigmata = Stigmata.getInstance(); + context = stigmata.createContext(); + context.addBirthmarkType("uc"); + } + + @Test + public void checkUCBirthmark() throws Exception{ + ExtractionResultSet ers = stigmata.createEngine().extract( + new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", }, + context + ); + BirthmarkSet[] array = ers.getBirthmarkSets(); + + Assert.assertEquals(1, array.length); + Assert.assertNotNull(array[0].getBirthmark("uc")); + + Birthmark birthmark = array[0].getBirthmark("uc"); + Assert.assertEquals("uc", birthmark.getType()); + Assert.assertEquals(18, birthmark.getElementCount()); + + BirthmarkElement[] elements = birthmark.getElements(); + int index = 0; + Assert.assertEquals("java.io.File", elements[index++].getValue()); + Assert.assertEquals("java.io.FileFilter", elements[index++].getValue()); + Assert.assertEquals("java.io.FileInputStream", elements[index++].getValue()); + Assert.assertEquals("java.io.FileWriter", elements[index++].getValue()); + Assert.assertEquals("java.io.InputStream", elements[index++].getValue()); + Assert.assertEquals("java.io.PrintWriter", elements[index++].getValue()); + Assert.assertEquals("java.io.Writer", elements[index++].getValue()); + Assert.assertEquals("java.lang.Class", elements[index++].getValue()); + Assert.assertEquals("java.lang.ClassLoader", elements[index++].getValue()); + Assert.assertEquals("java.lang.Object", elements[index++].getValue()); + Assert.assertEquals("java.lang.String", elements[index++].getValue()); + Assert.assertEquals("java.lang.System", elements[index++].getValue()); + Assert.assertEquals("java.net.URI", elements[index++].getValue()); + Assert.assertEquals("java.net.URL", elements[index++].getValue()); + Assert.assertEquals("java.net.URLClassLoader", elements[index++].getValue()); + Assert.assertEquals("java.util.ArrayList", elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator", elements[index++].getValue()); + Assert.assertEquals("java.util.List", elements[index++].getValue()); + } + + @Test + public void checkUCBirthmark2() throws Exception{ + ExtractionResultSet ers = stigmata.createEngine().extract( + new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", }, + context + ); + BirthmarkSet[] array = ers.getBirthmarkSets(); + + Assert.assertEquals(1, array.length); + Assert.assertNotNull(array[0].getBirthmark("uc")); + + Birthmark birthmark = array[0].getBirthmark("uc"); + Assert.assertEquals("uc", birthmark.getType()); + Assert.assertEquals(9, birthmark.getElementCount()); + + BirthmarkElement[] elements = birthmark.getElements(); + int index = 0; + Assert.assertEquals("java.lang.Object", elements[index++].getValue()); + Assert.assertEquals("java.lang.String", elements[index++].getValue()); + Assert.assertEquals("java.net.URL", elements[index++].getValue()); + Assert.assertEquals("java.util.ArrayList", elements[index++].getValue()); + Assert.assertEquals("java.util.Collection", elements[index++].getValue()); + Assert.assertEquals("java.util.HashMap", elements[index++].getValue()); + Assert.assertEquals("java.util.Iterator", elements[index++].getValue()); + Assert.assertEquals("java.util.List", elements[index++].getValue()); + Assert.assertEquals("java.util.Map", elements[index++].getValue()); + } +} -- 2.11.0