1 |
3
|
wheeler
|
<?php
|
2 |
|
|
require_once('objects/types.php');
|
3 |
|
|
require_once('objects/Entity.php');
|
4 |
|
|
require_once('objects/EntityList.php');
|
5 |
|
|
require_once('util/utilityFunctions.php');
|
6 |
|
|
|
7 |
|
|
$files = array(
|
8 |
|
|
'eml-access.xsd',
|
9 |
|
|
'eml-coverage.xsd',
|
10 |
|
|
'eml-documentation.xsd',
|
11 |
|
|
'eml-literature.xsd',
|
12 |
|
|
'eml-party.xsd',
|
13 |
|
|
'eml-project.xsd',
|
14 |
|
|
'eml-resource.xsd',
|
15 |
|
|
'eml-text.xsd',
|
16 |
|
|
'tcsv101.xsd',
|
17 |
|
|
'tdwg_basetypes.xsd',
|
18 |
|
|
# 'tdwg_dw_element.xsd',
|
19 |
|
|
'tdwg_dw_geospatial.xsd',
|
20 |
|
|
'veg-misc.xsd',
|
21 |
|
|
'veg-organismobservation.xsd',
|
22 |
|
|
'veg-plotobservation.xsd',
|
23 |
|
|
'veg.xsd',
|
24 |
|
|
'veg-plot.xsd');
|
25 |
|
|
|
26 |
|
|
|
27 |
|
|
$eList = new EntityList();
|
28 |
|
|
foreach($files as $file) {
|
29 |
|
|
global $eList;
|
30 |
|
|
|
31 |
|
|
$xmlDoc = new DOMDocument();
|
32 |
|
|
$xmlDoc->load($file);
|
33 |
|
|
$xpath = new DOMXPath($xmlDoc);
|
34 |
|
|
$nodes = $xpath->query("child::node()",$xmlDoc->documentElement);
|
35 |
|
|
foreach($nodes as $node) {
|
36 |
|
|
$nodeName = preg_replace("/.*:/","",$node->nodeName);
|
37 |
|
|
if(isIgnoreType($nodeName) || isPrimitiveType($node->getAttribute('name'))) {
|
38 |
|
|
continue;
|
39 |
|
|
}
|
40 |
|
|
switch($nodeName) {
|
41 |
|
|
case 'group':
|
42 |
|
|
if(!hasImportantNodes($node)) {
|
43 |
|
|
die("Group nodes currently must define an entity. Group node in file: $file does not. Exiting.\n");
|
44 |
|
|
}
|
45 |
|
|
case 'simpleType':
|
46 |
|
|
case 'complexType':
|
47 |
|
|
$e = $eList->newEntity($node->getAttribute('name'),$node);
|
48 |
|
|
break;
|
49 |
|
|
case 'element':
|
50 |
|
|
$eName = preg_replace("/\..*$/","",$file);
|
51 |
|
|
$eName = preg_replace("/-/","_",$eName);
|
52 |
|
|
$eParent = $eList->getEntityForReference($eName);
|
53 |
|
|
|
54 |
|
|
$eParent->handleElementCase($node);
|
55 |
|
|
break;
|
56 |
|
|
default:
|
57 |
|
|
die("Unsupported node type: $nodeName found in file: $file.\n");
|
58 |
|
|
}
|
59 |
|
|
}
|
60 |
|
|
}
|
61 |
|
|
|
62 |
|
|
$entities = $eList->getEntities();
|
63 |
|
|
print "#There are " . count($entities) . " defined entities.\n";
|
64 |
|
|
print "import string\n";
|
65 |
|
|
print "import xml.dom.minidom\n";
|
66 |
|
|
print "from random import choice\n";
|
67 |
6
|
wheeler
|
print "from django.contrib.gis.geos import *\n";
|
68 |
|
|
print "from django.contrib.gis.db import models\n\n";
|
69 |
3
|
wheeler
|
print "def getRandom(length=8, chars=string.letters + string.digits):\n".
|
70 |
|
|
" return ''.join([choice(chars) for i in range(length)])\n\n".
|
71 |
|
|
"def getRandomString():\n".
|
72 |
|
|
" return getRandom(45)\n\n".
|
73 |
|
|
"def getRandomText():\n".
|
74 |
|
|
" return getRandom(450)\n\n".
|
75 |
|
|
"def getRandomInt():\n".
|
76 |
|
|
" return int(getRandom(4,string.digits))\n\n".
|
77 |
|
|
"def getRandomFloat():\n".
|
78 |
|
|
" return float(getRandom(4,string.digits))\n\n".
|
79 |
|
|
"def getRandomBool():\n".
|
80 |
|
|
" return choice(['true','false'])\n\n".
|
81 |
|
|
"#Not actually random, but not worth the time\n".
|
82 |
|
|
"def getRandomDate():\n".
|
83 |
|
|
" return '2007-07-16'\n\n".
|
84 |
|
|
"def getRandomTime():\n".
|
85 |
6
|
wheeler
|
" return '08:30:00'\n\n".
|
86 |
|
|
"class EntryInfo(models.Model):\n".
|
87 |
|
|
" creationDate = models.DateTimeField(auto_now_add=True)\n".
|
88 |
|
|
" lastUpdatedDate = models.DateTimeField(auto_now=True)\n".
|
89 |
|
|
" dataSource = models.CharField(max_length=255, db_index=True)\n\n";
|
90 |
3
|
wheeler
|
|
91 |
|
|
$eList->printAll();
|
92 |
|
|
|
93 |
|
|
?>
|