Permalink
Browse files

initial import of the project

  • Loading branch information...
1 parent 0acc54f commit a867b6db2f0d6a23db1c156f7c183018cf878ba1 @johmue johmue committed Aug 3, 2010
Showing with 3,781 additions and 0 deletions.
  1. +21 −0 LICENSE
  2. BIN example/data/test.mwb
  3. +72 −0 example/index.php
  4. +86 −0 lib/MwbExporter/Core/DatatypeConverter.php
  5. +41 −0 lib/MwbExporter/Core/IFormatter.php
  6. +47 −0 lib/MwbExporter/Core/Model/Catalog.php
  7. +87 −0 lib/MwbExporter/Core/Model/Column.php
  8. +49 −0 lib/MwbExporter/Core/Model/Columns.php
  9. +80 −0 lib/MwbExporter/Core/Model/ForeignKey.php
  10. +45 −0 lib/MwbExporter/Core/Model/ForeignKeys.php
  11. +74 −0 lib/MwbExporter/Core/Model/Index.php
  12. +45 −0 lib/MwbExporter/Core/Model/Indices.php
  13. +52 −0 lib/MwbExporter/Core/Model/Schema.php
  14. +49 −0 lib/MwbExporter/Core/Model/Schemas.php
  15. +112 −0 lib/MwbExporter/Core/Model/Table.php
  16. +69 −0 lib/MwbExporter/Core/Model/Tables.php
  17. +74 −0 lib/MwbExporter/Core/Model/View.php
  18. +51 −0 lib/MwbExporter/Core/Model/Views.php
  19. +39 −0 lib/MwbExporter/Core/Registry.php
  20. +66 −0 lib/MwbExporter/Core/Workbench/Document.php
  21. +52 −0 lib/MwbExporter/Core/Workbench/Physical/Model.php
  22. +59 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/DatatypeConverter.php
  23. +84 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Loader.php
  24. +37 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Model/Catalog.php
  25. +70 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Model/Column.php
  26. +44 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Model/Columns.php
  27. +56 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Model/ForeignKey.php
  28. +32 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Model/ForeignKeys.php
  29. +45 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Model/Index.php
  30. +32 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Model/Indices.php
  31. +41 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Model/Schema.php
  32. +43 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Model/Schemas.php
  33. +71 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Model/Table.php
  34. +43 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Model/Tables.php
  35. +42 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Model/View.php
  36. +43 −0 lib/MwbExporter/Formatter/Doctrine1/Yaml/Model/Views.php
  37. +79 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/DatatypeConverter.php
  38. +84 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Loader.php
  39. +37 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Model/Catalog.php
  40. +117 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Model/Column.php
  41. +49 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Model/Columns.php
  42. +56 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Model/ForeignKey.php
  43. +32 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Model/ForeignKeys.php
  44. +45 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Model/Index.php
  45. +32 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Model/Indices.php
  46. +41 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Model/Schema.php
  47. +43 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Model/Schemas.php
  48. +66 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Model/Table.php
  49. +43 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Model/Tables.php
  50. +42 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Model/View.php
  51. +43 −0 lib/MwbExporter/Formatter/Doctrine2/Annotation/Model/Views.php
  52. +59 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/DatatypeConverter.php
  53. +84 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Loader.php
  54. +37 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Model/Catalog.php
  55. +70 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Model/Column.php
  56. +44 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Model/Columns.php
  57. +56 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Model/ForeignKey.php
  58. +32 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Model/ForeignKeys.php
  59. +45 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Model/Index.php
  60. +32 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Model/Indices.php
  61. +41 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Model/Schema.php
  62. +43 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Model/Schemas.php
  63. +73 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Model/Table.php
  64. +43 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Model/Tables.php
  65. +42 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Model/View.php
  66. +43 −0 lib/MwbExporter/Formatter/Doctrine2/Yaml/Model/Views.php
  67. +41 −0 lib/MwbExporter/Helper/Mwb.php
  68. +79 −0 lib/MwbExporter/Helper/Pluralizer.php
  69. +85 −0 lib/MwbExporter/Helper/Singularizer.php
  70. +70 −0 lib/MwbExporter/Helper/SpecialWordList.php
View
21 LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2010 Johannes Mueller <circus2(at)web.de>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
View
Binary file not shown.
View
@@ -0,0 +1,72 @@
+<?php
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2010 Johannes Mueller <circus2(at)web.de>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+// show errors
+error_reporting(E_ALL);
+
+// lets stop the time
+$start = microtime(true);
+
+
+// enable autoloading of classes
+function mySimpleAutoloadFunction($className){
+ require_once dirname(__FILE__)
+ . DIRECTORY_SEPARATOR
+ . '..'
+ . DIRECTORY_SEPARATOR
+ . 'lib'
+ . DIRECTORY_SEPARATOR
+ . str_replace('_', DIRECTORY_SEPARATOR, $className )
+ . '.php';
+}
+spl_autoload_register('mySimpleAutoloadFunction');
+
+
+// show a simple text box with the output
+echo '<textarea cols="100" rows="50">';
+
+ // create a formatter
+ $formatter = new MwbExporter_Formatter_Doctrine1_Yaml_Loader();
+
+ // alternative formatter example
+ //$formatter = new MwbExporter_Formatter_Doctrine2_Annotation_Loader();
+ //$formatter = new MwbExporter_Formatter_Doctrine2_Yaml_Loader();
+
+ // parse the mwb file
+ $mwb = new MwbExporter_Core_Workbench_Document('data/test.mwb', $formatter);
+
+ // show the export output of the mwb file
+ echo $mwb->display();
+
+echo "</textarea>";
+
+// show some information about used memory
+echo "<br><br>";
+echo (memory_get_peak_usage(true) / 1024 / 1024) . " MB used";
+echo "<br>";
+
+// show the time needed to parse the mwb file
+$end = microtime(true);
+echo sprintf('%0.3f', $end-$start) . " sec needed";
@@ -0,0 +1,86 @@
+<?php
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2010 Johannes Mueller <circus2(at)web.de>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+abstract class MwbExporter_Core_DatatypeConverter
+{
+ protected static $datatypes = array(
+ // simple datatypes
+ 'com.mysql.rdbms.mysql.datatype.tinyint' => 'integer(1)',
+ 'com.mysql.rdbms.mysql.datatype.smallint' => 'integer(2)',
+ 'com.mysql.rdbms.mysql.datatype.mediumint' => 'integer(3)',
+ 'com.mysql.rdbms.mysql.datatype.int' => 'integer(4)',
+ 'com.mysql.rdbms.mysql.datatype.bigint' => 'integer(8)',
+ 'com.mysql.rdbms.mysql.datatype.float' => 'float',
+ 'com.mysql.rdbms.mysql.datatype.double' => 'double',
+ 'com.mysql.rdbms.mysql.datatype.decimal' => 'decimal',
+ 'com.mysql.rdbms.mysql.datatype.char' => 'char',
+ 'com.mysql.rdbms.mysql.datatype.varchar' => 'string',
+ 'com.mysql.rdbms.mysql.datatype.binary' => 'binary',
+ 'com.mysql.rdbms.mysql.datatype.varbinary' => 'varbinary',
+ 'com.mysql.rdbms.mysql.datatype.tinytext' => 'clob(255)',
+ 'com.mysql.rdbms.mysql.datatype.text' => 'clob(65535)',
+ 'com.mysql.rdbms.mysql.datatype.mediumtext' => 'clob(16777215)',
+ 'com.mysql.rdbms.mysql.datatype.longtext' => 'clob',
+ 'com.mysql.rdbms.mysql.datatype.tinyblob' => 'blob(255)',
+ 'com.mysql.rdbms.mysql.datatype.blob' => 'blob(65535)',
+ 'com.mysql.rdbms.mysql.datatype.mediumblob' => 'blob(16777215)',
+ 'com.mysql.rdbms.mysql.datatype.longblob' => 'blob',
+ 'com.mysql.rdbms.mysql.datatype.datetime' => 'timestamp',
+ 'com.mysql.rdbms.mysql.datatype.date' => 'date',
+ 'com.mysql.rdbms.mysql.datatype.time' => 'time',
+ 'com.mysql.rdbms.mysql.datatype.year' => 'integer(2)',
+ 'com.mysql.rdbms.mysql.datatype.timestamp' => 'timestamp',
+ 'com.mysql.rdbms.mysql.datatype.geometry' => 'geometry',
+ 'com.mysql.rdbms.mysql.datatype.linestring' => 'linestring',
+ 'com.mysql.rdbms.mysql.datatype.polygon' => 'polygon',
+ 'com.mysql.rdbms.mysql.datatype.multipoint' => 'multipoint',
+ 'com.mysql.rdbms.mysql.datatype.multilinestring' => 'multilinestring',
+ 'com.mysql.rdbms.mysql.datatype.multipolygon' => 'multipolygon',
+ 'com.mysql.rdbms.mysql.datatype.geometrycollection' => 'geometrycollection',
+ 'com.mysql.rdbms.mysql.datatype.bit' => 'bit',
+ 'com.mysql.rdbms.mysql.datatype.enum' => 'enum',
+ 'com.mysql.rdbms.mysql.datatype.set' => 'set',
+
+ // userdazatypes
+ 'com.mysql.rdbms.mysql.userdatatype.boolean' => 'boolean',
+ 'com.mysql.rdbms.mysql.userdatatype.bool' => 'boolean',
+ 'com.mysql.rdbms.mysql.userdatatype.fixed' => 'decimal',
+ 'com.mysql.rdbms.mysql.userdatatype.float4' => 'float',
+ 'com.mysql.rdbms.mysql.userdatatype.float8' => 'double',
+ 'com.mysql.rdbms.mysql.userdatatype.int1' => 'integer(1)',
+ 'com.mysql.rdbms.mysql.userdatatype.int2' => 'integer(2)',
+ 'com.mysql.rdbms.mysql.userdatatype.int3' => 'integer(3)',
+ 'com.mysql.rdbms.mysql.userdatatype.int4' => 'integer(4)',
+ 'com.mysql.rdbms.mysql.userdatatype.int8' => 'integer(8)',
+ 'com.mysql.rdbms.mysql.userdatatype.integer' => 'integer(4)',
+ 'com.mysql.rdbms.mysql.userdatatype.longvarbinary' => 'blob(16777215)',
+ 'com.mysql.rdbms.mysql.userdatatype.longvarchar' => 'clob(16777215)',
+ 'com.mysql.rdbms.mysql.userdatatype.long' => 'clob(16777215)',
+ 'com.mysql.rdbms.mysql.userdatatype.middleint' => 'integer(3)',
+ 'com.mysql.rdbms.mysql.userdatatype.numeric' => 'decimal',
+ 'com.mysql.rdbms.mysql.userdatatype.dec' => 'decimal',
+ 'com.mysql.rdbms.mysql.userdatatype.character' => 'char'
+ );
+}
@@ -0,0 +1,41 @@
+<?php
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2010 Johannes Mueller <circus2(at)web.de>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+interface MwbExporter_Core_IFormatter {
+ public function createCatalog($parameter);
+ public function createColumn($parameter);
+ public function createColumns($parameter);
+ public function createForeignKey($parameter);
+ public function createForeignKeys($parameter);
+ public function createIndex($parameter);
+ public function createIndices($parameter);
+ public function createSchema($parameter);
+ public function createSchemas($parameter);
+ public function createTable($parameter);
+ public function createTables($parameter);
+ public function createView($parameter);
+ public function createViews($parameter);
+ public function useDatatypeConverter($type, MwbExporter_Core_Model_Column $column);
+}
@@ -0,0 +1,47 @@
+<?php
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2010 Johannes Mueller <circus2(at)web.de>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+abstract class MwbExporter_Core_Model_Catalog
+{
+ protected $data = null;
+ protected $attributes = null;
+
+ protected $id = null;
+
+ protected $schemas = null;
+
+ public function __construct($data)
+ {
+ $this->attributes = $data->attributes();
+ $this->data = $data;
+
+ $this->id = (string) $this->attributes['id'];
+
+ $tmp = $this->data->xpath("value[@key='schemata']");
+ $this->schemas = MwbExporter_Core_Registry::get('formatter')->createSchemas($tmp[0]);
+
+ MwbExporter_Core_Registry::set($this->id, $this);
+ }
+}
@@ -0,0 +1,87 @@
+<?php
+/*
+ * The MIT License
+ *
+ * Copyright (c) 2010 Johannes Mueller <circus2(at)web.de>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+abstract class MwbExporter_Core_Model_Column
+{
+ protected $data = null;
+ protected $attributes = null;
+
+ protected $id = null;
+
+ protected $config = array();
+ protected $link = array();
+ protected $isPrimary = false;
+
+ public function __construct($data)
+ {
+ $this->attributes = $data->attributes();
+ $this->data = $data;
+
+ $this->id = (string) $this->attributes['id'];
+
+ /**
+ * iterate on column configuration
+ */
+ foreach($this->data->xpath("value") as $key => $node){
+ $attributes = $node->attributes(); // read attributes
+
+ $key = (string) $attributes['key']; // assign key
+ $this->config[$key] = (string) $node[0]; // assign value
+ }
+
+ /**
+ * iterate on links to other wb objects
+ */
+ foreach($this->data->xpath("link") as $key => $node){
+ $attributes = $node->attributes();
+
+ $key = (string) $attributes['key'];
+ $this->link[$key] = (string) $node[0];
+ }
+
+ MwbExporter_Core_Registry::set($this->id, $this);
+ }
+
+ public function getConfig()
+ {
+ return $this->config;
+ }
+
+ public function getData()
+ {
+ return $this->data;
+ }
+
+ public function markAsPrimary()
+ {
+ $this->isPrimary = true;
+ }
+
+ public function getColumnName()
+ {
+ return $this->config['name'];
+ }
+
+}
Oops, something went wrong.

0 comments on commit a867b6d

Please sign in to comment.