001    package nl.tudelft.tbm.eeni.owl2java.model.jmodel.utils;
002    
003    import com.hp.hpl.jena.ontology.OntClass;
004    import com.hp.hpl.jena.ontology.OntProperty;
005    import com.hp.hpl.jena.ontology.Restriction;
006    import nl.tudelft.tbm.eeni.owl2java.model.jmodel.*;
007    import org.jgraph.graph.DefaultEdge;
008    import org.jgrapht.traverse.BreadthFirstIterator;
009    
010    import java.util.List;
011    
012    
013    public class DebugUtils {
014    
015        public static String logClass(OntClass cls) {
016            String log = LogUtils.toLogName(cls) + " -> " + "anon: " + cls.isAnon() + ", complement: "
017                    + cls.isComplementClass() + ", intersection: " + cls.isIntersectionClass() + ", union: "
018                    + cls.isUnionClass() + ", enumerated: " + cls.isEnumeratedClass();
019            return log;
020        }
021    
022        public static String logProperty(OntProperty prop) {
023    
024            String log = LogUtils.toLogName(prop) + " -> " + "functional: " + prop.isFunctionalProperty() + ", inverse: "
025                    + prop.isFunctionalProperty() + ", inverse functional: " + prop.isInverseFunctionalProperty()
026                    + ", datatype prop: " + prop.isDatatypeProperty() + ", object prop: " + prop.isObjectProperty()
027                    + ", symmetric: " + prop.isSymmetricProperty() + ", transitive: " + prop.isTransitiveProperty();
028            return log;
029        }
030    
031        public static String logRestriction(Restriction res) {
032            String log = "Restriction -> " + "all values: " + res.isAllValuesFromRestriction() + ", some values: "
033                    + res.isSomeValuesFromRestriction() + ", has value: " + res.isHasValueRestriction()
034                    + ", max cardinality: " + res.isMaxCardinalityRestriction() + ", min cardinality: "
035                    + res.isMinCardinalityRestriction() + ")";
036            return log;
037        }
038    
039        public static String logPropertyOnClass(OntClass cls, OntProperty prop) {
040            return LogUtils.toLogName(cls) + "->" + LogUtils.toLogName(prop);
041        }
042    
043        public static void debugRestrictions(JModel jModel) {
044            JClass baseCls = jModel.getBaseThing();
045            JInheritanceGraph<JClass, DefaultEdge> classGraph = jModel.getClassGraph();
046            BreadthFirstIterator<JClass, DefaultEdge> it = new BreadthFirstIterator<JClass, DefaultEdge>(classGraph,
047                    baseCls);
048            it.setCrossComponentTraversal(true);
049            while (it.hasNext()) {
050                JClass c = (JClass) it.next();
051                List<JRestrictionsContainer> rcs = c.listDomainRestrictionContainers();
052                for (JRestrictionsContainer rc : rcs)
053                    System.err.println(rc.getJModelReport());
054            }
055        }
056    
057        public static void debugDomainRepresentations(JModel jModel) {
058            JClass baseCls = jModel.getBaseThing();
059            JInheritanceGraph<JClass, DefaultEdge> classGraph = jModel.getClassGraph();
060            BreadthFirstIterator<JClass, DefaultEdge> it = new BreadthFirstIterator<JClass, DefaultEdge>(classGraph,
061                    baseCls);
062            it.setCrossComponentTraversal(true);
063            while (it.hasNext()) {
064                JClass c = (JClass) it.next();
065                List<JPropertyRepresentation> pps = c.listDomainPropertyRepresentations();
066                for (JPropertyRepresentation pp : pps)
067                    System.err.println(pp.getJModelReport());
068    
069            }
070        }
071    }