Package com.crawljax.fragmentation
Class Fragment
- java.lang.Object
-
- com.crawljax.fragmentation.Fragment
-
public class Fragment extends Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classFragment.FragmentComparision
-
Field Summary
Fields Modifier and Type Field Description private booleanaccessTransferredprivate DoublecandidateInfluenceprivate ArrayList<CandidateElement>candidatesprivate ArrayList<Fragment>childrenprivate org.opencv.core.Matchistprivate List<Fragment>domChildrenprivate FragmentdomParentprivate ArrayList<Fragment>duplicateFragmentsprivate ArrayList<Fragment>equivalentFragmentsprivate NodefragmentParentNodeprivate Nodehdnprivate intidprivate booleanisDynamicprivate booleanisGlobalprivate BooleanisUsefulprivate static org.slf4j.LoggerLOGprivate ArrayList<Fragment>nd2Fragmentsprivate List<Node>nestedBlocksprivate Fragmentparentprivate Rectanglerectprivate StateVertexreferenceStateprivate intsize
-
Constructor Summary
Constructors Constructor Description Fragment(int id, List<Node> nestedBlocks, Rectangle rect, StateVertex referenceState)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddCandidateElement(CandidateElement element)voidaddChild(Fragment child)voidaddDomChildren(Fragment fragment)voidaddDuplicateFragment(Fragment fragment)voidaddEquivalentFragment(Fragment fragment)voidaddND2Fragment(Fragment fragment)Fragment.FragmentComparisioncompare(Fragment other)Uses APTED for DOM Tree comparison and Histogram for Visual Comparison Does not check if the other fragment being compared is Near-duplicate of category ND_struct Returns EQUAL if both DOM and Histogram are exactly the same Return EQUIVALENT if DOM is the same but Histogram is not.Fragment.FragmentComparisioncompareFast(Fragment other)Makes use of DOM tree size instead of invoking APTED differencingbooleancompareImage(Fragment other)booleancontainsCandidate(CandidateElement element)booleancontainsNode(Node node)private booleancontainsRectangle(Rectangle rect2)private List<Node>getAllNodes()DoublegetCandidateInfluence()ArrayList<CandidateElement>getCandidates()ArrayList<Fragment>getChildren()org.opencv.core.MatgetChist()List<Fragment>getDomChildren()FragmentgetDomParent()ArrayList<Fragment>getDuplicateFragments()private List<CandidateElement>getEquivalentCandidate(CandidateElement element, Fragment duplicateFragment)ArrayList<Fragment>getEquivalentFragments()NodegetEquivalentNode(Node element, Fragment duplicateFragment)Uses relative Xpath to fetch node that is similar in the current fragment to the one provided as argumentNodegetFragmentParentNode()NodegetHdn()intgetId()ArrayList<Fragment>getNd2Fragments()List<Node>getNestedBlocks()FragmentgetParent()RectanglegetRect()StateVertexgetReferenceState()intgetSize()booleanisAccessTransferred()booleanisDynamic()booleanisGlobal()BooleanisUseful()private booleannestedBlockIncludesNode(Element element)List<CandidateElement>recordDuplicateCandidateAccess(CandidateElement element, Fragment duplicateFragment, List<CandidateElement> coveredCandidates)List<CandidateElement>recordEquivalentCandidateAccess(CandidateElement element, Fragment duplicateFragment, List<CandidateElement> coveredCandidates)voidsetAccessTransferred(boolean accessTransferred)voidsetCandidateInfluence(Double candidateInfluence)voidsetCandidates(ArrayList<CandidateElement> candidates)voidsetChist(org.opencv.core.Mat chist)voidsetCoverage(Node node, VipsUtils.AccessType access, VipsUtils.Coverage coverage)voidsetDomParent(Fragment domParent)voidsetDynamic(boolean isDynamic)voidsetEquivalentCoverage(Node equivalentNode, Fragment equivalentFrag, VipsUtils.AccessType indirect, VipsUtils.Coverage coverage)voidsetFragmentParentNode(Node fragmentParentNode)voidsetHdn(Node hdn)voidsetId(int id2)voidsetIsGlobal(boolean isGlobal)voidsetNestedBlocks(List<Node> nestedBlocks)voidsetParent(Fragment parent)voidsetRect(Rectangle rect)voidsetSize(int size)voidsetUseful(boolean isUseful)voidtransferCoverage(Fragment oldFragment)voidtransferDuplicateAccess(Fragment oldFragment)For new fragments that have not been access transferred Called for every other duplicate fragment ( to avoid candidate element not being all fragment problem)voidtransferEquivalentAccess(Fragment oldFragment)
-
-
-
Field Detail
-
LOG
private static final org.slf4j.Logger LOG
-
id
private int id
-
fragmentParentNode
private Node fragmentParentNode
-
hdn
private Node hdn
-
rect
private Rectangle rect
-
referenceState
private final StateVertex referenceState
-
isUseful
private Boolean isUseful
-
accessTransferred
private boolean accessTransferred
-
size
private int size
-
isGlobal
private boolean isGlobal
-
candidates
private final ArrayList<CandidateElement> candidates
-
chist
private org.opencv.core.Mat chist
-
parent
private Fragment parent
-
domParent
private Fragment domParent
-
isDynamic
private boolean isDynamic
-
candidateInfluence
private Double candidateInfluence
-
-
Constructor Detail
-
Fragment
public Fragment(int id, List<Node> nestedBlocks, Rectangle rect, StateVertex referenceState)
-
-
Method Detail
-
getId
public int getId()
-
setId
public void setId(int id2)
-
getSize
public int getSize()
-
setSize
public void setSize(int size)
-
isAccessTransferred
public boolean isAccessTransferred()
-
setAccessTransferred
public void setAccessTransferred(boolean accessTransferred)
-
isUseful
public Boolean isUseful()
-
setUseful
public void setUseful(boolean isUseful)
-
isDynamic
public boolean isDynamic()
-
setDynamic
public void setDynamic(boolean isDynamic)
-
getCandidateInfluence
public Double getCandidateInfluence()
-
setCandidateInfluence
public void setCandidateInfluence(Double candidateInfluence)
-
getParent
public Fragment getParent()
-
setParent
public void setParent(Fragment parent)
-
addChild
public void addChild(Fragment child)
-
compareImage
public boolean compareImage(Fragment other)
-
getChist
public org.opencv.core.Mat getChist()
-
setChist
public void setChist(org.opencv.core.Mat chist)
-
compareFast
public Fragment.FragmentComparision compareFast(Fragment other)
Makes use of DOM tree size instead of invoking APTED differencing- Parameters:
other-- Returns:
-
compare
public Fragment.FragmentComparision compare(Fragment other)
Uses APTED for DOM Tree comparison and Histogram for Visual Comparison Does not check if the other fragment being compared is Near-duplicate of category ND_struct Returns EQUAL if both DOM and Histogram are exactly the same Return EQUIVALENT if DOM is the same but Histogram is not. Returns DIFFERENT if DOM is different- Parameters:
other-- Returns:
-
getFragmentParentNode
public Node getFragmentParentNode()
-
setFragmentParentNode
public void setFragmentParentNode(Node fragmentParentNode)
-
getRect
public Rectangle getRect()
-
setRect
public void setRect(Rectangle rect)
-
getReferenceState
public StateVertex getReferenceState()
-
getCandidates
public ArrayList<CandidateElement> getCandidates()
-
setCandidates
public void setCandidates(ArrayList<CandidateElement> candidates)
-
addDuplicateFragment
public void addDuplicateFragment(Fragment fragment)
-
addEquivalentFragment
public void addEquivalentFragment(Fragment fragment)
-
addND2Fragment
public void addND2Fragment(Fragment fragment)
-
setIsGlobal
public void setIsGlobal(boolean isGlobal)
-
nestedBlockIncludesNode
private boolean nestedBlockIncludesNode(Element element)
-
addCandidateElement
public void addCandidateElement(CandidateElement element)
-
containsCandidate
public boolean containsCandidate(CandidateElement element)
-
isGlobal
public boolean isGlobal()
-
recordDuplicateCandidateAccess
public List<CandidateElement> recordDuplicateCandidateAccess(CandidateElement element, Fragment duplicateFragment, List<CandidateElement> coveredCandidates)
-
recordEquivalentCandidateAccess
public List<CandidateElement> recordEquivalentCandidateAccess(CandidateElement element, Fragment duplicateFragment, List<CandidateElement> coveredCandidates)
-
getEquivalentCandidate
private List<CandidateElement> getEquivalentCandidate(CandidateElement element, Fragment duplicateFragment)
-
transferEquivalentAccess
public void transferEquivalentAccess(Fragment oldFragment)
-
transferDuplicateAccess
public void transferDuplicateAccess(Fragment oldFragment)
For new fragments that have not been access transferred Called for every other duplicate fragment ( to avoid candidate element not being all fragment problem)- Parameters:
oldFragment-
-
containsNode
public boolean containsNode(Node node)
-
containsRectangle
private boolean containsRectangle(Rectangle rect2)
-
getDomParent
public Fragment getDomParent()
-
setDomParent
public void setDomParent(Fragment domParent)
-
addDomChildren
public void addDomChildren(Fragment fragment)
-
setEquivalentCoverage
public void setEquivalentCoverage(Node equivalentNode, Fragment equivalentFrag, VipsUtils.AccessType indirect, VipsUtils.Coverage coverage)
-
getEquivalentNode
public Node getEquivalentNode(Node element, Fragment duplicateFragment)
Uses relative Xpath to fetch node that is similar in the current fragment to the one provided as argument- Parameters:
element-duplicateFragment-- Returns:
-
setCoverage
public void setCoverage(Node node, VipsUtils.AccessType access, VipsUtils.Coverage coverage)
-
transferCoverage
public void transferCoverage(Fragment oldFragment)
-
getAllNodes
private List<Node> getAllNodes() throws XPathExpressionException
- Throws:
XPathExpressionException
-
getHdn
public Node getHdn()
-
setHdn
public void setHdn(Node hdn)
-
-