Whole refactor.
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.core / src / net / sourceforge / phpeclipse / xdebug / php / model / XDebugAbstractValue.java
index 3899a24..26e1263 100644 (file)
@@ -22,73 +22,52 @@ import org.w3c.dom.NodeList;
  * Window - Preferences - Java - Code Style - Code Templates
  */
 public abstract class XDebugAbstractValue  extends XDebugElement implements IValue {
-       
-       public static final int VALUETYPE_UNKNOWN = -1;
-       public static final int VALUETYPE_UNINITIALIZED = 0;
-       public static final int VALUETYPE_STRING = 1;
-       public static final int VALUETYPE_INT = 4;
-       public static final int VALUETYPE_FLOAT = 5;
-       public static final int VALUETYPE_BOOLEAN = 6;
-       public static final int VALUETYPE_ARRAY = 8;
-       public static final int VALUETYPE_HASH = 9;
-       public static final int VALUETYPE_OBJECT = 10;
-       public static final int VALUETYPE_RESOURCE = 11;
-
-       
-       protected XDebugVariable fVariable;
        private IVariable[] fVariables;
        protected String fValueString;
-       protected int fType;
        protected String fTypeName;
-       
        private boolean fhasChanged;
 
-       public XDebugAbstractValue(XDebugVariable variable, Node varNode, String typeName) {
-               super((XDebugTarget) variable.getDebugTarget());
-               fVariable = variable;
-               if (varNode==null){
-                       try {
-                               System.out.println(variable.getName()+"=null");
-                       } catch (DebugException e) {
-                               // TODO Auto-generated catch block
-                               e.printStackTrace();
-                       }
-                       return; 
-               }
-               setType(typeName);
+       public XDebugAbstractValue(XDebugStackFrame frame, Node varNode) {
+               super((XDebugTarget) frame.getDebugTarget());
+
+               fTypeName = PHPDebugUtils.getAttributeValue(varNode,"type");
+
+               int NumChildren = 0;
+               if (!PHPDebugUtils.getAttributeValue(varNode,"numchildren").equals("")) {
+                       NumChildren = Integer.parseInt(PHPDebugUtils.getAttributeValue(varNode, "numchildren"));
+               }               
+
                NodeList property = varNode.getChildNodes();
-               if (variable.hasChildren()) {
+               if (NumChildren > 0) {
                        renderValueString(""+property.getLength());
                        fVariables = new IVariable[property.getLength()];
                        for (int i = 0; i<property.getLength(); i++) {
                                Node propertyNode = property.item(i);
-                               fVariables[i] = new XDebugVariable(variable.getStackFrame(), propertyNode);
+                               fVariables[i] = new XDebugVariable(frame, propertyNode);
                        }
                }else {
-//                     fDataString="";
                        fVariables = new IVariable[0];
-//                     if (variable.getType()== XDebugVariable.VARTYPE_UNINITIALIZED)
-//                             fValueString="uninitialized";
-//                     else {
                        String str="";
                        try {
                                str=varNode.getFirstChild().getNodeValue();
                        } catch (NullPointerException e) {
                                str="";
                        }
-                       if (variable.getEncoding().equals("base64")) {
+                       
+                       
+                       String Encoding = PHPDebugUtils.getAttributeValue(varNode,"encoding");
+                       
+                       if (Encoding.equals("base64")) {
                                if (str.length()!=0)
                                        str=new String(Base64.decode(str));
                                else
                                        str="";
                        }
                        renderValueString(str);
-//                     }
                }
                String className=PHPDebugUtils.getAttributeValue(varNode,"classname");
                if(!"".equals(className))
                        renderValueString(className);
-
        }
        
        public boolean hasChanged() {
@@ -138,7 +117,6 @@ public abstract class XDebugAbstractValue  extends XDebugElement implements IVal
                return (fVariables.length > 0);
        }
        
-       public abstract void setType(String typeName);
        public abstract void renderValueString(String data);
 
        public abstract boolean verifyValue(String expression);
@@ -149,174 +127,14 @@ public abstract class XDebugAbstractValue  extends XDebugElement implements IVal
         if( getDebugTarget() == null ) {
             renderValueString(expression);
            } else {
-                   if(((XDebugTarget) getDebugTarget()).setVarValue(fVariable.getFullName(),expression)) {
+                  /* if(((XDebugTarget) getDebugTarget()).setVarValue(fVariable.getFullName(),expression)) {
                            renderValueString(expression);
                            return true;
-                   }
+                   }*/
            }
                return false;
        }
        
-       public boolean setValueA(String expression) {
-        if(! fValueString.toString().equals(expression)) {
-               fVariables= new IVariable[0];
-               fValueString = expression;
-            fhasChanged = true;                
-        } else {
-            fhasChanged = false;                       
-        }
-
-        return true;
-       }
-
-       public boolean setValueB(IValue value) {
-               try {
-                       fTypeName = value.getReferenceTypeName();
-               } catch (DebugException e) {
-               }
-               
-               fhasChanged = false;
-               
-               switch (((XDebugAbstractValue) value). getType()) {
-                       case VALUETYPE_UNINITIALIZED:
-                       case VALUETYPE_STRING:
-                       case VALUETYPE_INT:
-                       case VALUETYPE_FLOAT:
-                       case VALUETYPE_BOOLEAN:
-                               try {
-                                       if (! fValueString.equals(value.getValueString())) {
-                                               fValueString = value.getValueString();
-                                               fhasChanged = true;
-                                       }
-                               } catch (DebugException e) {
-                                       int a = 10;
-                                       a++;
-                               }
-                               break;
-
-                       case VALUETYPE_RESOURCE:
-                               try {
-                                       if (! fValueString.equals(value.getValueString())) {
-                                               fValueString = value.getValueString();
-                                               fhasChanged = true;
-                                       }
-                               } catch (DebugException e) {
-                                       int a = 10;
-                                       a++;
-                               }
-                               break;
-
-                       case VALUETYPE_HASH:
-                               int a = 20;
-                               a = a +2;
-                               break;
-                               
-                       case VALUETYPE_OBJECT:
-                       case VALUETYPE_ARRAY:
-                               try {
-                                       IVariable[] newVariable = value.getVariables();
-                                       
-                                       if (fVariables.length == 0) {
-                                               if (newVariable.length > 0) {
-                                                       fValueString = value.getValueString();
-                                                       fVariables = newVariable;
-                                                       fhasChanged = true;
-                                               }
-                                       } else {
-                                               for(int i = 0; i < fVariables.length; i++) {
-                                                       // da capire quando e perche'
-                                                       try {
-                                                               if (! ((XDebugVariable)fVariables[i]).equals(((XDebugVariable)newVariable[i]))) {
-                                                                       //fVariables[i].setValue(newVariable[i].getValue());
-                                                                       fhasChanged = true;
-                                                               }
-                                                       } catch (Exception e) {
-                                                               //int b = 1;
-                                                       }
-                                               }
-                                               if (fhasChanged) {
-                                                       fValueString = value.getValueString();
-                                                       for(int i = 0; i < fVariables.length; i++) {
-                                                               try {
-                                                                       fVariables[i].setValue(newVariable[i].getValue());
-                                                               } catch (Exception e) {
-                                                                       //int b = 1;
-                                                               }
-                                                       }
-                                               }
-                                       }
-                               } catch (DebugException e) {
-                                       int b = 10;
-                                       b++;
-                               }
-                               
-                               break;
-               }
-
-        return true;
-       }
-       
-       public boolean setValueBOld(IValue value) {
-               fhasChanged = false;
-
-               switch (((XDebugAbstractValue) value). getType()) {
-                       case VALUETYPE_UNINITIALIZED:
-                       case VALUETYPE_STRING:
-                       case VALUETYPE_INT:
-                       case VALUETYPE_FLOAT:
-                       case VALUETYPE_BOOLEAN:
-                               try {
-                                       if (! fValueString.equals(value.getValueString())) {
-                                               fValueString = value.getValueString();
-                                               fhasChanged = true;
-                                       }
-                               } catch (DebugException e) {
-                               }
-                               break;
-
-                       case VALUETYPE_HASH:
-                               int a = 20;
-                               a = a +2;
-                               break;
-                               
-                       case VALUETYPE_OBJECT:
-                       case VALUETYPE_ARRAY:
-                               try {
-                                       IVariable[] newVariable = value.getVariables();
-                                       
-                                       if (fVariables.length == 0) {
-                                               if (newVariable.length > 0) {
-                                                       fValueString = value.getValueString();
-                                                       fVariables = newVariable;
-                                                       fhasChanged = true;
-                                               }
-                                       } else {
-                                               for(int i = 0; i < fVariables.length; i++) {
-                                                       if (! ((XDebugVariable)fVariables[i]).equals(((XDebugVariable)newVariable[i]))) {
-                                                               //fVariables[i].setValue(newVariable[i].getValue());
-                                                               fhasChanged = true;
-                                                       }
-                                               }
-                                               if (fhasChanged) {
-                                                       fValueString = value.getValueString();
-                                                       for(int i = 0; i < fVariables.length; i++) {
-                                                               fVariables[i].setValue(newVariable[i].getValue());
-                                                       }
-                                               }
-                                       }
-                               } catch (DebugException e) {
-                               }
-                               
-                               break;
-               }
-
-        return true;
-       }
-
-       public int getType() {
-               return fType;
-       }
-
        public boolean supportsValueModification() {
                return false;
        }