Project

General

Profile

« Previous | Next » 

Revision 10

Added by Matt Wheeler about 14 years ago

Added ability to change the vegx node names to be different from the postgres table names.
This was the easiest way to change the postgres table names when the vegx names are
not useable for some reason. This requires that the node names be altered in the xsd
definition and then mapped back to the orginal node name in the types.php file.

View differences:

Entity.php
304 304
      $type = $ref; 
305 305
    }
306 306
    $name = $childNode->getAttribute('name');
307
    if($ref != '' && $name == '') {
308
      $name = $this->tableName . "_" . $ref;
307
    if($ref != '' && $name == '' /*&& !isPrimitiveType($ref)*/) {
308
      $name = $ref;
309 309
    }
310 310

  
311 311
    if($name == '') {
......
530 530
  }
531 531

  
532 532
  public function toString() {
533
    global $tableRenames;
533 534
    $str = "class " . $this->tableName . "(models.Model):\n";
534 535

  
535 536
    #All entities need reference to their creation info since
......
539 540

  
540 541
    foreach(array_keys($this->references) as $colName) {
541 542
      $def = $this->references[$colName];
542
      $str .= "  $colName = $def\n";
543
      $effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
544
      $str .= "  $effectiveColName = $def\n";
543 545
    }
544 546
    foreach(array_keys($this->members) as $colName) {
545 547
      $def = $this->members[$colName];
......
597 599
  }
598 600

  
599 601
  public function makeImportFunction() {
602
    global $tableRenames;
600 603
    #Slightly different if there are no members
601 604
    if(count($this->references) == 0 &&
602 605
       count($this->members) == 0 &&
......
688 691
          $i += 1;
689 692
          $tabType = $nativeVegXPointers[$colName]['fk_type'];
690 693
          $toField = $nativeVegXPointers[$colName]['to_field'];
691
          $def .= "      $ifStmt cName == '$colName':\n".
694
          $effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
695
          $def .= "      $ifStmt cName == '$effectiveColName':\n".
692 696
                  "        if(len(child.childNodes) > 0):\n".
693 697
                  "          cVal = child.childNodes[0].nodeValue\n".
694 698
                  "          q = $tabType.objects.filter($toField" . "__exact = cVal)\n".
695 699
                  "          q = $tabType.objects.filter(entryInfo__id__exact = self.entryInfo.id)\n".
696 700
                  "          if len(q) > 0:\n".
697
                  "            self.$colName = q[0]\n";
701
                  "            self.$effectiveColName = q[0]\n";
698 702
        } else {
699 703
          $ifStmt = $i == 0 ? 'if' : 'elif';
700 704
          $i += 1;
701
          $def .= "      $ifStmt cName == '$colName':\n".
705
          $effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
706
          $def .= "      $ifStmt cName == '$effectiveColName':\n".
702 707
                  "        if(len(child.childNodes) > 0):\n".
703 708
                  "          cVal = child.childNodes[0].nodeValue\n".
704
                  "          self.$colName = cVal\n";
709
                  "          self.$effectiveColName = cVal\n";
705 710
        }
706 711
      }
707 712
    }
......
720 725
         preg_match("/Complex one2Many/",$colDef) > 0 && preg_match("/_extend/",$colDef) == 0 &&
721 726
         preg_match("/_id/",$colName) == 0) {
722 727
        $i += 1;
723
        $def .= "      $ifStmt cName == '$colName':\n".
728
        $effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
729
        $def .= "      $ifStmt cName == '$effectiveColName':\n".
724 730
                "        newEl = $matches[2]().retrieveOrNew(child)\n".
725 731
                "        newEl.importVegX(child,info)\n".
726
                "        self.$colName = newEl\n";
732
                "        self.$effectiveColName = newEl\n";
727 733
      }
728 734
      if(preg_match("/(ManyToManyField\(')([a-zA-Z]*)/",$colDef,$matches) > 0) {
735
        $effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
729 736
        $i += 1;
730
        $def .= "      $ifStmt cName == '$colName':\n".
737
        $def .= "      $ifStmt cName == '$effectiveColName':\n".
731 738
                "        newEl = $matches[2]().retrieveOrNew(child)\n".
732 739
                "        newEl.importVegX(child,info)\n".
733
                "        self.$colName.add(newEl)\n";
740
                "        self.$effectiveColName.add(newEl)\n";
734 741
      }
735 742
    }
736 743

  
......
744 751
      $i += 1;
745 752
      $colDef = $this->referrers[$colName];
746 753
      $elReferenceBack = $this->tableName . '_id';
747
      $def .= "      $ifStmt cName == '$colName':\n".
754
      $effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
755
      $def .= "      $ifStmt cName == '$effectiveColName':\n".
748 756
              "        newEl = $colDef().retrieveOrNew(child)\n".
749 757
              "        newEl.$elReferenceBack = self\n".
750 758
              "        newEl.importVegX(child,info)\n";
......
788 796
  }
789 797

  
790 798
  public function makeExportFunction() {
799
    global $tableRenames;
800

  
791 801
    #Slightly different if there are no members
792 802
    if(count($this->references) == 0 &&
793 803
       count($this->members) == 0 &&
......
864 874
      if(preg_match("/(ForeignKey\(')([a-zA-Z]*)/",$colDef,$matches) > 0 &&
865 875
         (preg_match("/Complex one2Many/",$colDef) > 0 || preg_match("/_extend/",$colName) > 0) &&
866 876
         preg_match("/_id/",$colName) == 0) {
877
        $effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
867 878
        if(preg_match("/_extend/",$colName) == 0) {
868
          $def .= "    if self.$colName != None:\n".
869
                  "      newEl = doc.createElement('$colName')\n".
870
                  "      myNode.appendChild(self.$colName.exportVegX(newEl,doc))\n\n";
879
          $def .= "    if self.$effectiveColName != None:\n".
880
                  "      newEl = doc.createElement('$effectiveColName')\n".
881
                  "      myNode.appendChild(self.$effectiveColName.exportVegX(newEl,doc))\n\n";
871 882
        } else {
872 883
          $def .= "    if self.$colName != None:\n".
873 884
                  "      myNode = self.$colName.exportVegX(myNode,doc)\n\n";
874 885
        }
875 886
      }
876 887
      if(preg_match("/(ManyToManyField\(')([a-zA-Z]*)/",$colDef,$matches) > 0) {
888
        $effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
877 889
        $def .= "    for childRef in self.$colName.all():\n".
878
                "      newEl = doc.createElement('$colName')\n".
890
                "      newEl = doc.createElement('$effectiveColName')\n".
879 891
                "      myNode.appendChild(childRef.exportVegX(newEl,doc))\n\n";
880 892
      }
881 893
    }
......
893 905
          $nodeNameToUse = $this->tableName . '_any_nodes';
894 906
        }
895 907
        $relatedName = $nodeNameToUse . '_' . $this->tableName . '_id';
908
        $effectiveNodeName = $nodeName;
909
        if($tableRenames[$nodeName] != null) {
910
          $effectiveNodeName = $tableRenames[$nodeName];
911
        }
896 912
        $def .= "    for childRef in self.$relatedName.all():\n".
897
                "      newEl = doc.createElement('$nodeName')\n".
913
                "      newEl = doc.createElement('$effectiveNodeName')\n".
898 914
                "      myNode.appendChild(childRef.exportVegX(newEl,doc))\n\n";
899 915
      }
900 916
    }
......
904 920
  }
905 921

  
906 922
  public function makeExportDummyDataFunction() {
923
    global $tableRenames;
907 924
    #Slightly different if there are no members
908 925
    if(count($this->references) == 0 &&
909 926
       count($this->members) == 0 &&
......
974 991
         (preg_match("/Complex one2Many/",$colDef) > 0 || preg_match("/_extend/",$colName) > 0) &&
975 992
         preg_match("/_id/",$colName) == 0) {
976 993
        if(preg_match("/_extend/",$colName) == 0) {
994
          $effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
977 995
          $def .= "    if '$matches[2]' not in usedObjectsStack:\n".
978 996
                  "      usedObjectsStack.append('$matches[2]')\n".
979
                  "      newEl = doc.createElement('$colName')\n".
997
                  "      newEl = doc.createElement('$effectiveColName')\n".
980 998
                  "      newElObj = $matches[2]()\n".
981 999
                  "      myNode.appendChild(newElObj.exportDummyVegX(newEl,doc,usedObjectsStack))\n".
982 1000
                  "      usedObjectsStack.pop()\n\n";
......
989 1007
        }
990 1008
      }
991 1009
      if(preg_match("/(ManyToManyField\(')([a-zA-Z]*)/",$colDef,$matches) > 0) {
1010
        $effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
992 1011
        $def .= "    if '$matches[2]' not in usedObjectsStack:\n".
993 1012
                "      usedObjectsStack.append('$matches[2]')\n".
994
                "      newEl = doc.createElement('$colName')\n".
1013
                "      newEl = doc.createElement('$effectiveColName')\n".
995 1014
                "      newElObj = $matches[2]()\n".
996 1015
                "      myNode.appendChild(newElObj.exportDummyVegX(newEl,doc,usedObjectsStack))\n".
997 1016
                "      usedObjectsStack.pop()\n\n";
......
1008 1027
                "      myNode.setAttributeNode(childRef.exportDummyVegX(newEl,doc,usedObjectsStack))\n".
1009 1028
                "      usedObjectsStack.pop()\n\n";
1010 1029
      } else {
1030
        $effectiveNodeName = $tableRenames[$nodeName] == null ? $nodeName : $tableRenames[$nodeName];
1011 1031
        $def .= "    if '$colDef' not in usedObjectsStack:\n".
1012 1032
                "      usedObjectsStack.append('$colDef')\n\n".
1013
                "      newEl = doc.createElement('$nodeName')\n".
1033
                "      newEl = doc.createElement('$effectiveNodeName')\n".
1014 1034
                "      childRef = $colDef()\n".
1015 1035
                "      myNode.appendChild(childRef.exportDummyVegX(newEl,doc,usedObjectsStack))\n".
1016 1036
                "      usedObjectsStack.pop()\n\n";

Also available in: Unified diff