]> gerrit.simantics Code Review - simantics/3d.git/commitdiff
Remove static DEBUG flags and use slf4j.Logger.trace()
authorReino Ruusu <reino.ruusu@semantum.fi>
Wed, 3 Jun 2020 15:43:03 +0000 (18:43 +0300)
committerTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Sun, 7 Jun 2020 09:23:54 +0000 (12:23 +0300)
gitlab #134

Change-Id: Ia3c0d488a75e15e3a20531165ac5e6f145ebd3fe
(cherry picked from commit d44977b8d6c8784d6e16374c25079b41e6026e48)

org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/common/AbstractVTKNodeMap.java
org.simantics.g3d/META-INF/MANIFEST.MF
org.simantics.g3d/src/org/simantics/g3d/property/AnnotatedPropertyTabContributorFactory.java
org.simantics.g3d/src/org/simantics/g3d/scl/ScriptNodeMap.java
org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/controlpoint/PipingRules.java

index 0df8367fd9964982a0734818817892d67a01a370..33a3154e798f96dca9a7dc993cd869cde3dac10e 100644 (file)
@@ -55,8 +55,6 @@ import vtk.vtkProp;
 
 public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VTKNodeMap<DBObject,E>, IMappingListener, RenderListener, NodeListener, UndoRedoSupport.ChangeListener{
 
-       private static final boolean DEBUG = true;
-
        private static final Logger LOGGER = LoggerFactory.getLogger(AbstractVTKNodeMap.class);
        
        protected Session session;
@@ -89,7 +87,7 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
                        undoOpCount = undoContext.getAll().size();
                        redoOpCount = undoContext.getRedoList().size();
                } catch(DatabaseException e) {
-                       e.printStackTrace();
+                       LOGGER.error("Error reading from undo context", e);
                }
        }
 
@@ -180,7 +178,8 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
                        UndoContext undoContext = undoRedoSupport.getUndoContext(session);
                        int ucount = undoContext.getAll().size();
                        int rcount = undoContext.getRedoList().size();
-                       if (DEBUG) System.out.println("Previous U:" + undoOpCount +" R:" + redoOpCount +" Current U:"+ucount+" R:"+rcount);
+                       
+                       if (LOGGER.isTraceEnabled()) LOGGER.trace("Previous U:" + undoOpCount +" R:" + redoOpCount +" Current U:"+ucount+" R:"+rcount);
                        if (ucount < undoOpCount) {
                                runUndo = true;
                        } else {
@@ -193,7 +192,7 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
                        undoOpCount = ucount;
                        redoOpCount = rcount;
                        
-                       if (DEBUG) System.out.println("Undo " + runUndo + " Redo " + runRedo);
+                       if (LOGGER.isTraceEnabled()) LOGGER.trace("Undo " + runUndo + " Redo " + runRedo);
                } catch (DatabaseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
@@ -232,7 +231,7 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
        
        @SuppressWarnings("unchecked")
        private void receiveAdd(E node, String id, boolean db) {
-               if (DEBUG) System.out.println("receiveAdd " + debugString(node)  + " " + id + " " + db);
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("receiveAdd " + debugString(node)  + " " + id + " " + db);
                synchronized (syncMutex) {
                        for (Pair<E, String> n : added) {
                                if (n.first.equals(node))
@@ -250,7 +249,7 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
        
        @SuppressWarnings("unchecked")
        private void receiveRemove(E node, String id, boolean db) {
-               if (DEBUG) System.out.println("receiveRemove " + debugString(node)  + " " + id + " " + db);
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("receiveRemove " + debugString(node)  + " " + id + " " + db);
                synchronized (syncMutex) {
                        for (Pair<E, String> n : removed) {
                                if (n.first.equals(node))
@@ -267,7 +266,7 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
        }
        
        private void receiveUpdate(E node, String id, boolean db) {
-               if (DEBUG) System.out.println("receiveUpdate " + debugString(node)  + " " + id + " " + db);
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("receiveUpdate " + debugString(node)  + " " + id + " " + db);
                synchronized (syncMutex) {
 //          for (Pair<E, String> n : updated) {
 //              if (n.first.equals(node))
@@ -302,7 +301,7 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
                                        session.syncRequest(new WriteRequest() {
                                                @Override
                                                public void perform(WriteGraph graph) throws DatabaseException {
-                                                       if (DEBUG) System.out.println("Commit " + commitMessage);
+                                                       if (LOGGER.isTraceEnabled()) LOGGER.trace("Commit " + commitMessage);
                                                        if (commitMessage != null) {
                                                                Layer0Utils.addCommentMetadata(graph, commitMessage);
                                                                graph.markUndoPoint();
@@ -325,12 +324,12 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
 
        protected void commit(WriteGraph graph) throws DatabaseException {
                synchronized(syncMutex) {
-                       if (DEBUG) System.out.println("Commit");
+                       if (LOGGER.isTraceEnabled()) LOGGER.trace("Commit");
                        graphUpdates = true;
                        mapping.updateDomain(graph);
                        graphUpdates = false;
                        clearDeletes();
-                       if (DEBUG) System.out.println("Commit done");
+                       if (LOGGER.isTraceEnabled()) LOGGER.trace("Commit done");
                }
        }
        
@@ -340,7 +339,7 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
        public void domainModified() {
                if (graphUpdates)
                        return;
-               if (DEBUG)System.out.println("domainModified");
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("domainModified");
                session.asyncRequest(new UniqueRead<Object>() {
                        @Override
                        public Object perform(ReadGraph graph) throws DatabaseException {
@@ -361,7 +360,7 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
        }
        
        protected void reset(ReadGraph graph) throws MappingException {
-               if (DEBUG) System.out.println("Reset");
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("Reset");
                
                graphUpdates = true;
                mapping.getRangeModified().clear();
@@ -375,7 +374,7 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
        private boolean useFullSyncWithUndo = false;
        
        protected void update(ReadGraph graph) throws DatabaseException {
-               if (DEBUG) System.out.println("Graph update start");
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("Graph update start");
                
                if (runUndo && useFullSyncWithUndo) {
                        synchronized (syncMutex) {
@@ -407,12 +406,12 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
                if (mapping.isRangeModified() && !runUndo && !runRedo)
                        commit((String)null);
                
-               if (DEBUG) System.out.println("Graph update done");
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("Graph update done");
        }
        
        @Override
        public void rangeModified() {
-               //System.out.println("rangeModified");
+               //LOGGER.trace("rangeModified");
 
        }
        
@@ -457,10 +456,10 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
                for (Pair<E, String> n : added) {
                        deleteUC.remove(n.first);   
                } 
-               if (DEBUG && deleteUC.size() > 0) {
-                       System.out.println("Delete sync");
+               if (LOGGER.isTraceEnabled() && deleteUC.size() > 0) {
+                       LOGGER.trace("Delete sync");
                        for (E n : delete) {
-                               System.out.println(debugString(n));
+                               LOGGER.trace(debugString(n));
                        }
                }
                delete.addAll(deleteUC);
@@ -471,9 +470,9 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
         * Clears deletable objects from mapping cache.
         */
        protected void clearDeletes() {
-               if (DEBUG && delete.size() > 0) System.out.println("Delete");
+               if (LOGGER.isTraceEnabled() && delete.size() > 0) LOGGER.trace("Delete");
                for (E n : delete) {
-                       if (DEBUG) System.out.println(debugString(n));
+                       if (LOGGER.isTraceEnabled()) LOGGER.trace(debugString(n));
                        mapping.getRange().remove(n);
                        stopListening(n);
                }
@@ -512,10 +511,10 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
                    E n = stack.pop();
                    boolean conflict = filterChange(removed, n);
                    if (conflict) {
-                       if (DEBUG) System.out.println("Prevent removing " + n);
+                       if (LOGGER.isTraceEnabled()) LOGGER.trace("Prevent removing " + n);
                        //filterChange(added, n)
                        if (filterChange(added, n))
-                          if (DEBUG) System.out.println("Prevent adding " + n);
+                          if (LOGGER.isTraceEnabled()) LOGGER.trace("Prevent adding " + n);
                    }
                    if (n instanceof ParentNode) {
                        ParentNode<INode> pn = (ParentNode<INode>)n;
@@ -646,7 +645,7 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
        @Override
        public <T extends INode> void nodeAdded(ParentNode<T> node, INode child,
                        String rel) {
-               if (DEBUG) System.out.println("Node added " + child + " parent " + node);
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("Node added " + child + " parent " + node);
                //receiveAdd((E)child, rel ,graphUpdates);
                receiveAdd((E)child, rel ,graphModified.contains(node));
        }
@@ -655,7 +654,7 @@ public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VT
        @Override
        public <T extends INode> void nodeRemoved(ParentNode<T> node, INode child,
                        String rel) {
-               if (DEBUG) System.out.println("Node removed " + child + " parent " + node);
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("Node removed " + child + " parent " + node);
                //receiveRemove((E)child, rel, graphUpdates);
                receiveRemove((E)child, rel, graphModified.contains(node));
                
index ce07870b9d45b45a42592382e75decffb22da0b3..893f45a1a4d8b909aa61336ed0394c54e53e884b 100644 (file)
@@ -19,7 +19,8 @@ Require-Bundle: org.eclipse.core.runtime,
  org.simantics.objmap2;bundle-version="1.0.0",
  org.eclipse.nebula.widgets.tablecombo;bundle-version="1.0.0",
  org.simantics.ui;bundle-version="1.0.0",
- org.simantics.scl.osgi;bundle-version="1.0.4"
+ org.simantics.scl.osgi;bundle-version="1.0.4",
+ org.slf4j.api
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ActivationPolicy: lazy
 Export-Package: org.simantics.g3d,
index 3fcb19f5e21f62fe11b9ab028e6ce6ce62f35bc4..36da53ab504ec4989339fc51dbf6f2daf4b3074e 100644 (file)
@@ -86,10 +86,12 @@ import org.simantics.g3d.tools.AdaptationUtils;
 import org.simantics.selectionview.IPropertyTab;
 import org.simantics.selectionview.IPropertyTab2;
 import org.simantics.utils.datastructures.MapList;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class AnnotatedPropertyTabContributorFactory implements PropertyTabContributorFactory {
 
-       private static final boolean DEBUG = false;
+       private static final Logger LOGGER = LoggerFactory.getLogger(AnnotatedPropertyTabContributorFactory.class);
        
        @SuppressWarnings("unchecked")
        @Override
@@ -799,7 +801,7 @@ public class AnnotatedPropertyTabContributorFactory implements PropertyTabContri
                        if (Thread.currentThread() == Display.getDefault().getThread()) {
                                if (viewer.getTable().isDisposed())
                                        return;
-                               if (DEBUG)System.out.println("Viewer refresh " + id);
+                               if (LOGGER.isTraceEnabled()) LOGGER.trace("Viewer refresh " + id);
                                for (IPropertyItem item : resolvedItems)
                                        if (!item.equals(selectedItem))
                                                viewer.refresh(item);
@@ -815,7 +817,7 @@ public class AnnotatedPropertyTabContributorFactory implements PropertyTabContri
                                                                AnnotatedPropertyTab.this.node.removeListener(AnnotatedPropertyTab.this);
                                                        return;
                                                }
-                                               if (DEBUG) System.out.println("Viewer threaded refresh " + id);
+                                               if (LOGGER.isTraceEnabled()) LOGGER.trace("Viewer threaded refresh " + id);
                                                for (IPropertyItem item : resolvedItems)
                                                        if (!item.equals(selectedItem))
                                                                viewer.refresh(item);
@@ -903,7 +905,7 @@ public class AnnotatedPropertyTabContributorFactory implements PropertyTabContri
                                };
                                }
                                
-                               if (DEBUG) System.err.println("CELL EDITOR: " + element);
+                               if (LOGGER.isTraceEnabled()) LOGGER.trace("CELL EDITOR: " + element);
                                return propertyItemEditor;
                        }
                        else if (item instanceof ComboPropertyItem) {
@@ -927,7 +929,7 @@ public class AnnotatedPropertyTabContributorFactory implements PropertyTabContri
                                    comboEditors.put(comboPropertyItem, editor);
                            }
                            
-                           if (DEBUG) System.err.println("CELL EDITOR: " + element);
+                           if (LOGGER.isTraceEnabled()) LOGGER.trace("CELL EDITOR: " + element);
                            return editor;
                        }
                        else {
@@ -955,7 +957,7 @@ public class AnnotatedPropertyTabContributorFactory implements PropertyTabContri
                        PropertyManipulator manipulator = tab.getManipulator(item);//createManipulator(item, obj);
                        if (manipulator.getValueCount() <= index)
                                throw new IllegalAccessError("Editing value in index " + index + " is not allowed.");
-                       if (DEBUG)System.err.println("CELL SET VALUE: " + element + " " + value);
+                       if (LOGGER.isTraceEnabled()) LOGGER.trace("CELL SET VALUE: " + element + " " + value);
                        manipulator.setValue(value.toString(),index);
                        viewer.refresh(item);
                        nodeMap.commit("Set " + item.getId() + " value to " + value);
@@ -1195,7 +1197,7 @@ public class AnnotatedPropertyTabContributorFactory implements PropertyTabContri
                                        || event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL) {
                                if (focusCellManager != null) {
                                        try {
-                                               if (DEBUG)System.err.println("FOCUS CELL: " + focusCell);
+                                               if (LOGGER.isTraceEnabled()) LOGGER.trace("FOCUS CELL: " + focusCell);
                                                
                                                Method m = AbstractTableViewer.class.getDeclaredMethod(
                                                                "getSelectionFromWidget");
@@ -1257,7 +1259,7 @@ public class AnnotatedPropertyTabContributorFactory implements PropertyTabContri
                                                        row.getCell(columnIndex), getViewer());
                                }
                        }
-                       if (DEBUG) System.err.println("NEXT CELL: " + cell2edit);
+                       if (LOGGER.isTraceEnabled()) LOGGER.trace("NEXT CELL: " + cell2edit);
                        if (cell2edit != null) {
                                getViewer().getControl().setRedraw(false);
                                ColumnViewerEditorActivationEvent acEvent = new ColumnViewerEditorActivationEvent(
index b7a7de03e8b52f244e42aa49f45b73e308f8c389..fc63fffc381cb2b5cb8da82d4ee349828496aa3d 100644 (file)
@@ -27,6 +27,8 @@ import org.simantics.objmap.graph.IMapping;
 import org.simantics.objmap.graph.IMappingListener;
 import org.simantics.utils.datastructures.MapSet;
 import org.simantics.utils.datastructures.Pair;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * NodeMap implementation used with SCL scripts.
@@ -44,7 +46,7 @@ import org.simantics.utils.datastructures.Pair;
  */
 public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap<DBObject,Object,E>, IMappingListener, NodeListener {
 
-       private static final boolean DEBUG = false;
+       private static final Logger LOGGER = LoggerFactory.getLogger(ScriptNodeMap.class);
        
        protected RequestProcessor session;
        protected IMapping<DBObject,INode> mapping;
@@ -126,7 +128,7 @@ public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap
        
        @SuppressWarnings("unchecked")
        private void receiveAdd(E node, String id, boolean db) {
-               if (DEBUG) System.out.println("receiveAdd " + debugString(node)  + " " + id + " " + db);
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("receiveAdd " + debugString(node)  + " " + id + " " + db);
                synchronized (syncMutex) {
                        for (Pair<E, String> n : added) {
                                if (n.first.equals(node))
@@ -143,7 +145,7 @@ public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap
        
        @SuppressWarnings("unchecked")
        private void receiveRemove(E node, String id, boolean db) {
-               if (DEBUG) System.out.println("receiveRemove " + debugString(node)  + " " + id + " " + db);
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("receiveRemove " + debugString(node)  + " " + id + " " + db);
                synchronized (syncMutex) {
                        for (Pair<E, String> n : removed) {
                                if (n.first.equals(node))
@@ -158,7 +160,7 @@ public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap
        }
        
        private void receiveUpdate(E node, String id, boolean db) {
-               if (DEBUG) System.out.println("receiveUpdate " + debugString(node)  + " " + id + " " + db);
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("receiveUpdate " + debugString(node)  + " " + id + " " + db);
                synchronized (syncMutex) {
 //          for (Pair<E, String> n : updated) {
 //              if (n.first.equals(node))
@@ -190,7 +192,7 @@ public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap
                        
                        @Override
                        public void perform(WriteGraph graph) throws DatabaseException {
-                               if (DEBUG) System.out.println("Commit " + commitMessage);
+                               if (LOGGER.isTraceEnabled()) LOGGER.trace("Commit " + commitMessage);
                                if (commitMessage != null) {
                                        Layer0Utils.addCommentMetadata(graph, commitMessage);
                                        graph.markUndoPoint();
@@ -204,12 +206,12 @@ public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap
        
        protected void commit(WriteGraph graph) throws DatabaseException {
                synchronized(syncMutex) {
-                       if (DEBUG) System.out.println("Commit");
+                       if (LOGGER.isTraceEnabled()) LOGGER.trace("Commit");
                        graphUpdates = true;
                        mapping.updateDomain(graph);
                        graphUpdates = false;
                        clearDeletes();
-                       if (DEBUG) System.out.println("Commit done");
+                       if (LOGGER.isTraceEnabled()) LOGGER.trace("Commit done");
                }
        }
        
@@ -219,7 +221,7 @@ public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap
        public void domainModified() {
                if (graphUpdates)
                        return;
-               if (DEBUG)System.out.println("domainModified");
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("domainModified");
                // FIXME : this is called by IMapping id DB thread
                dirty = true;
 //        session.asyncRequest(new ReadRequest() {
@@ -234,7 +236,7 @@ public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap
        }
        
        protected void reset(ReadGraph graph) throws MappingException {
-               if (DEBUG) System.out.println("Reset");
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("Reset");
                synchronized (syncMutex) {
                        graphUpdates = true;
                        mapping.getRangeModified().clear();
@@ -247,7 +249,7 @@ public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap
        }
        
        protected void update(ReadGraph graph) throws DatabaseException {
-               if (DEBUG) System.out.println("Graph update start");
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("Graph update start");
                synchronized (syncMutex) {
                        graphUpdates = true;
                        for (DBObject domainObject : mapping.getDomainModified()) {
@@ -267,7 +269,7 @@ public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap
                //if (mapping.isRangeModified() && !runUndo) // FIXME : redo?
                if (mapping.isRangeModified())
                        commit((String)null);
-               if (DEBUG) System.out.println("Graph update done");
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("Graph update done");
        }
        
        @Override
@@ -324,10 +326,10 @@ public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap
                for (Pair<E, String> n : added) {
                        deleteUC.remove(n.first);   
                } 
-               if (DEBUG && deleteUC.size() > 0) {
-                       System.out.println("Delete sync");
+               if (LOGGER.isTraceEnabled() && deleteUC.size() > 0) {
+                       LOGGER.trace("Delete sync");
                        for (E n : delete) {
-                               System.out.println(debugString(n));
+                               LOGGER.trace(debugString(n));
                        }
                }
                delete.addAll(deleteUC);
@@ -339,9 +341,9 @@ public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap
         */
        @SuppressWarnings("unused")
        protected void clearDeletes() {
-               if (DEBUG && delete.size() > 0) System.out.println("Delete");
+               if (LOGGER.isTraceEnabled() && delete.size() > 0) LOGGER.trace("Delete");
                for (E n : delete) {
-                       if (DEBUG) System.out.println(debugString(n));
+                       if (LOGGER.isTraceEnabled()) LOGGER.trace(debugString(n));
                        mapping.getRange().remove(n);
                }
                delete.clear();
@@ -512,7 +514,7 @@ public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap
        @Override
        public <T extends INode> void nodeAdded(ParentNode<T> node, INode child,
                        String rel) {
-               if (DEBUG) System.out.println("Node added " + child + " parent " + node);
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("Node added " + child + " parent " + node);
                //receiveAdd((E)child, rel ,graphUpdates);
                receiveAdd((E)child, rel ,graphModified.contains(node));
                
@@ -522,7 +524,7 @@ public abstract class ScriptNodeMap<DBObject,E extends INode> implements NodeMap
        @Override
        public <T extends INode> void nodeRemoved(ParentNode<T> node, INode child,
                        String rel) {
-               if (DEBUG) System.out.println("Node removed " + child + " parent " + node);
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("Node removed " + child + " parent " + node);
                //receiveRemove((E)child, rel, graphUpdates);
                receiveRemove((E)child, rel, graphModified.contains(node));
                
index e930b8d6d07094035a188933141c4519085c5382..3d38107990b4c25e53a4389fb42803ba529039bd 100644 (file)
@@ -18,9 +18,12 @@ import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint.Direction;
 import org.simantics.plant3d.utils.ComponentUtils;
 import org.simantics.utils.datastructures.Pair;
 import org.simantics.utils.ui.ErrorLogger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class PipingRules {
-       private static final boolean DEBUG = false;
+       private static final Logger LOGGER = LoggerFactory.getLogger(PipingRules.class);
+       
        private static final boolean DUMMY = false;
 
        private static double MIN_TURN_ANGLE = 0.001;    // Threshold for removing turn components.
@@ -57,7 +60,7 @@ public class PipingRules {
        public static void requestUpdate(PipeControlPoint pcp) {
            if (!PipingRules.enabled)
                return;
-               if (DEBUG) System.out.println("PipingRules request " + pcp);
+               if (LOGGER.isTraceEnabled()) LOGGER.trace("PipingRules request " + pcp);
                synchronized (updateMutex) {
                        if (!requestUpdates.contains(pcp))
                                requestUpdates.add(pcp);
@@ -113,7 +116,7 @@ public class PipingRules {
                if (pcp.getPipeRun() == null)
                        return false;
                try {
-                       if (DEBUG) System.out.println("PipingRules " + pcp);
+                       if (LOGGER.isTraceEnabled()) LOGGER.trace("PipingRules " + pcp);
                        updating = true;
                        allowInsertRemove = allowIR;
                        triedIR = false;
@@ -133,7 +136,7 @@ public class PipingRules {
                        return true;
                } finally {
                        updating = false;
-//                     System.out.println("PipingRules done " + pcp);
+//                     LOGGER.trace("PipingRules done " + pcp);
                }
        }
        
@@ -201,8 +204,8 @@ public class PipingRules {
        }
 
        private static void updatePathLegEndControlPoint(PipeControlPoint pcp) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.updatePathLegEndControlPoint() " + pcp);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.updatePathLegEndControlPoint() " + pcp);
                if (pcp.getNext() != null) {
                        updatePathLegNext(pcp, pcp, PathLegUpdateType.NEXT_S);
                }
@@ -213,8 +216,8 @@ public class PipingRules {
        }
 
        private static void updateInlineControlPoint(PipeControlPoint pcp) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.updateInlineControlPoint() " + pcp);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.updateInlineControlPoint() " + pcp);
                PipeControlPoint start = pcp.findPreviousEnd();
                updatePathLegNext(start, pcp, PathLegUpdateType.NONE);
                
@@ -231,8 +234,8 @@ public class PipingRules {
        }
 
        private static PipeControlPoint insertElbow(PipeControlPoint pcp1, PipeControlPoint pcp2, Vector3d pos) throws Exception{
-               if (DEBUG)
-                       System.out.println("PipingRules.insertElbow() " + pcp1 + " " + pcp2 + " " + pos);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.insertElbow() " + pcp1 + " " + pcp2 + " " + pos);
                if (pcp1.getNext() == pcp2 && pcp2.getPrevious() == pcp1) {
                        
                } else if (pcp1.getNext() == pcp2 && pcp1.isDualInline() && pcp2.getPrevious() == pcp1.getDualSub()) {
@@ -264,8 +267,8 @@ public class PipingRules {
        }
        
        private static PipeControlPoint insertStraight(PipeControlPoint pcp1, PipeControlPoint pcp2, Vector3d pos, double length) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.insertStraight() " + pcp1 + " " + pcp2 + " " + pos);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.insertStraight() " + pcp1 + " " + pcp2 + " " + pos);
                if (pcp1.getNext() == pcp2 && pcp2.getPrevious() == pcp1) {
                        
                } else if (pcp1.getNext() == pcp2 && pcp1.isDualInline() && pcp2.getPrevious() == pcp1.getDualSub()) {
@@ -301,8 +304,8 @@ public class PipingRules {
        }
        
        private static PipeControlPoint insertStraight(PipeControlPoint pcp, Direction direction , Vector3d pos, double length) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.insertStraight() " + pcp + " " + direction + " " + pos);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.insertStraight() " + pcp + " " + direction + " " + pos);
                
                InlineComponent component = ComponentUtils.createStraight((P3DRootNode)pcp.getRootNode());
                PipeControlPoint scp = component.getControlPoint();
@@ -323,7 +326,7 @@ public class PipingRules {
        private static void updatePathLegNext(PipeControlPoint start, PipeControlPoint updated, PathLegUpdateType lengthChange) throws Exception {
                UpdateStruct2 us = createUS(start, Direction.NEXT, 0, new ArrayList<ExpandIterInfo>(), updated);
                if (us == null) {
-                   System.out.println("Null update struct " + start);
+                   LOGGER.trace("Null update struct " + start);
                    return; 
                }
                updatePathLeg(us, lengthChange);
@@ -332,7 +335,7 @@ public class PipingRules {
        private static void updatePathLegPrev(PipeControlPoint start, PipeControlPoint updated, PathLegUpdateType lengthChange) throws Exception {
                UpdateStruct2 us = createUS(start, Direction.PREVIOUS, 0, new ArrayList<ExpandIterInfo>(), updated);
                if (us == null) {
-            System.out.println("Null update struct " + start);
+            LOGGER.trace("Null update struct " + start);
             return; 
         }
                updatePathLeg(us, lengthChange);
@@ -466,8 +469,8 @@ public class PipingRules {
                                        dir.scale(1.0/Math.sqrt(l));
                        }
                        
-                       if (DEBUG)
-                               System.out.println("calcOffset s:"+ startPoint + " e:" + endPoint + " d:" + dir + " o:"+offset) ;
+                       if (LOGGER.isTraceEnabled())
+                               LOGGER.trace("calcOffset s:"+ startPoint + " e:" + endPoint + " d:" + dir + " o:"+offset) ;
                        
                        return true;
                }
@@ -593,16 +596,16 @@ public class PipingRules {
        }
 
        private static void updateFreePathLeg(UpdateStruct2 u, PathLegUpdateType lengthChange) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.updateFreePipeRun " + u + " " + lengthChange);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.updateFreePipeRun " + u + " " + lengthChange);
                checkExpandPathLeg(u, lengthChange);
                if (u.start.isInline() || u.end.isInline() || u.start.asFixedAngle()|| u.end.asFixedAngle())
                        processPathLeg(u, true, false);
        }
 
        private static void updateInlineControlPoints(UpdateStruct2 u, boolean checkSizes) throws Exception{
-               if (DEBUG)
-                       System.out.println("PipingRules.updateInlineControlPoints() " + u);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.updateInlineControlPoints() " + u);
 
                Vector3d start = new Vector3d(u.startPoint);
                Vector3d end = new Vector3d(u.endPoint);
@@ -727,7 +730,7 @@ public class PipingRules {
                 for (PipeControlPoint pcp : u.list)
                     setError(pcp, "Not enough available space");
             }
-//            System.out.println(u.start.getPipelineComponent().toString() + " " + pathLegLength + " " + availableLength + " " + u.end.getPipelineComponent().toString() + " " + u.start.getInlineLength() + " " + u.end.getInlineLength());
+//            LOGGER.trace(u.start.getPipelineComponent().toString() + " " + pathLegLength + " " + availableLength + " " + u.end.getPipelineComponent().toString() + " " + u.start.getInlineLength() + " " + u.end.getInlineLength());
                }
        }
        
@@ -935,8 +938,8 @@ public class PipingRules {
                                triedIR = true;
                                return false;
                            }
-                               if (DEBUG)
-                                       System.out.println("PipingRules.updateVariableLength removing " + icp);
+                               if (LOGGER.isTraceEnabled())
+                                       LOGGER.trace("PipingRules.updateVariableLength removing " + icp);
                                icp._remove();
                                return true;
                        } else {
@@ -1010,13 +1013,13 @@ public class PipingRules {
                        double l = beginPos.distance(endPos);
                        
                        if (Double.isNaN(l))
-                               System.out.println("Length for " + icp + " is NaN");
+                               LOGGER.debug("Length for " + icp + " is NaN");
        
                        dir.scale(l * 0.5);
                        beginPos.add(dir); // center position
        
-                       if (DEBUG)
-                               System.out.println("PipingRules.updateInlineControlPoints() setting variable length to " + l);
+                       if (LOGGER.isTraceEnabled())
+                               LOGGER.trace("PipingRules.updateInlineControlPoints() setting variable length to " + l);
                        icp.setLength(l);
        
                        icp.setWorldPosition(new Vector3d(beginPos));
@@ -1030,8 +1033,8 @@ public class PipingRules {
         * @throws Exception
         */
        private static void ppNoOffset(UpdateStruct2 u, boolean updateEnds) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.ppNoOffset() " + u);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.ppNoOffset() " + u);
                Vector3d offset = new Vector3d();
                if (u.hasOffsets) {
                        for (PipeControlPoint icp : u.list) {
@@ -1046,8 +1049,8 @@ public class PipingRules {
        }
 
        private static void ppNoDir(PipeControlPoint start, Vector3d startPoint, ArrayList<PipeControlPoint> list, PipeControlPoint end, Vector3d endPoint, boolean hasOffsets, int iter, boolean reversed, ArrayList<ExpandIterInfo> toRemove, PipeControlPoint updated) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.ppNoDir() " + start + " " + end + " " + iter + " " + toRemove.size());
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.ppNoDir() " + start + " " + end + " " + iter + " " + toRemove.size());
                // FIXME : extra loop (dir should be calculated here)
                Vector3d dir = new Vector3d();
                Vector3d offset = new Vector3d();
@@ -1060,8 +1063,8 @@ public class PipingRules {
        }
        
        private static void checkExpandPathLeg(UpdateStruct2 u, PathLegUpdateType lengthChange, boolean updateEnds) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.checkExpandPathLeg() " + u + " " + lengthChange);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.checkExpandPathLeg() " + u + " " + lengthChange);
                if (lengthChange != PathLegUpdateType.NONE) {
                        // FIXME : turns cannot be checked before inline cps are updated,
                        // since their position affects calculation of turns
@@ -1078,8 +1081,8 @@ public class PipingRules {
        }
 
        private static void updateDirectedPathLeg(UpdateStruct2 u, PathLegUpdateType lengthChange) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.updateDirectedPipeRun() " + u + " " + lengthChange);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.updateDirectedPipeRun() " + u + " " + lengthChange);
                PipeControlPoint dcp;
                PipeControlPoint other;
                boolean canMoveOther = false;
@@ -1185,8 +1188,8 @@ public class PipingRules {
                                        }
 
                                        if (canMoveOther) {
-                                               if (DEBUG)
-                                                       System.out.println("PipingRules.updateDirectedPipeRun() moved end " + other + " to " + closest);
+                                               if (LOGGER.isTraceEnabled())
+                                                       LOGGER.trace("PipingRules.updateDirectedPipeRun() moved end " + other + " to " + closest);
                                                
                                                // Not aligned - we need to recalculate the offset to reflect new end points.
                                                Vector3d offset;
@@ -1238,8 +1241,8 @@ public class PipingRules {
                                                throw new UnsupportedOperationException("not implemented");
                                        }
                                        if (canMoveOther) {
-                                               if (DEBUG)
-                                                       System.out.println("PipingRules.updateDirectedPipeRun() moved end " + other + " to " + bintersect);
+                                               if (LOGGER.isTraceEnabled())
+                                                       LOGGER.trace("PipingRules.updateDirectedPipeRun() moved end " + other + " to " + bintersect);
                                                // is required branch position is in possible range
                                                bcp.setWorldPosition(bintersect);
                                                if (dcpStart) {
@@ -1268,8 +1271,8 @@ public class PipingRules {
        }
 
        private static void updateDualDirectedPathLeg(UpdateStruct2 u, PathLegUpdateType lengthChange) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.updateDualDirectedPipeRun() " + u + " " + lengthChange);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.updateDualDirectedPipeRun() " + u + " " + lengthChange);
                
                PipeControlPoint dcp1 = u.start;
                PipeControlPoint dcp2 = u.end;
@@ -1340,8 +1343,8 @@ public class PipingRules {
                                PipeControlPoint tcp1 = insertElbow(dcp, next, p1);
                                PipeControlPoint tcp2 = insertElbow(tcp1, next, p2);
 
-                               if (DEBUG)
-                                       System.out.println("PipingRules.updateDualDirectedPipeRun() created two turns " + tcp1 + " " + tcp2);
+                               if (LOGGER.isTraceEnabled())
+                                       LOGGER.trace("PipingRules.updateDualDirectedPipeRun() created two turns " + tcp1 + " " + tcp2);
 
                                if (!u.reversed) {
                                        Vector3d dd = new Vector3d(p2);
@@ -1459,8 +1462,8 @@ public class PipingRules {
                tcp.setPosition(p);
                closest = p;
 
-               if (DEBUG)
-                       System.out.println("PipingRules.updateDirectedPipeRun() inserted " + tcp);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.updateDirectedPipeRun() inserted " + tcp);
 
                if (dcpStart) {
                        // update pipe run from new turn to other end
@@ -1479,8 +1482,8 @@ public class PipingRules {
         * Checks if turns can be removed (turn angle near zero)
         */
        private static int checkTurns(UpdateStruct2 u, PathLegUpdateType lengthChange) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.checkTurns() " + u.start + " " + u.end);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.checkTurns() " + u.start + " " + u.end);
                boolean startRemoved = false;
                boolean endRemoved = false;
                if (u.start.isVariableAngle()) {
@@ -1518,8 +1521,8 @@ public class PipingRules {
                                }
                        }
                }
-               if (DEBUG)
-                       System.out.println("PipingRules.checkTurns() res " + startRemoved + " " + endRemoved);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.checkTurns() res " + startRemoved + " " + endRemoved);
                if (!startRemoved && !endRemoved)
                        return REMOVE_NONE;
                if (startRemoved && endRemoved)
@@ -1534,8 +1537,8 @@ public class PipingRules {
         * 
         */
        private static void expandPathLeg(UpdateStruct2 u, int type) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.expandPipeline " + u.start + " " + u.end);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.expandPipeline " + u.start + " " + u.end);
                ArrayList<PipeControlPoint> newList = new ArrayList<PipeControlPoint>();
                switch (type) {
                case REMOVE_NONE:
@@ -1580,8 +1583,8 @@ public class PipingRules {
                                        ErrorLogger.defaultLogError("Updating pipe run, found offset controlpoint " + icp, new Exception("ASSERT!"));
                        }
                }
-               if (DEBUG)
-                       System.out.println("PipingRules.expandPipeline expanded " + u.start + " " + u.end);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.expandPipeline expanded " + u.start + " " + u.end);
                u.iter++;
                updatePathLeg(u, PathLegUpdateType.NONE);
        }
@@ -1591,8 +1594,8 @@ public class PipingRules {
         */
        private static void backIter(UpdateStruct2 u) throws Exception {
 
-               if (DEBUG)
-                       System.out.println("PipingRules.backIter" + u.start + " " + u.end);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.backIter" + u.start + " " + u.end);
                if (u.iter == 0)
                        throw new RuntimeException("Error in piping rules");
                ExpandIterInfo info = u.toRemove.get(u.toRemove.size() - 1);
@@ -1639,25 +1642,25 @@ public class PipingRules {
        // toRemove) throws TransactionException {
 
        private static void processPathLeg(UpdateStruct2 u) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.processPathLeg " + u.start + " " + u.end);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.processPathLeg " + u.start + " " + u.end);
                processPathLeg(u, true, true);
        }
 
        private static void processPathLeg(UpdateStruct2 u, boolean updateEnds, boolean updateInline) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.processPathLeg " + (updateEnds ? "ends " : "") + (updateInline ? "inline " : "") + u.start + " " + u.end);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.processPathLeg " + (updateEnds ? "ends " : "") + (updateInline ? "inline " : "") + u.start + " " + u.end);
 
                if (u.toRemove.size() > 0) {
                        for (ExpandIterInfo info : u.toRemove) {
                                if (info.getStart() != null) {
-                                       if (DEBUG)
-                                               System.out.println("PipingRules.processPathLeg removing start " + info.getStart());
+                                       if (LOGGER.isTraceEnabled())
+                                               LOGGER.trace("PipingRules.processPathLeg removing start " + info.getStart());
                                        info.getStart()._remove();
                                }
                                if (info.getEnd() != null) {
-                                       if (DEBUG)
-                                               System.out.println("PipingRules.processPathLeg removing end " + info.getEnd());
+                                       if (LOGGER.isTraceEnabled())
+                                               LOGGER.trace("PipingRules.processPathLeg removing end " + info.getEnd());
                                        info.getEnd()._remove();
                                }
                        }
@@ -1713,8 +1716,8 @@ public class PipingRules {
        // {
        @SuppressWarnings("unused")
        private static void processPathLegNoOffset(UpdateStruct2 u) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.processPathLeg " + u.start + " " + u.end);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.processPathLeg " + u.start + " " + u.end);
                Vector3d offset = new Vector3d();
                if (u.hasOffsets) {
                        u.dir.normalize();
@@ -1746,8 +1749,8 @@ public class PipingRules {
         * @param prevPoint
         */
        private static void updateInlineControlPoint(PipeControlPoint icp, Vector3d prev, Vector3d next,  Vector3d dir) {
-               if (DEBUG)
-                       System.out.println("PipingRules.updateInlineControlPoint() " + icp);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.updateInlineControlPoint() " + icp);
 
                Vector3d inlinePoint = icp.getWorldPosition();
                Vector3d prevPoint = new Vector3d(prev);
@@ -1762,7 +1765,7 @@ public class PipingRules {
                        }
                }
                boolean canCalc = MathTools.distance(prevPoint, nextPoint) > ALLOWED_OFFSET;
-               if (DEBUG)
+               if (LOGGER.isTraceEnabled())
                        System.out.print("InlineControlPoint update " + icp + " " + inlinePoint + " " + prevPoint + " " + nextPoint);
                Vector3d newInlinePoint = null;
                if (canCalc) {
@@ -1798,8 +1801,8 @@ public class PipingRules {
                                        newInlinePoint = new Vector3d();
                                        double mu[] = new double[2];
                                        MathTools.intersectStraightStraight(new Vector3d(prevPoint), dir1, new Vector3d(branchLegEnd), dir2, newInlinePoint, new Vector3d(), mu);
-                                       if (DEBUG)
-                                               System.out.println(mu[0]);
+                                       if (LOGGER.isTraceEnabled())
+                                               LOGGER.trace(Double.toString(mu[0]));
                                        // FIXME : reserve space
                                        if (mu[0] < 0.0) {
                                                newInlinePoint = new Vector3d(prevPoint);
@@ -1812,8 +1815,8 @@ public class PipingRules {
                        // prevPoint == nextPoint
                        newInlinePoint = new Vector3d(prevPoint);
                }
-               if (DEBUG)
-                       System.out.println(" " + newInlinePoint);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace(" " + newInlinePoint);
 
                icp.setWorldPosition(newInlinePoint);
                icp.orientToDirection(dir);
@@ -1829,8 +1832,8 @@ public class PipingRules {
         * @param prevPoint
         */
        private static void updateEndComponentControlPoint(PipeControlPoint ecp, Vector3d dir) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.updateEndComponentControlPoint() " + ecp);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.updateEndComponentControlPoint() " + ecp);
                
                if (!ecp.isFixed()) // prevent overriding nozzle orientations..
                        ecp.orientToDirection(dir);
@@ -1847,14 +1850,14 @@ public class PipingRules {
         * @param bcp
         */
        private static void updateBranchControlPointBranches(PipeControlPoint bcp) throws Exception {
-               if (DEBUG)
-                       System.out.println("PipingRules.updateBranchControlPointBranches() " + bcp);
+               if (LOGGER.isTraceEnabled())
+                       LOGGER.trace("PipingRules.updateBranchControlPointBranches() " + bcp);
                if (bcp.isDualInline())
                        return;
                Collection<PipeControlPoint> branches = bcp.getChildPoints();
                if (branches.size() == 0) {
-                       if (DEBUG)
-                               System.out.println("No Branches found");
+                       if (LOGGER.isTraceEnabled())
+                               LOGGER.trace("No Branches found");
                        return;
                }
                
@@ -1908,8 +1911,8 @@ public class PipingRules {
                        
                        tcp.orientToDirection(prev);
                        
-                       if (DEBUG)
-                               System.out.println("PipingTools.updateTurnControlPointTurn " + prev + " " + next + " " + turnAngle + " " + turnAxis);
+                       if (LOGGER.isTraceEnabled())
+                               LOGGER.trace("PipingTools.updateTurnControlPointTurn " + prev + " " + next + " " + turnAngle + " " + turnAxis);
                        return turnAngle;
                } else {
                        
@@ -2104,26 +2107,26 @@ public class PipingRules {
                synchronized (ruleMutex) {
                        Collection<PipeControlPoint> pcps = pipeRun.getControlPoints();
                        int count = 0;
-                       //System.out.println("Validate " + pipeRun.getName());
+                       //LOGGER.trace("Validate " + pipeRun.getName());
                        for (PipeControlPoint pcp : pcps) {
                                if (pcp.getParentPoint() == null || pcp.getParentPoint().getPipeRun() != pipeRun)
                                        count++;
                        }
                        List<PipeControlPoint> runPcps = getControlPoints(pipeRun);
                        if (runPcps.size() != count) {
-                               System.out.println("Run " + pipeRun.getName() + " contains unconnected control points, found " + runPcps.size() + " connected, " + pcps.size() + " total.");
+                               LOGGER.debug("Run " + pipeRun.getName() + " contains unconnected control points, found " + runPcps.size() + " connected, " + pcps.size() + " total.");
                                for (PipeControlPoint pcp : pcps) {
                                    if (!runPcps.contains(pcp)) {
-                                       System.out.println("Unconnected " + pcp + " " + pcp.getPipelineComponent());
+                                       LOGGER.debug("Unconnected " + pcp + " " + pcp.getPipelineComponent());
                                    }
                                }
                        }
                        for (PipeControlPoint pcp : pcps) {
                            if (pcp.getPipeRun() == null) {
-                               System.out.println("PipeRun ref missing " + pcp + " " + pcp.getPipelineComponent());
+                               LOGGER.debug("PipeRun ref missing " + pcp + " " + pcp.getPipelineComponent());
                            }
                                if (!pcp.isDirected() && pcp.getNext() == null && pcp.getPrevious() == null)
-                                       System.out.println("Orphan undirected " + pcp + " " + pcp.getPipelineComponent());
+                                       LOGGER.debug("Orphan undirected " + pcp + " " + pcp.getPipelineComponent());
                        }
                        for (PipeControlPoint pcp : pcps) {
                                if (pcp.getParentPoint() == null) {
@@ -2134,7 +2137,7 @@ public class PipingRules {
                                        PipeControlPoint prev = pcp.getPrevious();
                                        if (next != null) {
                                                if (!(next.getPrevious() == pcp || next.getPrevious() == sub)) {
-                                                       System.out.println("Inconsistency between " + pcp + " -> " +next );
+                                                       LOGGER.debug("Inconsistency between " + pcp + " -> " +next );
                                                }
                                        }
                                        if (prev != null) {
@@ -2142,10 +2145,10 @@ public class PipingRules {
                                                if (prev.isDualSub()) {
                                                        prevParent = prev.getParentPoint();
                                                } else if (prev.isDualInline()) {
-                                                       System.out.println("Inconsistency between " + pcp + " <-- " +prev );
+                                                       LOGGER.debug("Inconsistency between " + pcp + " <-- " +prev );
                                                }
                                                if (!(prev.getNext() == pcp && (prevParent == null || prevParent.getNext() == pcp))) {
-                                                       System.out.println("Inconsistency between " + pcp + " <-- " +prev );
+                                                       LOGGER.debug("Inconsistency between " + pcp + " <-- " +prev );
                                                }
                                        }
                                }