OSDN Git Service

cflib は plugins プロジェクトから,Stigmata直下のプロジェクトに移行したため,このリポジトリからは削除した.
[stigmata/stigmata-plugins.git] / osb / src / main / java / jp / sourceforge / stigmata / birthmarks / osb / OperandStackBehaviorsBirthmarkContainmentCalculator.java
1 package jp.sourceforge.stigmata.birthmarks.osb;
2
3 import jp.sourceforge.stigmata.Birthmark;
4 import jp.sourceforge.stigmata.BirthmarkContext;
5 import jp.sourceforge.stigmata.BirthmarkElement;
6 import jp.sourceforge.stigmata.spi.BirthmarkService;
7
8 /**
9  * 
10  * @author Fumiya Iwama
11  * @author Ryouta Obatake
12  * @author Akinori Kataoka
13  * @author Takayuki Kitano
14  */
15 public class OperandStackBehaviorsBirthmarkContainmentCalculator extends OperandStackBehaviorsBirthmarkComparator{
16     public OperandStackBehaviorsBirthmarkContainmentCalculator(BirthmarkService spi){
17         super(spi);
18     }
19
20     @Override
21     public double compare(Birthmark b1, Birthmark b2, BirthmarkContext context){
22         BirthmarkElement[] elementsA = b1.getElements();
23         BirthmarkElement[] elementsB = b2.getElements();
24         
25         // 片方でも0だったら、return0
26         if(elementsA.length != 0 && elementsB.length != 0){ 
27             double[][] sim = createMatrix(elementsA, elementsB);
28             // matchには、類似度の合計値が最大となる値が入る
29             double match = calculateMatch(sim);
30             // Similarityを返す
31             return match / elementsA.length;
32         }
33         else{
34             return 0;
35         }
36         
37     }
38 }