Package org.semanticweb.HermiT.debugger.commands

Source Code of org.semanticweb.HermiT.debugger.commands.NodesForCommand

/* Copyright 2009 by the Oxford University Computing Laboratory
  
   This file is part of HermiT.

   HermiT is free software: you can redistribute it and/or modify
   it under the terms of the GNU Lesser General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.
  
   HermiT is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU Lesser General Public License for more details.
  
   You should have received a copy of the GNU Lesser General Public License
   along with HermiT.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.semanticweb.HermiT.debugger.commands;

import java.io.CharArrayWriter;
import java.io.PrintWriter;

import org.semanticweb.HermiT.debugger.Debugger;
import org.semanticweb.HermiT.debugger.Printing;
import org.semanticweb.HermiT.model.AtLeastConcept;
import org.semanticweb.HermiT.model.AtomicConcept;
import org.semanticweb.HermiT.model.ExistentialConcept;
import org.semanticweb.HermiT.tableau.Node;

public class NodesForCommand extends AbstractCommand {

    public NodesForCommand(Debugger debugger) {
        super(debugger);
    }
    public String getCommandName() {
        return "nodesFor";
    }
    public String[] getDescription() {
        return new String[] { "conceptName","prints nodes that have been created by (atleast n r.conceptName)" };
    }
    public void printHelp(PrintWriter writer) {
        writer.println("usage: nodesFor conceptName");
        writer.println("    Prints all nodes that have been created by a concept (atleast n r.conceptName)");
        writer.println("    together with the information whether the nodes are active or not.");
    }
    public void execute(String[] args) {
        if (args.length<2) {
            m_debugger.getOutput().println("Concept name is missing.");
            return;
        }
        String conceptName=args[1];
        CharArrayWriter buffer=new CharArrayWriter();
        PrintWriter writer=new PrintWriter(buffer);
        AtomicConcept atomicConcept=null;
        try {
            atomicConcept=AtomicConcept.create(m_debugger.getPrefixes().expandAbbreviatedIRI(conceptName));
            writer.println("Nodes for '"+conceptName+"'");
            writer.println("====================================================================");
            int index=0;
            Node node=m_debugger.getTableau().getFirstTableauNode();
            while (node!=null) {
                Debugger.NodeCreationInfo nodeCreationInfo=m_debugger.getNodeCreationInfo(node);
                ExistentialConcept existentialConcept=nodeCreationInfo.m_createdByExistential;
                if (existentialConcept instanceof AtLeastConcept) {
                    if (((AtLeastConcept)existentialConcept).getToConcept().equals(atomicConcept)) {
                        if (index!=0) {
                            writer.print(",");
                            if (index%5==0)
                                writer.println();
                            else
                                writer.print("  ");
                        }
                        Printing.printPadded(writer,node.getNodeID()+(node.isActive() ? "" : "*"),8);
                        index++;
                    }
                }
                node=node.getNextTableauNode();
            }
            writer.println();
            writer.println("====================================================================");
        } catch (IllegalArgumentException e) {
            writer.println(conceptName+" is invalid: "+e.getMessage());
        }
        writer.flush();
        showTextInWindow(buffer.toString(),"Nodes for '"+conceptName+"'");
        selectConsoleWindow();
    }
}
TOP

Related Classes of org.semanticweb.HermiT.debugger.commands.NodesForCommand

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.