From e949b98e2928201b71669d37260abf8b19666eed Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Wed, 23 Jan 2013 18:57:03 +0100 Subject: [PATCH 01/18] Testing branch, currently in full development. --- .gitignore | 0 .travis.yml | 8 + README.md | 4 + agpl-3.0.txt | 0 composer.json | 0 lib/gcp/lang-apollo.js | 0 lib/gcp/lang-clj.js | 0 lib/gcp/lang-css.js | 0 lib/gcp/lang-go.js | 0 lib/gcp/lang-hs.js | 0 lib/gcp/lang-lisp.js | 0 lib/gcp/lang-lua.js | 0 lib/gcp/lang-ml.js | 0 lib/gcp/lang-n.js | 0 lib/gcp/lang-proto.js | 0 lib/gcp/lang-scala.js | 0 lib/gcp/lang-sql.js | 0 lib/gcp/lang-tex.js | 0 lib/gcp/lang-vb.js | 0 lib/gcp/lang-vhdl.js | 0 lib/gcp/lang-wiki.js | 0 lib/gcp/lang-xq.js | 0 lib/gcp/lang-yaml.js | 0 lib/gcp/prettify.css | 0 lib/gcp/prettify.js | 0 lib/parse_engine.php | 0 src/tdt/core/controllers/AController.php | 0 src/tdt/core/controllers/CUDController.php | 0 src/tdt/core/controllers/RController.php | 0 src/tdt/core/controllers/README.md | 0 .../core/controllers/RedirectController.php | 0 .../core/controllers/SPECTQLController.php | 0 src/tdt/core/controllers/SQL/README.md | 0 .../core/controllers/SQL/READMEgrammar.txt | 0 .../controllers/SQL/SQLGrammarFunctions.php | 0 src/tdt/core/controllers/spectql/README.md | 0 .../controllers/spectql/SPECTQLParser.php | 0 .../controllers/spectql/SPECTQLResource.php | 0 .../controllers/spectql/SPECTQLTokenizer.php | 0 .../core/controllers/spectql/SPECTQLTools.php | 0 .../core/controllers/spectql/spectql.class | 0 src/tdt/core/controllers/spectql/spectql.lime | 0 src/tdt/core/controllers/spectql/spectql.php | 0 src/tdt/core/formatters/AFormatter.php | 0 src/tdt/core/formatters/CsvFormatter.php | 0 src/tdt/core/formatters/FormatterFactory.php | 0 src/tdt/core/formatters/HtmlFormatter.php | 0 .../core/formatters/HtmltableFormatter.php | 0 src/tdt/core/formatters/JsonFormatter.php | 0 src/tdt/core/formatters/JsonpFormatter.php | 0 src/tdt/core/formatters/KmlFormatter.php | 0 src/tdt/core/formatters/N3Formatter.php | 0 src/tdt/core/formatters/NtFormatter.php | 0 src/tdt/core/formatters/PhpFormatter.php | 0 src/tdt/core/formatters/README.md | 0 src/tdt/core/formatters/RdfFormatter.php | 0 src/tdt/core/formatters/RhtmlFormatter.php | 0 src/tdt/core/formatters/RjsonFormatter.php | 0 src/tdt/core/formatters/TtlFormatter.php | 0 src/tdt/core/formatters/XmlFormatter.php | 0 .../visualizations/BarFormatter.php | 0 .../visualizations/ChartdataFormatter.php | 0 .../visualizations/ColumnFormatter.php | 0 .../visualizations/GridFormatter.php | 0 .../visualizations/MapFormatter.php | 0 .../visualizations/PieFormatter.php | 0 .../core/formatters/visualizations/README.md | 0 src/tdt/core/model/AResourceFactory.php | 0 src/tdt/core/model/CoreResourceFactory.php | 0 src/tdt/core/model/DBQueries.php | 0 src/tdt/core/model/Doc.php | 0 src/tdt/core/model/GenericResourceFactory.php | 0 .../core/model/InstalledResourceFactory.php | 0 src/tdt/core/model/README.md | 0 src/tdt/core/model/RemoteResourceFactory.php | 0 src/tdt/core/model/ResourcesModel.php | 0 src/tdt/core/model/filters/AFilter.php | 0 src/tdt/core/model/filters/FilterFactory.php | 0 src/tdt/core/model/filters/RESTFilter.php | 0 src/tdt/core/model/filters/SearchFilter.php | 0 src/tdt/core/model/packages/README.md | 0 .../packages/TDTAdmin/TDTAdminExport.php | 0 .../packages/TDTAdmin/TDTAdminResources.php | 0 .../model/packages/TDTInfo/TDTInfoAdmin.php | 0 .../packages/TDTInfo/TDTInfoExceptions.php | 0 .../packages/TDTInfo/TDTInfoFormatters.php | 0 .../packages/TDTInfo/TDTInfoPackages.php | 0 .../packages/TDTInfo/TDTInfoResources.php | 0 .../TDTInfo/TDTInfoVisualizations.php | 0 src/tdt/core/model/resources/AResource.php | 0 .../model/resources/AResourceStrategy.php | 0 .../core/model/resources/GenericResource.php | 0 src/tdt/core/model/resources/README.md | 0 .../core/model/resources/create/ACreator.php | 0 .../create/GenericResourceCreator.php | 0 .../create/InstalledResourceCreator.php | 0 .../create/RemoteResourceCreator.php | 0 .../core/model/resources/delete/ADeleter.php | 0 .../delete/GenericResourceDeleter.php | 0 .../delete/InstalledResourceDeleter.php | 0 .../delete/RemoteResourceDeleter.php | 0 src/tdt/core/model/resources/read/AReader.php | 0 .../resources/read/GenericResourceReader.php | 0 src/tdt/core/model/resources/read/IFilter.php | 0 .../resources/read/RemoteResourceReader.php | 0 .../core/model/resources/update/AUpdater.php | 0 .../update/GenericResourceUpdater.php | 0 .../model/semantics/OntologyProcessor.php | 0 src/tdt/core/model/semantics/RDFOutput.php | 0 src/tdt/core/model/semantics/README.md | 0 .../model/semantics/rdfapi-php/api/RdfAPI.php | 0 .../semantics/rdfapi-php/api/constants.php | 0 .../rdfapi-php/api/dataset/Dataset.php | 0 .../rdfapi-php/api/dataset/DatasetDb.php | 0 .../rdfapi-php/api/dataset/DatasetMem.php | 0 .../rdfapi-php/api/dataset/DatasetP.php | 0 .../api/dataset/IteratorAllGraphsDb.php | 0 .../api/dataset/IteratorAllGraphsMem.php | 0 .../api/dataset/IteratorFindQuadsDb.php | 0 .../api/dataset/IteratorFindQuadsMem.php | 0 .../rdfapi-php/api/dataset/NamedGraphDb.php | 0 .../rdfapi-php/api/dataset/NamedGraphMem.php | 0 .../semantics/rdfapi-php/api/dataset/Quad.php | 0 .../rdfapi-php/api/infModel/InfModel.php | 0 .../rdfapi-php/api/infModel/InfModelB.php | 0 .../rdfapi-php/api/infModel/InfModelF.php | 0 .../rdfapi-php/api/infModel/InfModelP.php | 0 .../rdfapi-php/api/infModel/InfRule.php | 0 .../rdfapi-php/api/infModel/InfStatement.php | 0 .../rdfapi-php/api/model/Blanknode.php | 0 .../semantics/rdfapi-php/api/model/DBase.php | 0 .../rdfapi-php/api/model/DbModel.php | 0 .../rdfapi-php/api/model/DbStore.php | 0 .../rdfapi-php/api/model/Literal.php | 0 .../rdfapi-php/api/model/MemModel.php | 0 .../semantics/rdfapi-php/api/model/Model.php | 0 .../rdfapi-php/api/model/ModelFactory.php | 0 .../semantics/rdfapi-php/api/model/ModelP.php | 0 .../semantics/rdfapi-php/api/model/Node.php | 0 .../rdfapi-php/api/model/RbModel.php | 0 .../rdfapi-php/api/model/RbModelFactory.php | 0 .../rdfapi-php/api/model/RbStore.php | 0 .../rdfapi-php/api/model/Resource.php | 0 .../rdfapi-php/api/model/Statement.php | 0 .../rdfapi-php/api/ontModel/Individual.php | 0 .../rdfapi-php/api/ontModel/OWLVocabulary.php | 0 .../rdfapi-php/api/ontModel/OntClass.php | 0 .../rdfapi-php/api/ontModel/OntModel.php | 0 .../rdfapi-php/api/ontModel/OntModelP.php | 0 .../rdfapi-php/api/ontModel/OntProperty.php | 0 .../rdfapi-php/api/ontModel/OntResource.php | 0 .../rdfapi-php/api/ontModel/OntVocabulary.php | 0 .../api/ontModel/RdfsVocabulary.php | 0 .../semantics/rdfapi-php/api/rdql/RDQL.php | 0 .../rdfapi-php/api/rdql/RdqlDbEngine.php | 0 .../rdfapi-php/api/rdql/RdqlEngine.php | 0 .../rdfapi-php/api/rdql/RdqlMemEngine.php | 0 .../rdfapi-php/api/rdql/RdqlParser.php | 0 .../api/rdql/RdqlResultIterator.php | 0 .../rdfapi-php/api/resModel/ResAlt.php | 0 .../rdfapi-php/api/resModel/ResBag.php | 0 .../rdfapi-php/api/resModel/ResContainer.php | 0 .../rdfapi-php/api/resModel/ResIterator.php | 0 .../rdfapi-php/api/resModel/ResList.php | 0 .../rdfapi-php/api/resModel/ResLiteral.php | 0 .../rdfapi-php/api/resModel/ResModel.php | 0 .../rdfapi-php/api/resModel/ResModelP.php | 0 .../rdfapi-php/api/resModel/ResProperty.php | 0 .../rdfapi-php/api/resModel/ResResource.php | 0 .../rdfapi-php/api/resModel/ResSeq.php | 0 .../rdfapi-php/api/sparql/ClientQuery.php | 0 .../rdfapi-php/api/sparql/Constraint.php | 0 .../rdfapi-php/api/sparql/FilterFunctions.php | 0 .../rdfapi-php/api/sparql/GraphPattern.php | 0 .../semantics/rdfapi-php/api/sparql/Query.php | 0 .../rdfapi-php/api/sparql/QueryTriple.php | 0 .../rdfapi-php/api/sparql/SPARQL.php | 0 .../rdfapi-php/api/sparql/SparqlClient.php | 0 .../rdfapi-php/api/sparql/SparqlEngine.php | 0 .../sparql/SparqlEngine/PreparedStatement.php | 0 .../sparql/SparqlEngine/ResultConverter.php | 0 .../sparql/SparqlEngine/ResultRenderer.php | 0 .../SparqlEngine/ResultRenderer/Default.php | 0 .../SparqlEngine/ResultRenderer/HTML.php | 0 .../SparqlEngine/ResultRenderer/XML.php | 0 .../rdfapi-php/api/sparql/SparqlEngineDb.php | 0 .../sparql/SparqlEngineDb/FilterGenerator.php | 0 .../api/sparql/SparqlEngineDb/Offsetter.php | 0 .../api/sparql/SparqlEngineDb/Preparator.php | 0 .../SparqlEngineDb/PreparedStatement.php | 0 .../sparql/SparqlEngineDb/QuerySimplifier.php | 0 .../sparql/SparqlEngineDb/ResultConverter.php | 0 .../sparql/SparqlEngineDb/ResultRenderer.php | 0 .../SparqlEngineDb/ResultRenderer/Default.php | 0 .../SparqlEngineDb/ResultRenderer/HTML.php | 0 .../SparqlEngineDb/ResultRenderer/JSON.php | 0 .../ResultRenderer/PlainText.php | 0 .../SparqlEngineDb/ResultRenderer/XML.php | 0 .../sparql/SparqlEngineDb/SqlGenerator.php | 0 .../SparqlEngineDb/SqlGeneratorException.php | 0 .../api/sparql/SparqlEngineDb/SqlMerger.php | 0 .../api/sparql/SparqlEngineDb/TypeSorter.php | 0 .../rdfapi-php/api/sparql/SparqlParser.php | 0 .../api/sparql/SparqlParserException.php | 0 .../rdfapi-php/api/sparql/SparqlVariable.php | 0 .../rdfapi-php/api/syntax/GRDDLParser.php | 0 .../rdfapi-php/api/syntax/JsonParser.php | 0 .../rdfapi-php/api/syntax/JsonSerializer.php | 0 .../rdfapi-php/api/syntax/N3Parser.php | 0 .../rdfapi-php/api/syntax/N3Serializer.php | 0 .../api/syntax/NTripleSerializer.php | 0 .../rdfapi-php/api/syntax/RdfParser.php | 0 .../rdfapi-php/api/syntax/RdfSerializer.php | 0 .../rdfapi-php/api/syntax/RssParser.php | 0 .../api/syntax/SparqlResultParser.php | 0 .../rdfapi-php/api/syntax/SyntaxGRDDL.php | 0 .../rdfapi-php/api/syntax/SyntaxJSON.php | 0 .../rdfapi-php/api/syntax/SyntaxN3.php | 0 .../rdfapi-php/api/syntax/SyntaxRDF.php | 0 .../rdfapi-php/api/syntax/SyntaxRSS.php | 0 .../rdfapi-php/api/syntax/SyntaxSparqlRes.php | 0 .../rdfapi-php/api/syntax/TriXParser.php | 0 .../rdfapi-php/api/syntax/TriXSerializer.php | 0 .../rdfapi-php/api/util/FindIterator.php | 0 .../rdfapi-php/api/util/IterFind.php | 0 .../rdfapi-php/api/util/ModelComparator.php | 0 .../semantics/rdfapi-php/api/util/Object.php | 0 .../semantics/rdfapi-php/api/util/RdfUtil.php | 0 .../rdfapi-php/api/util/StatementIterator.php | 0 .../semantics/rdfapi-php/api/util/Utility.php | 0 .../util/adodb/adodb-active-record.inc.php | 0 .../api/util/adodb/adodb-csvlib.inc.php | 0 .../api/util/adodb/adodb-datadict.inc.php | 0 .../api/util/adodb/adodb-error.inc.php | 0 .../api/util/adodb/adodb-errorhandler.inc.php | 0 .../api/util/adodb/adodb-errorpear.inc.php | 0 .../api/util/adodb/adodb-exceptions.inc.php | 0 .../api/util/adodb/adodb-iterator.inc.php | 0 .../api/util/adodb/adodb-lib.inc.php | 0 .../api/util/adodb/adodb-memcache.lib.inc.php | 0 .../api/util/adodb/adodb-pager.inc.php | 0 .../api/util/adodb/adodb-pear.inc.php | 0 .../api/util/adodb/adodb-perf.inc.php | 0 .../api/util/adodb/adodb-php4.inc.php | 0 .../api/util/adodb/adodb-time.inc.php | 0 .../rdfapi-php/api/util/adodb/adodb-time.zip | Bin .../api/util/adodb/adodb-xmlschema.inc.php | 0 .../api/util/adodb/adodb-xmlschema03.inc.php | 0 .../rdfapi-php/api/util/adodb/adodb.inc.php | 0 .../api/util/adodb/contrib/toxmlrpc.inc.php | 0 .../util/adodb/cute_icons_for_site/adodb.gif | Bin .../util/adodb/cute_icons_for_site/adodb2.gif | Bin .../adodb/datadict/datadict-access.inc.php | 0 .../util/adodb/datadict/datadict-db2.inc.php | 0 .../adodb/datadict/datadict-firebird.inc.php | 0 .../adodb/datadict/datadict-generic.inc.php | 0 .../adodb/datadict/datadict-ibase.inc.php | 0 .../adodb/datadict/datadict-informix.inc.php | 0 .../adodb/datadict/datadict-mssql.inc.php | 0 .../adodb/datadict/datadict-mysql.inc.php | 0 .../util/adodb/datadict/datadict-oci8.inc.php | 0 .../adodb/datadict/datadict-postgres.inc.php | 0 .../adodb/datadict/datadict-sapdb.inc.php | 0 .../adodb/datadict/datadict-sybase.inc.php | 0 .../util/adodb/docs/docs-active-record.htm | 0 .../api/util/adodb/docs/docs-adodb.htm | 0 .../api/util/adodb/docs/docs-datadict.htm | 0 .../api/util/adodb/docs/docs-oracle.htm | 0 .../api/util/adodb/docs/docs-perf.htm | 0 .../api/util/adodb/docs/docs-session.htm | 0 .../api/util/adodb/docs/docs-session.old.htm | 0 .../api/util/adodb/docs/old-changelog.htm | 0 .../rdfapi-php/api/util/adodb/docs/readme.htm | 0 .../api/util/adodb/docs/tips_portable_sql.htm | 0 .../rdfapi-php/api/util/adodb/docs/tute.htm | 0 .../util/adodb/drivers/adodb-access.inc.php | 0 .../api/util/adodb/drivers/adodb-ado.inc.php | 0 .../api/util/adodb/drivers/adodb-ado5.inc.php | 0 .../adodb/drivers/adodb-ado_access.inc.php | 0 .../adodb/drivers/adodb-ado_mssql.inc.php | 0 .../adodb/drivers/adodb-borland_ibase.inc.php | 0 .../api/util/adodb/drivers/adodb-csv.inc.php | 0 .../api/util/adodb/drivers/adodb-db2.inc.php | 0 .../util/adodb/drivers/adodb-fbsql.inc.php | 0 .../util/adodb/drivers/adodb-firebird.inc.php | 0 .../util/adodb/drivers/adodb-ibase.inc.php | 0 .../util/adodb/drivers/adodb-informix.inc.php | 0 .../adodb/drivers/adodb-informix72.inc.php | 0 .../api/util/adodb/drivers/adodb-ldap.inc.php | 0 .../util/adodb/drivers/adodb-mssql.inc.php | 0 .../util/adodb/drivers/adodb-mssql_n.inc.php | 0 .../util/adodb/drivers/adodb-mssqlpo.inc.php | 0 .../util/adodb/drivers/adodb-mysql.inc.php | 0 .../util/adodb/drivers/adodb-mysqli.inc.php | 0 .../util/adodb/drivers/adodb-mysqlt.inc.php | 0 .../util/adodb/drivers/adodb-netezza.inc.php | 0 .../api/util/adodb/drivers/adodb-oci8.inc.php | 0 .../util/adodb/drivers/adodb-oci805.inc.php | 0 .../util/adodb/drivers/adodb-oci8po.inc.php | 0 .../api/util/adodb/drivers/adodb-odbc.inc.php | 0 .../util/adodb/drivers/adodb-odbc_db2.inc.php | 0 .../adodb/drivers/adodb-odbc_mssql.inc.php | 0 .../adodb/drivers/adodb-odbc_oracle.inc.php | 0 .../util/adodb/drivers/adodb-odbtp.inc.php | 0 .../adodb/drivers/adodb-odbtp_unicode.inc.php | 0 .../util/adodb/drivers/adodb-oracle.inc.php | 0 .../api/util/adodb/drivers/adodb-pdo.inc.php | 0 .../adodb/drivers/adodb-pdo_mssql.inc.php | 0 .../adodb/drivers/adodb-pdo_mysql.inc.php | 0 .../util/adodb/drivers/adodb-pdo_oci.inc.php | 0 .../adodb/drivers/adodb-pdo_pgsql.inc.php | 0 .../util/adodb/drivers/adodb-postgres.inc.php | 0 .../adodb/drivers/adodb-postgres64.inc.php | 0 .../adodb/drivers/adodb-postgres7.inc.php | 0 .../adodb/drivers/adodb-postgres8.inc.php | 0 .../util/adodb/drivers/adodb-proxy.inc.php | 0 .../util/adodb/drivers/adodb-sapdb.inc.php | 0 .../adodb/drivers/adodb-sqlanywhere.inc.php | 0 .../util/adodb/drivers/adodb-sqlite.inc.php | 0 .../util/adodb/drivers/adodb-sqlitepo.inc.php | 0 .../util/adodb/drivers/adodb-sybase.inc.php | 0 .../adodb/drivers/adodb-sybase_ase.inc.php | 0 .../api/util/adodb/drivers/adodb-vfp.inc.php | 0 .../api/util/adodb/lang/adodb-ar.inc.php | 0 .../api/util/adodb/lang/adodb-bg.inc.php | 0 .../api/util/adodb/lang/adodb-bgutf8.inc.php | 0 .../api/util/adodb/lang/adodb-ca.inc.php | 0 .../api/util/adodb/lang/adodb-cn.inc.php | 0 .../api/util/adodb/lang/adodb-cz.inc.php | 0 .../api/util/adodb/lang/adodb-da.inc.php | 0 .../api/util/adodb/lang/adodb-de.inc.php | 0 .../api/util/adodb/lang/adodb-en.inc.php | 0 .../api/util/adodb/lang/adodb-es.inc.php | 0 .../util/adodb/lang/adodb-esperanto.inc.php | 0 .../api/util/adodb/lang/adodb-fr.inc.php | 0 .../api/util/adodb/lang/adodb-hu.inc.php | 0 .../api/util/adodb/lang/adodb-it.inc.php | 0 .../api/util/adodb/lang/adodb-nl.inc.php | 0 .../api/util/adodb/lang/adodb-pl.inc.php | 0 .../api/util/adodb/lang/adodb-pt-br.inc.php | 0 .../api/util/adodb/lang/adodb-ro.inc.php | 0 .../api/util/adodb/lang/adodb-ru1251.inc.php | 0 .../api/util/adodb/lang/adodb-sv.inc.php | 0 .../api/util/adodb/lang/adodb-uk1251.inc.php | 0 .../rdfapi-php/api/util/adodb/license.txt | 0 .../util/adodb/pear/Auth/Container/ADOdb.php | 0 .../api/util/adodb/pear/readme.Auth.txt | 0 .../api/util/adodb/perf/perf-db2.inc.php | 0 .../api/util/adodb/perf/perf-informix.inc.php | 0 .../api/util/adodb/perf/perf-mssql.inc.php | 0 .../api/util/adodb/perf/perf-mysql.inc.php | 0 .../api/util/adodb/perf/perf-oci8.inc.php | 0 .../api/util/adodb/perf/perf-postgres.inc.php | 0 .../api/util/adodb/pivottable.inc.php | 0 .../rdfapi-php/api/util/adodb/readme.txt | 0 .../api/util/adodb/rsfilter.inc.php | 0 .../rdfapi-php/api/util/adodb/server.php | 0 .../adodb/session/adodb-compress-bzip2.php | 0 .../adodb/session/adodb-compress-gzip.php | 0 .../util/adodb/session/adodb-cryptsession.php | 0 .../adodb/session/adodb-cryptsession2.php | 0 .../adodb/session/adodb-encrypt-mcrypt.php | 0 .../util/adodb/session/adodb-encrypt-md5.php | 0 .../adodb/session/adodb-encrypt-secret.php | 0 .../util/adodb/session/adodb-encrypt-sha1.php | 0 .../api/util/adodb/session/adodb-sess.txt | 0 .../util/adodb/session/adodb-session-clob.php | 0 .../adodb/session/adodb-session-clob2.php | 0 .../api/util/adodb/session/adodb-session.php | 0 .../api/util/adodb/session/adodb-session2.php | 0 .../adodb/session/adodb-sessions.mysql.sql | 0 .../session/adodb-sessions.oracle.clob.sql | 0 .../adodb/session/adodb-sessions.oracle.sql | 0 .../api/util/adodb/session/crypt.inc.php | 0 .../adodb/session/old/adodb-cryptsession.php | 0 .../adodb/session/old/adodb-session-clob.php | 0 .../util/adodb/session/old/adodb-session.php | 0 .../api/util/adodb/session/old/crypt.inc.php | 0 .../api/util/adodb/session/session_schema.xml | 0 .../util/adodb/session/session_schema2.xml | 0 .../api/util/adodb/tests/benchmark.php | 0 .../api/util/adodb/tests/client.php | 0 .../rdfapi-php/api/util/adodb/tests/pdo.php | 0 .../util/adodb/tests/test-active-record.php | 0 .../util/adodb/tests/test-active-recs2.php | 0 .../api/util/adodb/tests/test-datadict.php | 0 .../api/util/adodb/tests/test-perf.php | 0 .../api/util/adodb/tests/test-pgblob.php | 0 .../api/util/adodb/tests/test-php5.php | 0 .../api/util/adodb/tests/test-xmlschema.php | 0 .../rdfapi-php/api/util/adodb/tests/test.php | 0 .../rdfapi-php/api/util/adodb/tests/test2.php | 0 .../rdfapi-php/api/util/adodb/tests/test3.php | 0 .../rdfapi-php/api/util/adodb/tests/test4.php | 0 .../rdfapi-php/api/util/adodb/tests/test5.php | 0 .../api/util/adodb/tests/test_rs_array.php | 0 .../api/util/adodb/tests/testcache.php | 0 .../util/adodb/tests/testdatabases.inc.php | 0 .../api/util/adodb/tests/testgenid.php | 0 .../api/util/adodb/tests/testmssql.php | 0 .../api/util/adodb/tests/testoci8.php | 0 .../api/util/adodb/tests/testoci8cursor.php | 0 .../api/util/adodb/tests/testpaging.php | 0 .../api/util/adodb/tests/testpear.php | 0 .../api/util/adodb/tests/testsessions.php | 0 .../rdfapi-php/api/util/adodb/tests/time.php | 0 .../api/util/adodb/tests/tmssql.php | 0 .../api/util/adodb/tests/xmlschema-mssql.xml | 0 .../api/util/adodb/tests/xmlschema.xml | 0 .../api/util/adodb/toexport.inc.php | 0 .../rdfapi-php/api/util/adodb/tohtml.inc.php | 0 .../rdfapi-php/api/util/adodb/xmlschema.dtd | 0 .../rdfapi-php/api/util/adodb/xmlschema03.dtd | 0 .../api/util/adodb/xsl/convert-0.1-0.2.xsl | 0 .../api/util/adodb/xsl/convert-0.1-0.3.xsl | 0 .../api/util/adodb/xsl/convert-0.2-0.1.xsl | 0 .../api/util/adodb/xsl/convert-0.2-0.3.xsl | 0 .../api/util/adodb/xsl/remove-0.2.xsl | 0 .../api/util/adodb/xsl/remove-0.3.xsl | 0 .../rdfapi-php/api/util/magpie/AUTHORS | 0 .../rdfapi-php/api/util/magpie/CHANGES | 0 .../rdfapi-php/api/util/magpie/ChangeLog | 0 .../rdfapi-php/api/util/magpie/INSTALL | 0 .../semantics/rdfapi-php/api/util/magpie/NEWS | 0 .../rdfapi-php/api/util/magpie/README | 0 .../api/util/magpie/TROUBLESHOOTING | 0 .../rdfapi-php/api/util/magpie/cookbook | 0 .../api/util/magpie/extlib/Snoopy.class.inc | 0 .../api/util/magpie/htdocs/cookbook.html | 0 .../api/util/magpie/htdocs/index.html | 0 .../rdfapi-php/api/util/magpie/rss_cache.inc | 0 .../rdfapi-php/api/util/magpie/rss_fetch.inc | 0 .../rdfapi-php/api/util/magpie/rss_parse.inc | 0 .../rdfapi-php/api/util/magpie/rss_utils.inc | 0 .../rdfapi-php/api/util/magpie/scripts/README | 0 .../api/util/magpie/scripts/magpie_debug.php | 0 .../api/util/magpie/scripts/magpie_simple.php | 0 .../util/magpie/scripts/magpie_slashbox.php | 0 .../api/util/magpie/scripts/simple_smarty.php | 0 .../smarty_plugin/modifier.rss_date_parse.php | 0 .../magpie/scripts/templates/simple.smarty | 0 .../rdfapi-php/api/vocabulary/ATOM_C.php | 0 .../rdfapi-php/api/vocabulary/ATOM_RES.php | 0 .../rdfapi-php/api/vocabulary/DC.php | 0 .../rdfapi-php/api/vocabulary/DC_C.php | 0 .../rdfapi-php/api/vocabulary/DC_RES.php | 0 .../rdfapi-php/api/vocabulary/FOAF.php | 0 .../rdfapi-php/api/vocabulary/FOAF_C.php | 0 .../rdfapi-php/api/vocabulary/FOAF_RES.php | 0 .../rdfapi-php/api/vocabulary/GEOURL.php | 0 .../rdfapi-php/api/vocabulary/OWL.php | 0 .../rdfapi-php/api/vocabulary/OWL_C.php | 0 .../rdfapi-php/api/vocabulary/OWL_RES.php | 0 .../rdfapi-php/api/vocabulary/RDF.php | 0 .../rdfapi-php/api/vocabulary/RDFS.php | 0 .../rdfapi-php/api/vocabulary/RDFS_C.php | 0 .../rdfapi-php/api/vocabulary/RDFS_RES.php | 0 .../rdfapi-php/api/vocabulary/RDF_C.php | 0 .../rdfapi-php/api/vocabulary/RDF_RES.php | 0 .../rdfapi-php/api/vocabulary/RSS.php | 0 .../rdfapi-php/api/vocabulary/RSS_C.php | 0 .../rdfapi-php/api/vocabulary/RSS_RES.php | 0 .../rdfapi-php/api/vocabulary/VCARD.php | 0 .../rdfapi-php/api/vocabulary/VCARD_C.php | 0 .../rdfapi-php/api/vocabulary/VCARD_RES.php | 0 .../rdfapi-php/api/vocabulary/Vocabulary.php | 0 .../api/vocabulary/VocabularyClass.php | 0 .../api/vocabulary/VocabularyRes.php | 0 src/tdt/core/model/semantics/tdtml/TDTML.php | 0 .../core/model/semantics/tdtml/tdtml1.0.owl | 0 src/tdt/core/strategies/ATabularData.php | 0 src/tdt/core/strategies/CSV.php | 0 src/tdt/core/strategies/DB.php | 0 src/tdt/core/strategies/JSON.php | 0 src/tdt/core/strategies/README.md | 0 src/tdt/core/strategies/SPARQL.php | 0 .../CombinedFilterGenerators.php | 0 src/tdt/core/universalfilter/README.md | 0 .../core/universalfilter/UniversalFilters.php | 0 .../common/BigDataBlockManager.php | 0 .../core/universalfilter/common/BigList.php | 0 .../core/universalfilter/common/BigMap.php | 0 .../universalfilter/common/HashString.php | 0 src/tdt/core/universalfilter/common/README.md | 0 .../universalfilter/common/StableSorting.php | 0 .../converter/SQLConverter.php | 0 src/tdt/core/universalfilter/data/README.md | 0 .../data/UniversalFilterTable.php | 0 .../data/UniversalFilterTableContent.php | 0 .../data/UniversalFilterTableContentRow.php | 0 .../data/UniversalFilterTableHeader.php | 0 .../UniversalFilterTableHeaderColumnInfo.php | 0 .../interpreter/Environment.php | 0 .../interpreter/IInterpreterControl.php | 0 .../universalfilter/interpreter/README.md | 0 .../interpreter/UniversalInterpreter.php | 0 .../interpreter/cloning/FilterTreeCloner.php | 0 .../interpreter/cloning/README.md | 0 .../interpreter/debugging/README.md | 0 .../interpreter/debugging/TreePrinter.php | 0 .../interpreter/executers/README.md | 0 .../AbstractUniversalFilterNodeExecuter.php | 0 ...aseEvaluationEnvironmentFilterExecuter.php | 0 .../base/BaseHashingFilterExecuter.php | 0 .../base/IUniversalFilterNodeExecuter.php | 0 .../AggregatorFunctionExecuter.php | 0 .../AggregatorFunctionExecuters.php | 0 .../BinaryFunctionExecuter.php | 0 .../BinaryFunctionExecuters.php | 0 .../CheckInFunctionExecuter.php | 0 .../ColumnSelectionFilterExecuter.php | 0 .../implementations/ConstantExecuter.php | 0 .../implementations/DataGrouperExecuter.php | 0 .../DatasetJoinFilterExecuter.php | 0 .../DistinctFilterExecuter.php | 0 ...ExternallyCalculatedFilterNodeExecuter.php | 0 .../FilterByExpressionExecuter.php | 0 .../implementations/IdentifierExecuter.php | 0 .../implementations/LimitFilterExecuter.php | 0 .../SortFieldsFilterExecuter.php | 0 .../implementations/TableAliasExecuter.php | 0 .../TernaryFunctionExecuter.php | 0 .../TernaryFunctionExecuters.php | 0 .../implementations/UnaryFunctionExecuter.php | 0 .../UnaryFunctionExecuters.php | 0 .../executers/tools/ExecuterDateTimeTools.php | 0 .../other/DummyUniversalFilterNode.php | 0 .../interpreter/other/QueryTreeHandler.php | 0 .../sourceusage/SourceUsageData.php | 0 .../ExpectedHeaderNamesAttachment.php | 0 .../ExternallyCalculatedFilterNode.php | 0 .../sourcefilterbinding/README.md | 0 .../IUniversalFilterTableManager.php | 0 .../universalfilter/tablemanager/README.md | 0 .../tablemanager/implementation/README.md | 0 .../UniversalFilterTableManager.php | 0 .../tools/PhpObjectTableConverter.php | 0 .../tools/TableToPhpObjectConverter.php | 0 src/tdt/core/utility/Config.php | 0 src/tdt/core/utility/Request.php | 0 src/tdt/core/utility/RequestURI.php | 0 src/tdt/core/version.php | 0 tests/APITest.php | 78 +++++++ tests/data/CSVData.csv | 202 ++++++++++++++++++ 544 files changed, 292 insertions(+) mode change 100644 => 100755 .gitignore create mode 100644 .travis.yml mode change 100644 => 100755 README.md mode change 100644 => 100755 agpl-3.0.txt mode change 100644 => 100755 composer.json mode change 100644 => 100755 lib/gcp/lang-apollo.js mode change 100644 => 100755 lib/gcp/lang-clj.js mode change 100644 => 100755 lib/gcp/lang-css.js mode change 100644 => 100755 lib/gcp/lang-go.js mode change 100644 => 100755 lib/gcp/lang-hs.js mode change 100644 => 100755 lib/gcp/lang-lisp.js mode change 100644 => 100755 lib/gcp/lang-lua.js mode change 100644 => 100755 lib/gcp/lang-ml.js mode change 100644 => 100755 lib/gcp/lang-n.js mode change 100644 => 100755 lib/gcp/lang-proto.js mode change 100644 => 100755 lib/gcp/lang-scala.js mode change 100644 => 100755 lib/gcp/lang-sql.js mode change 100644 => 100755 lib/gcp/lang-tex.js mode change 100644 => 100755 lib/gcp/lang-vb.js mode change 100644 => 100755 lib/gcp/lang-vhdl.js mode change 100644 => 100755 lib/gcp/lang-wiki.js mode change 100644 => 100755 lib/gcp/lang-xq.js mode change 100644 => 100755 lib/gcp/lang-yaml.js mode change 100644 => 100755 lib/gcp/prettify.css mode change 100644 => 100755 lib/gcp/prettify.js mode change 100644 => 100755 lib/parse_engine.php mode change 100644 => 100755 src/tdt/core/controllers/AController.php mode change 100644 => 100755 src/tdt/core/controllers/CUDController.php mode change 100644 => 100755 src/tdt/core/controllers/RController.php mode change 100644 => 100755 src/tdt/core/controllers/README.md mode change 100644 => 100755 src/tdt/core/controllers/RedirectController.php mode change 100644 => 100755 src/tdt/core/controllers/SPECTQLController.php mode change 100644 => 100755 src/tdt/core/controllers/SQL/README.md mode change 100644 => 100755 src/tdt/core/controllers/SQL/READMEgrammar.txt mode change 100644 => 100755 src/tdt/core/controllers/SQL/SQLGrammarFunctions.php mode change 100644 => 100755 src/tdt/core/controllers/spectql/README.md mode change 100644 => 100755 src/tdt/core/controllers/spectql/SPECTQLParser.php mode change 100644 => 100755 src/tdt/core/controllers/spectql/SPECTQLResource.php mode change 100644 => 100755 src/tdt/core/controllers/spectql/SPECTQLTokenizer.php mode change 100644 => 100755 src/tdt/core/controllers/spectql/SPECTQLTools.php mode change 100644 => 100755 src/tdt/core/controllers/spectql/spectql.class mode change 100644 => 100755 src/tdt/core/controllers/spectql/spectql.lime mode change 100644 => 100755 src/tdt/core/controllers/spectql/spectql.php mode change 100644 => 100755 src/tdt/core/formatters/AFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/CsvFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/FormatterFactory.php mode change 100644 => 100755 src/tdt/core/formatters/HtmlFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/HtmltableFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/JsonFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/JsonpFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/KmlFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/N3Formatter.php mode change 100644 => 100755 src/tdt/core/formatters/NtFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/PhpFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/README.md mode change 100644 => 100755 src/tdt/core/formatters/RdfFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/RhtmlFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/RjsonFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/TtlFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/XmlFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/visualizations/BarFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/visualizations/ChartdataFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/visualizations/ColumnFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/visualizations/GridFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/visualizations/MapFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/visualizations/PieFormatter.php mode change 100644 => 100755 src/tdt/core/formatters/visualizations/README.md mode change 100644 => 100755 src/tdt/core/model/AResourceFactory.php mode change 100644 => 100755 src/tdt/core/model/CoreResourceFactory.php mode change 100644 => 100755 src/tdt/core/model/DBQueries.php mode change 100644 => 100755 src/tdt/core/model/Doc.php mode change 100644 => 100755 src/tdt/core/model/GenericResourceFactory.php mode change 100644 => 100755 src/tdt/core/model/InstalledResourceFactory.php mode change 100644 => 100755 src/tdt/core/model/README.md mode change 100644 => 100755 src/tdt/core/model/RemoteResourceFactory.php mode change 100644 => 100755 src/tdt/core/model/ResourcesModel.php mode change 100644 => 100755 src/tdt/core/model/filters/AFilter.php mode change 100644 => 100755 src/tdt/core/model/filters/FilterFactory.php mode change 100644 => 100755 src/tdt/core/model/filters/RESTFilter.php mode change 100644 => 100755 src/tdt/core/model/filters/SearchFilter.php mode change 100644 => 100755 src/tdt/core/model/packages/README.md mode change 100644 => 100755 src/tdt/core/model/packages/TDTAdmin/TDTAdminExport.php mode change 100644 => 100755 src/tdt/core/model/packages/TDTAdmin/TDTAdminResources.php mode change 100644 => 100755 src/tdt/core/model/packages/TDTInfo/TDTInfoAdmin.php mode change 100644 => 100755 src/tdt/core/model/packages/TDTInfo/TDTInfoExceptions.php mode change 100644 => 100755 src/tdt/core/model/packages/TDTInfo/TDTInfoFormatters.php mode change 100644 => 100755 src/tdt/core/model/packages/TDTInfo/TDTInfoPackages.php mode change 100644 => 100755 src/tdt/core/model/packages/TDTInfo/TDTInfoResources.php mode change 100644 => 100755 src/tdt/core/model/packages/TDTInfo/TDTInfoVisualizations.php mode change 100644 => 100755 src/tdt/core/model/resources/AResource.php mode change 100644 => 100755 src/tdt/core/model/resources/AResourceStrategy.php mode change 100644 => 100755 src/tdt/core/model/resources/GenericResource.php mode change 100644 => 100755 src/tdt/core/model/resources/README.md mode change 100644 => 100755 src/tdt/core/model/resources/create/ACreator.php mode change 100644 => 100755 src/tdt/core/model/resources/create/GenericResourceCreator.php mode change 100644 => 100755 src/tdt/core/model/resources/create/InstalledResourceCreator.php mode change 100644 => 100755 src/tdt/core/model/resources/create/RemoteResourceCreator.php mode change 100644 => 100755 src/tdt/core/model/resources/delete/ADeleter.php mode change 100644 => 100755 src/tdt/core/model/resources/delete/GenericResourceDeleter.php mode change 100644 => 100755 src/tdt/core/model/resources/delete/InstalledResourceDeleter.php mode change 100644 => 100755 src/tdt/core/model/resources/delete/RemoteResourceDeleter.php mode change 100644 => 100755 src/tdt/core/model/resources/read/AReader.php mode change 100644 => 100755 src/tdt/core/model/resources/read/GenericResourceReader.php mode change 100644 => 100755 src/tdt/core/model/resources/read/IFilter.php mode change 100644 => 100755 src/tdt/core/model/resources/read/RemoteResourceReader.php mode change 100644 => 100755 src/tdt/core/model/resources/update/AUpdater.php mode change 100644 => 100755 src/tdt/core/model/resources/update/GenericResourceUpdater.php mode change 100644 => 100755 src/tdt/core/model/semantics/OntologyProcessor.php mode change 100644 => 100755 src/tdt/core/model/semantics/RDFOutput.php mode change 100644 => 100755 src/tdt/core/model/semantics/README.md mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/RdfAPI.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/constants.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/dataset/Dataset.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/dataset/DatasetDb.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/dataset/DatasetMem.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/dataset/DatasetP.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/dataset/IteratorAllGraphsDb.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/dataset/IteratorAllGraphsMem.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/dataset/IteratorFindQuadsDb.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/dataset/IteratorFindQuadsMem.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/dataset/NamedGraphDb.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/dataset/NamedGraphMem.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/dataset/Quad.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfModel.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfModelB.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfModelF.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfModelP.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfRule.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfStatement.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/Blanknode.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/DBase.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/DbModel.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/DbStore.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/Literal.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/MemModel.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/Model.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/ModelFactory.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/ModelP.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/Node.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/RbModel.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/RbModelFactory.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/RbStore.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/Resource.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/model/Statement.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/ontModel/Individual.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OWLVocabulary.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntClass.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntModel.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntModelP.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntProperty.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntResource.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntVocabulary.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/ontModel/RdfsVocabulary.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/rdql/RDQL.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlDbEngine.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlEngine.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlMemEngine.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlParser.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlResultIterator.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResAlt.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResBag.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResContainer.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResIterator.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResList.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResLiteral.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResModel.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResModelP.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResProperty.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResResource.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResSeq.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/ClientQuery.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/Constraint.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/FilterFunctions.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/GraphPattern.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/Query.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/QueryTriple.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SPARQL.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlClient.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/PreparedStatement.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultConverter.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer/Default.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer/HTML.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer/XML.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/FilterGenerator.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/Offsetter.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/Preparator.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/PreparedStatement.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/QuerySimplifier.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultConverter.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/Default.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/HTML.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/JSON.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/PlainText.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/XML.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/SqlGenerator.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/SqlGeneratorException.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/SqlMerger.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/TypeSorter.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlParser.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlParserException.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlVariable.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/GRDDLParser.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/JsonParser.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/JsonSerializer.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/N3Parser.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/N3Serializer.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/NTripleSerializer.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/RdfParser.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/RdfSerializer.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/RssParser.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/SparqlResultParser.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxGRDDL.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxJSON.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxN3.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxRDF.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxRSS.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxSparqlRes.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/TriXParser.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/syntax/TriXSerializer.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/FindIterator.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/IterFind.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/ModelComparator.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/Object.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/RdfUtil.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/StatementIterator.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/Utility.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-active-record.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-csvlib.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-datadict.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-error.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-errorhandler.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-errorpear.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-exceptions.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-iterator.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-lib.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-memcache.lib.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-pager.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-pear.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-perf.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-php4.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-time.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-time.zip mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-xmlschema.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-xmlschema03.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/contrib/toxmlrpc.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/cute_icons_for_site/adodb.gif mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/cute_icons_for_site/adodb2.gif mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-access.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-db2.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-firebird.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-generic.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-ibase.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-informix.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-mssql.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-mysql.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-oci8.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-postgres.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-sapdb.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-sybase.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-active-record.htm mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-adodb.htm mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-datadict.htm mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-oracle.htm mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-perf.htm mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-session.htm mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-session.old.htm mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/old-changelog.htm mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/readme.htm mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/tips_portable_sql.htm mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/tute.htm mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-access.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ado.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ado5.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ado_access.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ado_mssql.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-borland_ibase.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-csv.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-db2.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-fbsql.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-firebird.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ibase.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-informix.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-informix72.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ldap.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mssql.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mssql_n.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mssqlpo.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mysql.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mysqli.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mysqlt.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-netezza.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-oci8.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-oci805.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-oci8po.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbc.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbc_db2.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbc_mssql.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbc_oracle.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbtp.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbtp_unicode.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-oracle.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo_mssql.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo_mysql.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo_oci.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo_pgsql.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-postgres.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-postgres64.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-postgres7.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-postgres8.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-proxy.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sapdb.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sqlanywhere.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sqlite.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sqlitepo.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sybase.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sybase_ase.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-vfp.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-ar.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-bg.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-bgutf8.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-ca.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-cn.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-cz.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-da.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-de.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-en.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-es.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-esperanto.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-fr.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-hu.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-it.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-nl.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-pl.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-pt-br.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-ro.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-ru1251.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-sv.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-uk1251.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/license.txt mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/pear/Auth/Container/ADOdb.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/pear/readme.Auth.txt mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-db2.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-informix.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-mssql.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-mysql.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-oci8.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-postgres.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/pivottable.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/readme.txt mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/rsfilter.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/server.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-compress-bzip2.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-compress-gzip.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-cryptsession.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-cryptsession2.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-encrypt-mcrypt.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-encrypt-md5.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-encrypt-secret.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-encrypt-sha1.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-sess.txt mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-session-clob.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-session-clob2.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-session.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-session2.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-sessions.mysql.sql mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-sessions.oracle.clob.sql mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-sessions.oracle.sql mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/crypt.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/old/adodb-cryptsession.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/old/adodb-session-clob.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/old/adodb-session.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/old/crypt.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/session_schema.xml mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/session_schema2.xml mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/benchmark.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/client.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/pdo.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-active-record.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-active-recs2.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-datadict.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-perf.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-pgblob.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-php5.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-xmlschema.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test2.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test3.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test4.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test5.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test_rs_array.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testcache.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testdatabases.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testgenid.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testmssql.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testoci8.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testoci8cursor.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testpaging.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testpear.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testsessions.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/time.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/tmssql.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/xmlschema-mssql.xml mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/xmlschema.xml mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/toexport.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tohtml.inc.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xmlschema.dtd mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xmlschema03.dtd mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/convert-0.1-0.2.xsl mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/convert-0.1-0.3.xsl mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/convert-0.2-0.1.xsl mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/convert-0.2-0.3.xsl mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/remove-0.2.xsl mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/remove-0.3.xsl mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/AUTHORS mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/CHANGES mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/ChangeLog mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/INSTALL mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/NEWS mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/README mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/TROUBLESHOOTING mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/cookbook mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/extlib/Snoopy.class.inc mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/htdocs/cookbook.html mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/htdocs/index.html mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/rss_cache.inc mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/rss_fetch.inc mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/rss_parse.inc mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/rss_utils.inc mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/README mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/magpie_debug.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/magpie_simple.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/magpie_slashbox.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/simple_smarty.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/smarty_plugin/modifier.rss_date_parse.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/templates/simple.smarty mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/ATOM_C.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/ATOM_RES.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/DC.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/DC_C.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/DC_RES.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/FOAF.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/FOAF_C.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/FOAF_RES.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/GEOURL.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/OWL.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/OWL_C.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/OWL_RES.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDF.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDFS.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDFS_C.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDFS_RES.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDF_C.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDF_RES.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RSS.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RSS_C.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RSS_RES.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VCARD.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VCARD_C.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VCARD_RES.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/Vocabulary.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VocabularyClass.php mode change 100644 => 100755 src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VocabularyRes.php mode change 100644 => 100755 src/tdt/core/model/semantics/tdtml/TDTML.php mode change 100644 => 100755 src/tdt/core/model/semantics/tdtml/tdtml1.0.owl mode change 100644 => 100755 src/tdt/core/strategies/ATabularData.php mode change 100644 => 100755 src/tdt/core/strategies/CSV.php mode change 100644 => 100755 src/tdt/core/strategies/DB.php mode change 100644 => 100755 src/tdt/core/strategies/JSON.php mode change 100644 => 100755 src/tdt/core/strategies/README.md mode change 100644 => 100755 src/tdt/core/strategies/SPARQL.php mode change 100644 => 100755 src/tdt/core/universalfilter/CombinedFilterGenerators.php mode change 100644 => 100755 src/tdt/core/universalfilter/README.md mode change 100644 => 100755 src/tdt/core/universalfilter/UniversalFilters.php mode change 100644 => 100755 src/tdt/core/universalfilter/common/BigDataBlockManager.php mode change 100644 => 100755 src/tdt/core/universalfilter/common/BigList.php mode change 100644 => 100755 src/tdt/core/universalfilter/common/BigMap.php mode change 100644 => 100755 src/tdt/core/universalfilter/common/HashString.php mode change 100644 => 100755 src/tdt/core/universalfilter/common/README.md mode change 100644 => 100755 src/tdt/core/universalfilter/common/StableSorting.php mode change 100644 => 100755 src/tdt/core/universalfilter/converter/SQLConverter.php mode change 100644 => 100755 src/tdt/core/universalfilter/data/README.md mode change 100644 => 100755 src/tdt/core/universalfilter/data/UniversalFilterTable.php mode change 100644 => 100755 src/tdt/core/universalfilter/data/UniversalFilterTableContent.php mode change 100644 => 100755 src/tdt/core/universalfilter/data/UniversalFilterTableContentRow.php mode change 100644 => 100755 src/tdt/core/universalfilter/data/UniversalFilterTableHeader.php mode change 100644 => 100755 src/tdt/core/universalfilter/data/UniversalFilterTableHeaderColumnInfo.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/Environment.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/IInterpreterControl.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/README.md mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/UniversalInterpreter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/cloning/FilterTreeCloner.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/cloning/README.md mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/debugging/README.md mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/debugging/TreePrinter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/README.md mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/base/AbstractUniversalFilterNodeExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/base/BaseEvaluationEnvironmentFilterExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/base/BaseHashingFilterExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/base/IUniversalFilterNodeExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/AggregatorFunctionExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/AggregatorFunctionExecuters.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/BinaryFunctionExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/BinaryFunctionExecuters.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/CheckInFunctionExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/ColumnSelectionFilterExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/ConstantExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/DataGrouperExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/DatasetJoinFilterExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/DistinctFilterExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/ExternallyCalculatedFilterNodeExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/FilterByExpressionExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/IdentifierExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/LimitFilterExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/SortFieldsFilterExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/TableAliasExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/TernaryFunctionExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/TernaryFunctionExecuters.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/UnaryFunctionExecuter.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/implementations/UnaryFunctionExecuters.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/executers/tools/ExecuterDateTimeTools.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/other/DummyUniversalFilterNode.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/other/QueryTreeHandler.php mode change 100644 => 100755 src/tdt/core/universalfilter/interpreter/sourceusage/SourceUsageData.php mode change 100644 => 100755 src/tdt/core/universalfilter/sourcefilterbinding/ExpectedHeaderNamesAttachment.php mode change 100644 => 100755 src/tdt/core/universalfilter/sourcefilterbinding/ExternallyCalculatedFilterNode.php mode change 100644 => 100755 src/tdt/core/universalfilter/sourcefilterbinding/README.md mode change 100644 => 100755 src/tdt/core/universalfilter/tablemanager/IUniversalFilterTableManager.php mode change 100644 => 100755 src/tdt/core/universalfilter/tablemanager/README.md mode change 100644 => 100755 src/tdt/core/universalfilter/tablemanager/implementation/README.md mode change 100644 => 100755 src/tdt/core/universalfilter/tablemanager/implementation/UniversalFilterTableManager.php mode change 100644 => 100755 src/tdt/core/universalfilter/tablemanager/implementation/tools/PhpObjectTableConverter.php mode change 100644 => 100755 src/tdt/core/universalfilter/tablemanager/implementation/tools/TableToPhpObjectConverter.php mode change 100644 => 100755 src/tdt/core/utility/Config.php mode change 100644 => 100755 src/tdt/core/utility/Request.php mode change 100644 => 100755 src/tdt/core/utility/RequestURI.php mode change 100644 => 100755 src/tdt/core/version.php create mode 100644 tests/APITest.php create mode 100644 tests/data/CSVData.csv diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..e63ede77 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,8 @@ +language: php +php: + - "5.4" + - "5.3" +before_script: + - composer install + +script: phpunit tests \ No newline at end of file diff --git a/README.md b/README.md old mode 100644 new mode 100755 index c21be140..d5b9f8b0 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +# tdt/core + +[![Build Status](https://travis-ci.org/tdt/core.png?branch=master)](undefined) + # Installation To install the datatank core, the best practice is to install tdt/start. This repository is located at http://www.github.com/tdt/start and contains an installer that load the necessary diff --git a/agpl-3.0.txt b/agpl-3.0.txt old mode 100644 new mode 100755 diff --git a/composer.json b/composer.json old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-apollo.js b/lib/gcp/lang-apollo.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-clj.js b/lib/gcp/lang-clj.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-css.js b/lib/gcp/lang-css.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-go.js b/lib/gcp/lang-go.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-hs.js b/lib/gcp/lang-hs.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-lisp.js b/lib/gcp/lang-lisp.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-lua.js b/lib/gcp/lang-lua.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-ml.js b/lib/gcp/lang-ml.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-n.js b/lib/gcp/lang-n.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-proto.js b/lib/gcp/lang-proto.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-scala.js b/lib/gcp/lang-scala.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-sql.js b/lib/gcp/lang-sql.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-tex.js b/lib/gcp/lang-tex.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-vb.js b/lib/gcp/lang-vb.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-vhdl.js b/lib/gcp/lang-vhdl.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-wiki.js b/lib/gcp/lang-wiki.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-xq.js b/lib/gcp/lang-xq.js old mode 100644 new mode 100755 diff --git a/lib/gcp/lang-yaml.js b/lib/gcp/lang-yaml.js old mode 100644 new mode 100755 diff --git a/lib/gcp/prettify.css b/lib/gcp/prettify.css old mode 100644 new mode 100755 diff --git a/lib/gcp/prettify.js b/lib/gcp/prettify.js old mode 100644 new mode 100755 diff --git a/lib/parse_engine.php b/lib/parse_engine.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/AController.php b/src/tdt/core/controllers/AController.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/CUDController.php b/src/tdt/core/controllers/CUDController.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/RController.php b/src/tdt/core/controllers/RController.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/README.md b/src/tdt/core/controllers/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/RedirectController.php b/src/tdt/core/controllers/RedirectController.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/SPECTQLController.php b/src/tdt/core/controllers/SPECTQLController.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/SQL/README.md b/src/tdt/core/controllers/SQL/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/SQL/READMEgrammar.txt b/src/tdt/core/controllers/SQL/READMEgrammar.txt old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/SQL/SQLGrammarFunctions.php b/src/tdt/core/controllers/SQL/SQLGrammarFunctions.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/spectql/README.md b/src/tdt/core/controllers/spectql/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/spectql/SPECTQLParser.php b/src/tdt/core/controllers/spectql/SPECTQLParser.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/spectql/SPECTQLResource.php b/src/tdt/core/controllers/spectql/SPECTQLResource.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/spectql/SPECTQLTokenizer.php b/src/tdt/core/controllers/spectql/SPECTQLTokenizer.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/spectql/SPECTQLTools.php b/src/tdt/core/controllers/spectql/SPECTQLTools.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/spectql/spectql.class b/src/tdt/core/controllers/spectql/spectql.class old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/spectql/spectql.lime b/src/tdt/core/controllers/spectql/spectql.lime old mode 100644 new mode 100755 diff --git a/src/tdt/core/controllers/spectql/spectql.php b/src/tdt/core/controllers/spectql/spectql.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/AFormatter.php b/src/tdt/core/formatters/AFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/CsvFormatter.php b/src/tdt/core/formatters/CsvFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/FormatterFactory.php b/src/tdt/core/formatters/FormatterFactory.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/HtmlFormatter.php b/src/tdt/core/formatters/HtmlFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/HtmltableFormatter.php b/src/tdt/core/formatters/HtmltableFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/JsonFormatter.php b/src/tdt/core/formatters/JsonFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/JsonpFormatter.php b/src/tdt/core/formatters/JsonpFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/KmlFormatter.php b/src/tdt/core/formatters/KmlFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/N3Formatter.php b/src/tdt/core/formatters/N3Formatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/NtFormatter.php b/src/tdt/core/formatters/NtFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/PhpFormatter.php b/src/tdt/core/formatters/PhpFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/README.md b/src/tdt/core/formatters/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/RdfFormatter.php b/src/tdt/core/formatters/RdfFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/RhtmlFormatter.php b/src/tdt/core/formatters/RhtmlFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/RjsonFormatter.php b/src/tdt/core/formatters/RjsonFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/TtlFormatter.php b/src/tdt/core/formatters/TtlFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/XmlFormatter.php b/src/tdt/core/formatters/XmlFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/visualizations/BarFormatter.php b/src/tdt/core/formatters/visualizations/BarFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/visualizations/ChartdataFormatter.php b/src/tdt/core/formatters/visualizations/ChartdataFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/visualizations/ColumnFormatter.php b/src/tdt/core/formatters/visualizations/ColumnFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/visualizations/GridFormatter.php b/src/tdt/core/formatters/visualizations/GridFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/visualizations/MapFormatter.php b/src/tdt/core/formatters/visualizations/MapFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/visualizations/PieFormatter.php b/src/tdt/core/formatters/visualizations/PieFormatter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/formatters/visualizations/README.md b/src/tdt/core/formatters/visualizations/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/AResourceFactory.php b/src/tdt/core/model/AResourceFactory.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/CoreResourceFactory.php b/src/tdt/core/model/CoreResourceFactory.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/DBQueries.php b/src/tdt/core/model/DBQueries.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/Doc.php b/src/tdt/core/model/Doc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/GenericResourceFactory.php b/src/tdt/core/model/GenericResourceFactory.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/InstalledResourceFactory.php b/src/tdt/core/model/InstalledResourceFactory.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/README.md b/src/tdt/core/model/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/RemoteResourceFactory.php b/src/tdt/core/model/RemoteResourceFactory.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/ResourcesModel.php b/src/tdt/core/model/ResourcesModel.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/filters/AFilter.php b/src/tdt/core/model/filters/AFilter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/filters/FilterFactory.php b/src/tdt/core/model/filters/FilterFactory.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/filters/RESTFilter.php b/src/tdt/core/model/filters/RESTFilter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/filters/SearchFilter.php b/src/tdt/core/model/filters/SearchFilter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/packages/README.md b/src/tdt/core/model/packages/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/packages/TDTAdmin/TDTAdminExport.php b/src/tdt/core/model/packages/TDTAdmin/TDTAdminExport.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/packages/TDTAdmin/TDTAdminResources.php b/src/tdt/core/model/packages/TDTAdmin/TDTAdminResources.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/packages/TDTInfo/TDTInfoAdmin.php b/src/tdt/core/model/packages/TDTInfo/TDTInfoAdmin.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/packages/TDTInfo/TDTInfoExceptions.php b/src/tdt/core/model/packages/TDTInfo/TDTInfoExceptions.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/packages/TDTInfo/TDTInfoFormatters.php b/src/tdt/core/model/packages/TDTInfo/TDTInfoFormatters.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/packages/TDTInfo/TDTInfoPackages.php b/src/tdt/core/model/packages/TDTInfo/TDTInfoPackages.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/packages/TDTInfo/TDTInfoResources.php b/src/tdt/core/model/packages/TDTInfo/TDTInfoResources.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/packages/TDTInfo/TDTInfoVisualizations.php b/src/tdt/core/model/packages/TDTInfo/TDTInfoVisualizations.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/AResource.php b/src/tdt/core/model/resources/AResource.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/AResourceStrategy.php b/src/tdt/core/model/resources/AResourceStrategy.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/GenericResource.php b/src/tdt/core/model/resources/GenericResource.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/README.md b/src/tdt/core/model/resources/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/create/ACreator.php b/src/tdt/core/model/resources/create/ACreator.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/create/GenericResourceCreator.php b/src/tdt/core/model/resources/create/GenericResourceCreator.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/create/InstalledResourceCreator.php b/src/tdt/core/model/resources/create/InstalledResourceCreator.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/create/RemoteResourceCreator.php b/src/tdt/core/model/resources/create/RemoteResourceCreator.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/delete/ADeleter.php b/src/tdt/core/model/resources/delete/ADeleter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/delete/GenericResourceDeleter.php b/src/tdt/core/model/resources/delete/GenericResourceDeleter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/delete/InstalledResourceDeleter.php b/src/tdt/core/model/resources/delete/InstalledResourceDeleter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/delete/RemoteResourceDeleter.php b/src/tdt/core/model/resources/delete/RemoteResourceDeleter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/read/AReader.php b/src/tdt/core/model/resources/read/AReader.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/read/GenericResourceReader.php b/src/tdt/core/model/resources/read/GenericResourceReader.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/read/IFilter.php b/src/tdt/core/model/resources/read/IFilter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/read/RemoteResourceReader.php b/src/tdt/core/model/resources/read/RemoteResourceReader.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/update/AUpdater.php b/src/tdt/core/model/resources/update/AUpdater.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/resources/update/GenericResourceUpdater.php b/src/tdt/core/model/resources/update/GenericResourceUpdater.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/OntologyProcessor.php b/src/tdt/core/model/semantics/OntologyProcessor.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/RDFOutput.php b/src/tdt/core/model/semantics/RDFOutput.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/README.md b/src/tdt/core/model/semantics/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/RdfAPI.php b/src/tdt/core/model/semantics/rdfapi-php/api/RdfAPI.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/constants.php b/src/tdt/core/model/semantics/rdfapi-php/api/constants.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/dataset/Dataset.php b/src/tdt/core/model/semantics/rdfapi-php/api/dataset/Dataset.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/dataset/DatasetDb.php b/src/tdt/core/model/semantics/rdfapi-php/api/dataset/DatasetDb.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/dataset/DatasetMem.php b/src/tdt/core/model/semantics/rdfapi-php/api/dataset/DatasetMem.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/dataset/DatasetP.php b/src/tdt/core/model/semantics/rdfapi-php/api/dataset/DatasetP.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/dataset/IteratorAllGraphsDb.php b/src/tdt/core/model/semantics/rdfapi-php/api/dataset/IteratorAllGraphsDb.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/dataset/IteratorAllGraphsMem.php b/src/tdt/core/model/semantics/rdfapi-php/api/dataset/IteratorAllGraphsMem.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/dataset/IteratorFindQuadsDb.php b/src/tdt/core/model/semantics/rdfapi-php/api/dataset/IteratorFindQuadsDb.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/dataset/IteratorFindQuadsMem.php b/src/tdt/core/model/semantics/rdfapi-php/api/dataset/IteratorFindQuadsMem.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/dataset/NamedGraphDb.php b/src/tdt/core/model/semantics/rdfapi-php/api/dataset/NamedGraphDb.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/dataset/NamedGraphMem.php b/src/tdt/core/model/semantics/rdfapi-php/api/dataset/NamedGraphMem.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/dataset/Quad.php b/src/tdt/core/model/semantics/rdfapi-php/api/dataset/Quad.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfModel.php b/src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfModel.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfModelB.php b/src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfModelB.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfModelF.php b/src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfModelF.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfModelP.php b/src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfModelP.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfRule.php b/src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfRule.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfStatement.php b/src/tdt/core/model/semantics/rdfapi-php/api/infModel/InfStatement.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/Blanknode.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/Blanknode.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/DBase.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/DBase.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/DbModel.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/DbModel.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/DbStore.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/DbStore.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/Literal.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/Literal.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/MemModel.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/MemModel.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/Model.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/Model.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/ModelFactory.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/ModelFactory.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/ModelP.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/ModelP.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/Node.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/Node.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/RbModel.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/RbModel.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/RbModelFactory.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/RbModelFactory.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/RbStore.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/RbStore.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/Resource.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/Resource.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/model/Statement.php b/src/tdt/core/model/semantics/rdfapi-php/api/model/Statement.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/Individual.php b/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/Individual.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OWLVocabulary.php b/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OWLVocabulary.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntClass.php b/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntClass.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntModel.php b/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntModel.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntModelP.php b/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntModelP.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntProperty.php b/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntProperty.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntResource.php b/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntResource.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntVocabulary.php b/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/OntVocabulary.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/RdfsVocabulary.php b/src/tdt/core/model/semantics/rdfapi-php/api/ontModel/RdfsVocabulary.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/rdql/RDQL.php b/src/tdt/core/model/semantics/rdfapi-php/api/rdql/RDQL.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlDbEngine.php b/src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlDbEngine.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlEngine.php b/src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlEngine.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlMemEngine.php b/src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlMemEngine.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlParser.php b/src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlParser.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlResultIterator.php b/src/tdt/core/model/semantics/rdfapi-php/api/rdql/RdqlResultIterator.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResAlt.php b/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResAlt.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResBag.php b/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResBag.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResContainer.php b/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResContainer.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResIterator.php b/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResIterator.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResList.php b/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResList.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResLiteral.php b/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResLiteral.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResModel.php b/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResModel.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResModelP.php b/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResModelP.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResProperty.php b/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResProperty.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResResource.php b/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResResource.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResSeq.php b/src/tdt/core/model/semantics/rdfapi-php/api/resModel/ResSeq.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/ClientQuery.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/ClientQuery.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/Constraint.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/Constraint.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/FilterFunctions.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/FilterFunctions.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/GraphPattern.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/GraphPattern.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/Query.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/Query.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/QueryTriple.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/QueryTriple.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SPARQL.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SPARQL.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlClient.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlClient.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/PreparedStatement.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/PreparedStatement.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultConverter.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultConverter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer/Default.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer/Default.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer/HTML.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer/HTML.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer/XML.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngine/ResultRenderer/XML.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/FilterGenerator.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/FilterGenerator.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/Offsetter.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/Offsetter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/Preparator.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/Preparator.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/PreparedStatement.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/PreparedStatement.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/QuerySimplifier.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/QuerySimplifier.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultConverter.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultConverter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/Default.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/Default.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/HTML.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/HTML.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/JSON.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/JSON.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/PlainText.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/PlainText.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/XML.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/ResultRenderer/XML.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/SqlGenerator.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/SqlGenerator.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/SqlGeneratorException.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/SqlGeneratorException.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/SqlMerger.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/SqlMerger.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/TypeSorter.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlEngineDb/TypeSorter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlParser.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlParser.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlParserException.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlParserException.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlVariable.php b/src/tdt/core/model/semantics/rdfapi-php/api/sparql/SparqlVariable.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/GRDDLParser.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/GRDDLParser.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/JsonParser.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/JsonParser.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/JsonSerializer.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/JsonSerializer.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/N3Parser.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/N3Parser.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/N3Serializer.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/N3Serializer.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/NTripleSerializer.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/NTripleSerializer.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/RdfParser.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/RdfParser.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/RdfSerializer.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/RdfSerializer.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/RssParser.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/RssParser.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SparqlResultParser.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SparqlResultParser.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxGRDDL.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxGRDDL.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxJSON.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxJSON.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxN3.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxN3.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxRDF.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxRDF.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxRSS.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxRSS.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxSparqlRes.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/SyntaxSparqlRes.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/TriXParser.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/TriXParser.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/syntax/TriXSerializer.php b/src/tdt/core/model/semantics/rdfapi-php/api/syntax/TriXSerializer.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/FindIterator.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/FindIterator.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/IterFind.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/IterFind.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/ModelComparator.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/ModelComparator.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/Object.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/Object.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/RdfUtil.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/RdfUtil.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/StatementIterator.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/StatementIterator.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/Utility.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/Utility.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-active-record.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-active-record.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-csvlib.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-csvlib.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-datadict.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-datadict.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-error.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-error.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-errorhandler.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-errorhandler.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-errorpear.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-errorpear.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-exceptions.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-exceptions.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-iterator.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-iterator.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-lib.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-lib.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-memcache.lib.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-memcache.lib.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-pager.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-pager.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-pear.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-pear.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-perf.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-perf.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-php4.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-php4.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-time.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-time.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-time.zip b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-time.zip old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-xmlschema.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-xmlschema.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-xmlschema03.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb-xmlschema03.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/adodb.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/contrib/toxmlrpc.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/contrib/toxmlrpc.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/cute_icons_for_site/adodb.gif b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/cute_icons_for_site/adodb.gif old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/cute_icons_for_site/adodb2.gif b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/cute_icons_for_site/adodb2.gif old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-access.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-access.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-db2.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-db2.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-firebird.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-firebird.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-generic.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-generic.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-ibase.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-ibase.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-informix.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-informix.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-mssql.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-mssql.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-mysql.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-mysql.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-oci8.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-oci8.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-postgres.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-postgres.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-sapdb.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-sapdb.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-sybase.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/datadict/datadict-sybase.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-active-record.htm b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-active-record.htm old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-adodb.htm b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-adodb.htm old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-datadict.htm b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-datadict.htm old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-oracle.htm b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-oracle.htm old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-perf.htm b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-perf.htm old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-session.htm b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-session.htm old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-session.old.htm b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/docs-session.old.htm old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/old-changelog.htm b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/old-changelog.htm old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/readme.htm b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/readme.htm old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/tips_portable_sql.htm b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/tips_portable_sql.htm old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/tute.htm b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/docs/tute.htm old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-access.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-access.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ado.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ado.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ado5.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ado5.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ado_access.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ado_access.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ado_mssql.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ado_mssql.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-borland_ibase.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-borland_ibase.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-csv.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-csv.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-db2.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-db2.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-fbsql.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-fbsql.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-firebird.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-firebird.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ibase.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ibase.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-informix.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-informix.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-informix72.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-informix72.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ldap.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-ldap.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mssql.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mssql.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mssql_n.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mssql_n.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mssqlpo.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mssqlpo.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mysql.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mysql.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mysqli.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mysqli.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mysqlt.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-mysqlt.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-netezza.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-netezza.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-oci8.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-oci8.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-oci805.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-oci805.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-oci8po.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-oci8po.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbc.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbc.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbc_db2.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbc_db2.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbc_mssql.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbc_mssql.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbc_oracle.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbc_oracle.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbtp.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbtp.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbtp_unicode.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-odbtp_unicode.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-oracle.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-oracle.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo_mssql.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo_mssql.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo_mysql.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo_mysql.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo_oci.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo_oci.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo_pgsql.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-pdo_pgsql.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-postgres.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-postgres.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-postgres64.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-postgres64.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-postgres7.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-postgres7.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-postgres8.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-postgres8.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-proxy.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-proxy.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sapdb.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sapdb.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sqlanywhere.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sqlanywhere.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sqlite.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sqlite.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sqlitepo.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sqlitepo.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sybase.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sybase.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sybase_ase.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-sybase_ase.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-vfp.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/drivers/adodb-vfp.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-ar.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-ar.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-bg.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-bg.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-bgutf8.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-bgutf8.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-ca.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-ca.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-cn.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-cn.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-cz.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-cz.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-da.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-da.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-de.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-de.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-en.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-en.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-es.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-es.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-esperanto.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-esperanto.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-fr.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-fr.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-hu.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-hu.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-it.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-it.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-nl.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-nl.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-pl.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-pl.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-pt-br.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-pt-br.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-ro.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-ro.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-ru1251.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-ru1251.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-sv.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-sv.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-uk1251.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/lang/adodb-uk1251.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/license.txt b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/license.txt old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/pear/Auth/Container/ADOdb.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/pear/Auth/Container/ADOdb.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/pear/readme.Auth.txt b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/pear/readme.Auth.txt old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-db2.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-db2.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-informix.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-informix.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-mssql.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-mssql.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-mysql.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-mysql.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-oci8.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-oci8.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-postgres.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/perf/perf-postgres.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/pivottable.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/pivottable.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/readme.txt b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/readme.txt old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/rsfilter.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/rsfilter.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/server.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/server.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-compress-bzip2.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-compress-bzip2.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-compress-gzip.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-compress-gzip.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-cryptsession.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-cryptsession.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-cryptsession2.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-cryptsession2.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-encrypt-mcrypt.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-encrypt-mcrypt.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-encrypt-md5.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-encrypt-md5.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-encrypt-secret.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-encrypt-secret.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-encrypt-sha1.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-encrypt-sha1.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-sess.txt b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-sess.txt old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-session-clob.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-session-clob.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-session-clob2.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-session-clob2.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-session.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-session.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-session2.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-session2.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-sessions.mysql.sql b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-sessions.mysql.sql old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-sessions.oracle.clob.sql b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-sessions.oracle.clob.sql old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-sessions.oracle.sql b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/adodb-sessions.oracle.sql old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/crypt.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/crypt.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/old/adodb-cryptsession.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/old/adodb-cryptsession.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/old/adodb-session-clob.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/old/adodb-session-clob.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/old/adodb-session.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/old/adodb-session.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/old/crypt.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/old/crypt.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/session_schema.xml b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/session_schema.xml old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/session_schema2.xml b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/session/session_schema2.xml old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/benchmark.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/benchmark.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/client.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/client.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/pdo.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/pdo.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-active-record.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-active-record.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-active-recs2.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-active-recs2.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-datadict.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-datadict.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-perf.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-perf.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-pgblob.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-pgblob.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-php5.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-php5.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-xmlschema.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test-xmlschema.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test2.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test2.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test3.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test3.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test4.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test4.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test5.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test5.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test_rs_array.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/test_rs_array.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testcache.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testcache.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testdatabases.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testdatabases.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testgenid.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testgenid.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testmssql.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testmssql.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testoci8.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testoci8.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testoci8cursor.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testoci8cursor.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testpaging.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testpaging.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testpear.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testpear.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testsessions.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/testsessions.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/time.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/time.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/tmssql.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/tmssql.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/xmlschema-mssql.xml b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/xmlschema-mssql.xml old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/xmlschema.xml b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tests/xmlschema.xml old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/toexport.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/toexport.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tohtml.inc.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/tohtml.inc.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xmlschema.dtd b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xmlschema.dtd old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xmlschema03.dtd b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xmlschema03.dtd old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/convert-0.1-0.2.xsl b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/convert-0.1-0.2.xsl old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/convert-0.1-0.3.xsl b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/convert-0.1-0.3.xsl old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/convert-0.2-0.1.xsl b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/convert-0.2-0.1.xsl old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/convert-0.2-0.3.xsl b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/convert-0.2-0.3.xsl old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/remove-0.2.xsl b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/remove-0.2.xsl old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/remove-0.3.xsl b/src/tdt/core/model/semantics/rdfapi-php/api/util/adodb/xsl/remove-0.3.xsl old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/AUTHORS b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/AUTHORS old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/CHANGES b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/CHANGES old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/ChangeLog b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/ChangeLog old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/INSTALL b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/INSTALL old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/NEWS b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/NEWS old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/README b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/README old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/TROUBLESHOOTING b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/TROUBLESHOOTING old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/cookbook b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/cookbook old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/extlib/Snoopy.class.inc b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/extlib/Snoopy.class.inc old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/htdocs/cookbook.html b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/htdocs/cookbook.html old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/htdocs/index.html b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/htdocs/index.html old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/rss_cache.inc b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/rss_cache.inc old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/rss_fetch.inc b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/rss_fetch.inc old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/rss_parse.inc b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/rss_parse.inc old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/rss_utils.inc b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/rss_utils.inc old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/README b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/README old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/magpie_debug.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/magpie_debug.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/magpie_simple.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/magpie_simple.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/magpie_slashbox.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/magpie_slashbox.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/simple_smarty.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/simple_smarty.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/smarty_plugin/modifier.rss_date_parse.php b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/smarty_plugin/modifier.rss_date_parse.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/templates/simple.smarty b/src/tdt/core/model/semantics/rdfapi-php/api/util/magpie/scripts/templates/simple.smarty old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/ATOM_C.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/ATOM_C.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/ATOM_RES.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/ATOM_RES.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/DC.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/DC.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/DC_C.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/DC_C.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/DC_RES.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/DC_RES.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/FOAF.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/FOAF.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/FOAF_C.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/FOAF_C.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/FOAF_RES.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/FOAF_RES.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/GEOURL.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/GEOURL.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/OWL.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/OWL.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/OWL_C.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/OWL_C.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/OWL_RES.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/OWL_RES.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDF.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDF.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDFS.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDFS.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDFS_C.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDFS_C.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDFS_RES.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDFS_RES.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDF_C.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDF_C.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDF_RES.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RDF_RES.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RSS.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RSS.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RSS_C.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RSS_C.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RSS_RES.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/RSS_RES.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VCARD.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VCARD.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VCARD_C.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VCARD_C.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VCARD_RES.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VCARD_RES.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/Vocabulary.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/Vocabulary.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VocabularyClass.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VocabularyClass.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VocabularyRes.php b/src/tdt/core/model/semantics/rdfapi-php/api/vocabulary/VocabularyRes.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/tdtml/TDTML.php b/src/tdt/core/model/semantics/tdtml/TDTML.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/model/semantics/tdtml/tdtml1.0.owl b/src/tdt/core/model/semantics/tdtml/tdtml1.0.owl old mode 100644 new mode 100755 diff --git a/src/tdt/core/strategies/ATabularData.php b/src/tdt/core/strategies/ATabularData.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/strategies/CSV.php b/src/tdt/core/strategies/CSV.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/strategies/DB.php b/src/tdt/core/strategies/DB.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/strategies/JSON.php b/src/tdt/core/strategies/JSON.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/strategies/README.md b/src/tdt/core/strategies/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/strategies/SPARQL.php b/src/tdt/core/strategies/SPARQL.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/CombinedFilterGenerators.php b/src/tdt/core/universalfilter/CombinedFilterGenerators.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/README.md b/src/tdt/core/universalfilter/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/UniversalFilters.php b/src/tdt/core/universalfilter/UniversalFilters.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/common/BigDataBlockManager.php b/src/tdt/core/universalfilter/common/BigDataBlockManager.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/common/BigList.php b/src/tdt/core/universalfilter/common/BigList.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/common/BigMap.php b/src/tdt/core/universalfilter/common/BigMap.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/common/HashString.php b/src/tdt/core/universalfilter/common/HashString.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/common/README.md b/src/tdt/core/universalfilter/common/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/common/StableSorting.php b/src/tdt/core/universalfilter/common/StableSorting.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/converter/SQLConverter.php b/src/tdt/core/universalfilter/converter/SQLConverter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/data/README.md b/src/tdt/core/universalfilter/data/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/data/UniversalFilterTable.php b/src/tdt/core/universalfilter/data/UniversalFilterTable.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/data/UniversalFilterTableContent.php b/src/tdt/core/universalfilter/data/UniversalFilterTableContent.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/data/UniversalFilterTableContentRow.php b/src/tdt/core/universalfilter/data/UniversalFilterTableContentRow.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/data/UniversalFilterTableHeader.php b/src/tdt/core/universalfilter/data/UniversalFilterTableHeader.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/data/UniversalFilterTableHeaderColumnInfo.php b/src/tdt/core/universalfilter/data/UniversalFilterTableHeaderColumnInfo.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/Environment.php b/src/tdt/core/universalfilter/interpreter/Environment.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/IInterpreterControl.php b/src/tdt/core/universalfilter/interpreter/IInterpreterControl.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/README.md b/src/tdt/core/universalfilter/interpreter/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/UniversalInterpreter.php b/src/tdt/core/universalfilter/interpreter/UniversalInterpreter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/cloning/FilterTreeCloner.php b/src/tdt/core/universalfilter/interpreter/cloning/FilterTreeCloner.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/cloning/README.md b/src/tdt/core/universalfilter/interpreter/cloning/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/debugging/README.md b/src/tdt/core/universalfilter/interpreter/debugging/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/debugging/TreePrinter.php b/src/tdt/core/universalfilter/interpreter/debugging/TreePrinter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/README.md b/src/tdt/core/universalfilter/interpreter/executers/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/base/AbstractUniversalFilterNodeExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/base/AbstractUniversalFilterNodeExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/base/BaseEvaluationEnvironmentFilterExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/base/BaseEvaluationEnvironmentFilterExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/base/BaseHashingFilterExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/base/BaseHashingFilterExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/base/IUniversalFilterNodeExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/base/IUniversalFilterNodeExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/AggregatorFunctionExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/AggregatorFunctionExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/AggregatorFunctionExecuters.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/AggregatorFunctionExecuters.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/BinaryFunctionExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/BinaryFunctionExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/BinaryFunctionExecuters.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/BinaryFunctionExecuters.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/CheckInFunctionExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/CheckInFunctionExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/ColumnSelectionFilterExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/ColumnSelectionFilterExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/ConstantExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/ConstantExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/DataGrouperExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/DataGrouperExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/DatasetJoinFilterExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/DatasetJoinFilterExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/DistinctFilterExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/DistinctFilterExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/ExternallyCalculatedFilterNodeExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/ExternallyCalculatedFilterNodeExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/FilterByExpressionExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/FilterByExpressionExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/IdentifierExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/IdentifierExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/LimitFilterExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/LimitFilterExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/SortFieldsFilterExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/SortFieldsFilterExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/TableAliasExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/TableAliasExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/TernaryFunctionExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/TernaryFunctionExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/TernaryFunctionExecuters.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/TernaryFunctionExecuters.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/UnaryFunctionExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/UnaryFunctionExecuter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/UnaryFunctionExecuters.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/UnaryFunctionExecuters.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/executers/tools/ExecuterDateTimeTools.php b/src/tdt/core/universalfilter/interpreter/executers/tools/ExecuterDateTimeTools.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/other/DummyUniversalFilterNode.php b/src/tdt/core/universalfilter/interpreter/other/DummyUniversalFilterNode.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/other/QueryTreeHandler.php b/src/tdt/core/universalfilter/interpreter/other/QueryTreeHandler.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/interpreter/sourceusage/SourceUsageData.php b/src/tdt/core/universalfilter/interpreter/sourceusage/SourceUsageData.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/sourcefilterbinding/ExpectedHeaderNamesAttachment.php b/src/tdt/core/universalfilter/sourcefilterbinding/ExpectedHeaderNamesAttachment.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/sourcefilterbinding/ExternallyCalculatedFilterNode.php b/src/tdt/core/universalfilter/sourcefilterbinding/ExternallyCalculatedFilterNode.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/sourcefilterbinding/README.md b/src/tdt/core/universalfilter/sourcefilterbinding/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/tablemanager/IUniversalFilterTableManager.php b/src/tdt/core/universalfilter/tablemanager/IUniversalFilterTableManager.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/tablemanager/README.md b/src/tdt/core/universalfilter/tablemanager/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/tablemanager/implementation/README.md b/src/tdt/core/universalfilter/tablemanager/implementation/README.md old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/tablemanager/implementation/UniversalFilterTableManager.php b/src/tdt/core/universalfilter/tablemanager/implementation/UniversalFilterTableManager.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/tablemanager/implementation/tools/PhpObjectTableConverter.php b/src/tdt/core/universalfilter/tablemanager/implementation/tools/PhpObjectTableConverter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/universalfilter/tablemanager/implementation/tools/TableToPhpObjectConverter.php b/src/tdt/core/universalfilter/tablemanager/implementation/tools/TableToPhpObjectConverter.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/utility/Config.php b/src/tdt/core/utility/Config.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/utility/Request.php b/src/tdt/core/utility/Request.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/utility/RequestURI.php b/src/tdt/core/utility/RequestURI.php old mode 100644 new mode 100755 diff --git a/src/tdt/core/version.php b/src/tdt/core/version.php old mode 100644 new mode 100755 diff --git a/tests/APITest.php b/tests/APITest.php new file mode 100644 index 00000000..bd209724 --- /dev/null +++ b/tests/APITest.php @@ -0,0 +1,78 @@ + array( + ["hostname"] => string(17) "http://localhost/" ["subdir"] => string(13) "start/public/" ["timezone"] => string(15) "Europe/Brussels" ["defaultlanguage"] => string(2) "en" ["defaultformat"] => string(4) "json" ["cache"] => array(3) { + ["system"] => string(7) "NoCache" ["host"] => string(9) "localhost" ["port"] => int(11211) + ) ["faultinjection"] => array( + ["enabled"] => bool(true) ["period"] => int(1000) + ) ["auth"] => array( + ["enabled"] => bool(true) ["api_user"] => string(3) "tdt" ["api_passwd"] => string(3) "tdt" + } ["logging"] => array(2) { + ["enabled"] => bool(true) ["path"] => string(16) "/var/log/tdtLogs" + } + } ["routes"] => array(7) { + ["GET | /error/(4..|5..|critical)/?.*"] => string(15) "ErrorController" ["GET | /documentation/?"] => string(23) "DocumentationController" ["GET | /?"] => string(23) "DocumentationController" ["GET | (?P.*)\.(?P[^?]+).*\??(.*)"] => string(32) "tdt\core\controllers\RController" ["GET | TDTAdmin/Resources/(?P.*)"] => string(34) "tdt\core\controllers\CUDController" ["PUT | TDTAdmin/Resources/(?P.*)"] => string(34) "tdt\core\controllers\CUDController" ["GET | (?P.*)"] => string(39) "tdt\core\controllers\RedirectController" + } ["db"] => array(5) { + ["system"] => string(5) "mysql" ["host"] => string(9) "localhost" ["name"] => string(3) "tdt" ["user"] => string(9) "superuser" ["password"] => string(9) "superuser" + }); */ + $config = array("general" => array("hostname" => "", "subdir" => "", "defaultformat" => "json"), + "cache" => array("system" => "NoCache","host"=>"", "port"=>""), + "db" => array("system" => "mysql", "host"=>"localhost","user"=>"root", "password" => "")); + } + + /* + * Test function to check if a CSV file is added and removed correctly + * and in between can be read as well in a correct way. Needs curl to work! + */ + + public function testCSV() { + $hostname = Config::get("general", "hostname"); + $subdir = Config::get("general", "subdir"); + + $url = $hostname . $subdir . "TDTAdmin/Resources/testcasecsv/csv1"; + $username = Config::get("general", "auth", "username"); + $password = Config::get("general", "auth", "password"); + + $fields = array( + 'documentation' => urlencode("this is a test case for unittesting a CSV resource"), + 'resource_type' => urlencode("generic/CSV"), + 'delimiter' => urlencode(";"), + 'uri' => urlencode(__DIR__ . "/data/CSVData.csv") + ); + + + + //open connection + $ch = curl_init(); + + // configure the HTTP Request + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_HEADER, 1); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_USERPWD, "' . $username . ':' . $password . '"); + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields)); + $result = curl_exec($ch); + $responseHeader = curl_getinfo($ch, CURLINFO_HTTP_CODE); + var_dump($responseHeader); + //close connection + curl_close($ch); + } + +} \ No newline at end of file diff --git a/tests/data/CSVData.csv b/tests/data/CSVData.csv new file mode 100644 index 00000000..6b34b83a --- /dev/null +++ b/tests/data/CSVData.csv @@ -0,0 +1,202 @@ +Name;Street Address;email;city +Clayton;Ap #630-7719 Scelerisque Road;ac.arcu@facilisismagna.ca;Pierre +Echo;Ap #530-5853 Luctus Rd.;malesuada.fringilla@penatibusetmagnis.org;Benton Harbor +Axel;8059 Urna St.;hymenaeos@pharetra.org;Oak Ridge +Kimberly;8753 Tempus St.;Donec.at.arcu@tinciduntaliquam.com;Christiansted +Leila;P.O. Box 391, 6196 Ante. Ave;tincidunt.pede.ac@lacusUtnec.edu;Saginaw +Raja;P.O. Box 156, 9542 Aliquam Avenue;urna.Nunc.quis@lacusMauris.ca;Gilette +Basil;Ap #807-5170 Arcu St.;nisi.Mauris.nulla@idante.org;Roseville +Christen;5570 Dapibus Av.;Donec@Donec.org;Hawthorne +Carlos;1228 Proin St.;sit.amet@nuncrisus.com;Long Beach +Benjamin;6519 Tempus St.;gravida.sit@et.org;Santa Rosa +Alexandra;P.O. Box 335, 6965 Ac Road;ac@odio.org;Concord +Coby;999 Dui. Rd.;molestie.tellus.Aenean@netuset.ca;New London +Zoe;Ap #708-3196 Sem St.;hendrerit@vulputatevelit.ca;Inglewood +Aurora;6165 Non, Rd.;vel.nisl.Quisque@sagittissemperNam.edu;Gold Beach +Brielle;Ap #871-3824 Luctus Street;in.molestie@amagna.org;Temecula +Jaime;2182 Sit St.;sem.mollis.dui@elementumpurus.com;Cudahy +Zephania;Ap #778-2702 Feugiat St.;ipsum.non.arcu@Vivamusnibh.com;Aberdeen +Rhonda;239-1607 Lorem Road;semper.rutrum.Fusce@consectetuereuismod.edu;Merced +Tucker;Ap #147-6817 Facilisis Road;et.pede.Nunc@nullaInteger.org;Helena +Cadman;Ap #278-8811 Sed Rd.;dui.nec@vulputatenisi.com;Schaumburg +Anjolie;Ap #834-9922 Dictum. Av.;cubilia@Integer.com;Bowling Green +Danielle;8994 A, St.;nec.mollis.vitae@gravida.org;Missoula +Carter;P.O. Box 334, 168 Facilisis St.;nisi.a@Cras.ca;Pueblo +Hadley;P.O. Box 973, 5073 Aliquam Avenue;aliquet.magna@Mauriseuturpis.edu;Nashua +Elliott;913-5726 Porttitor Av.;egestas.Fusce.aliquet@aliquam.edu;Jeffersontown +Aidan;P.O. Box 312, 4388 Montes, Rd.;amet.nulla.Donec@congueelit.org;Garden Grove +Deacon;4853 Non Road;Ut.tincidunt@sedturpisnec.com;Branson +Jael;Ap #261-284 Imperdiet St.;sit.amet.nulla@adipiscing.edu;Brockton +Mona;909-6665 Justo. Avenue;fermentum@nonnisiAenean.org;Tucson +Lael;810-9417 Amet Rd.;vitae.posuere@Sedauctorodio.ca;Cape Coral +Jenna;Ap #984-8533 Ligula. Ave;tempus.lorem@Crasdictum.ca;Flagstaff +Christopher;P.O. Box 138, 1489 Euismod Rd.;Proin@sitamet.ca;Christiansted +Jada;866-1928 Proin Road;natoque.penatibus@Duisacarcu.ca;Placentia +Brooke;Ap #991-3292 Auctor Road;in.felis.Nulla@semper.com;Gainesville +Jin;8305 Facilisis Avenue;Quisque.tincidunt.pede@tincidunt.com;Peabody +Britanni;412-5126 Elit Street;scelerisque@egestaslacinia.com;Chula Vista +Oscar;298 Metus Avenue;in.faucibus@utipsum.org;Elsmere +Montana;Ap #690-4330 Vivamus St.;et@tortordictum.org;Albuquerque +Brian;P.O. Box 747, 563 Aliquam Street;mollis.lectus@acliberonec.ca;Pocatello +Gloria;Ap #131-4880 Neque. Avenue;dignissim.pharetra.Nam@erosNamconsequat.com;Louisville +Kiayada;P.O. Box 420, 4351 Non, Av.;sagittis@vehiculaaliquet.org;Denver +Jana;P.O. Box 631, 9951 Dictum St.;feugiat.non.lobortis@et.org;Duncan +Hall;P.O. Box 762, 3956 At Avenue;Morbi.non.sapien@magnatellusfaucibus.com;Garden Grove +Alice;Ap #923-4661 Suspendisse Av.;ligula.Aliquam.erat@loremegetmollis.org;Fort Collins +Sybill;P.O. Box 523, 9007 Et, Street;Pellentesque.habitant@ametornare.edu;East Rutherford +Myra;Ap #481-9217 Egestas. Rd.;Sed.auctor.odio@consectetueradipiscing.ca;Glen Cove +Daryl;6563 Facilisis Ave;taciti.sociosqu@nuncQuisque.org;Newburgh +Harriet;P.O. Box 936, 2655 Leo. Avenue;dictum@loremvitaeodio.org;Nampa +Kirk;P.O. Box 153, 3727 At, Rd.;turpis@luctusaliquet.edu;Missoula +Illiana;3646 Orci, Av.;hendrerit.consectetuer@diamProindolor.org;Wichita Falls +Naomi;7520 Erat Street;interdum.ligula@hendrerita.edu;Virginia Beach +Yael;6852 Molestie Street;mauris.erat.eget@lobortismaurisSuspendisse.edu;Dixon +Farrah;Ap #754-3416 Nec, Rd.;faucibus.Morbi@dui.edu;Morgan City +Yuli;Ap #260-9602 Ipsum Avenue;a.dui.Cras@nonnisiAenean.com;Utica +Quinn;Ap #819-8522 Ipsum. Ave;dictum.Proin.eget@variusNamporttitor.ca;Pottsville +Odette;P.O. Box 374, 815 Vitae Avenue;Mauris.molestie@nonmassanon.ca;Benton Harbor +Lane;Ap #772-5994 Pede St.;Cum.sociis@metusInnec.edu;Port Arthur +Virginia;2647 Amet Av.;Suspendisse.tristique@insodaleselit.org;Alameda +Benjamin;657-2433 Tincidunt Rd.;Nunc@semsempererat.ca;Frederiksted +Maryam;P.O. Box 455, 8245 Suspendisse Ave;non@odioAliquamvulputate.ca;Philadelphia +Hakeem;393-9966 Nibh Road;bibendum.sed@indolorFusce.ca;Glen Cove +Connor;P.O. Box 963, 9205 Accumsan St.;non.massa@aneque.ca;San Marino +Tasha;Ap #226-8366 Cras Avenue;amet.dapibus@consectetuereuismod.ca;Peoria +Nevada;287-9276 Vestibulum St.;massa.Mauris.vestibulum@elitEtiamlaoreet.com;Waterbury +Nina;P.O. Box 882, 3401 Risus. Rd.;interdum.feugiat.Sed@ultriciesornare.com;Lincoln +Mariko;P.O. Box 536, 8770 A, St.;ut.sem.Nulla@eu.org;Frankfort +Patricia;Ap #229-2017 Nullam Ave;netus.et.malesuada@suscipitnonummyFusce.ca;St. Petersburg +Kitra;6720 Malesuada Rd.;eleifend@porta.com;Gadsden +Faith;460-8388 Arcu. St.;pretium@Duiselementum.com;Frankfort +Linus;667-2076 Praesent Avenue;felis.Donec@faucibusMorbivehicula.edu;Oswego +Vivien;991-5104 Nulla St.;massa.Quisque@euenimEtiam.ca;Covina +Imani;P.O. Box 426, 3682 Semper Avenue;et@sit.com;Nome +Josephine;193-2440 Feugiat St.;arcu.et.pede@ametconsectetuer.com;Hilo +Kai;515-4988 Metus. Ave;Quisque.libero@nuncrisus.ca;Rohnert Park +Regina;5208 Nec Ave;dictum@imperdiet.org;El Monte +Austin;P.O. Box 270, 1954 Sem St.;pretium.et@ametornarelectus.com;Alamogordo +Prescott;Ap #245-9606 Nunc Rd.;Aliquam.tincidunt@aliquetPhasellusfermentum.org;Meriden +Edward;793-5434 Erat Avenue;et.malesuada@Sed.ca;Lynn +Vera;Ap #730-3724 Egestas, St.;quis.accumsan@sodales.edu;Farmer City +Briar;4378 Viverra. St.;risus.varius.orci@Etiambibendumfermentum.com;Alpharetta +Imani;357-3320 Vel, Rd.;nonummy@Aenean.ca;The Dalles +Grace;4036 Ut Rd.;justo.nec.ante@veliteusem.org;Troy +Nelle;P.O. Box 769, 4264 Cras Ave;dolor.Nulla@ultricessitamet.com;Cairo +Regan;Ap #931-489 Fringilla Road;mauris.a@aliquetPhasellus.com;Darlington +Caryn;8498 Ut St.;ipsum.Suspendisse.sagittis@loremtristique.org;Parker +Kane;810-7395 Commodo Street;ornare.tortor@tincidunttempus.com;Camden +Ciara;P.O. Box 761, 4072 Tristique Rd.;diam.nunc@ornareegestas.edu;Jamestown +Dahlia;6193 Tristique St.;Sed.auctor.odio@Cum.org;Houma +Indigo;957-2956 Non, St.;ultrices.iaculis@tellusimperdiet.org;Littleton +Nolan;Ap #716-2408 Ullamcorper Av.;non.egestas.a@metusurna.com;Dover +Damian;671-3864 Velit Ave;et.malesuada.fames@Donecluctusaliquet.com;Rochester +Aretha;Ap #134-5580 Dapibus Av.;tempus@nisisemsemper.com;Greensboro +Buckminster;Ap #830-7552 Ac Rd.;Nunc.pulvinar.arcu@vulputatemaurissagittis.com;Healdsburg +Troy;Ap #948-8626 Libero Rd.;Curabitur.sed@feugiatnecdiam.org;West Palm Beach +Solomon;Ap #561-1412 Non Ave;ridiculus.mus.Aenean@Aliquam.com;Carolina +Beverly;6274 In St.;primis.in@diamProin.org;Easton +Neville;Ap #510-483 Dictum Ave;Cras@Aliquameratvolutpat.edu;Kahului +Hasad;P.O. Box 625, 6808 Lobortis. Street;congue@dapibusligulaAliquam.ca;Newton +Aaron;Ap #326-5371 Semper, Av.;diam.nunc.ullamcorper@dis.org;Malden +Kyla;820-738 Dictum Avenue;sem.Nulla.interdum@ipsum.edu;Tustin +Thane;Ap #897-5351 Enim, Rd.;mollis@eu.com;Escondido +Nina;7410 Non Street;lectus.justo.eu@eu.edu;Rocky Mount +MacKenzie;6285 Amet Rd.;convallis.dolor.Quisque@mollisdui.org;Cheyenne +Jerome;3174 Sed, Ave;gravida.mauris.ut@dolorsitamet.org;West Hartford +Colt;P.O. Box 775, 9897 Eu Ave;dolor.sit.amet@eleifendnondapibus.com;Indianapolis +Geoffrey;501-1005 Ornare Street;justo.sit.amet@odiotristique.com;Hammond +Martena;998-221 Urna Road;Sed.neque@convallisdolor.com;Daly City +Aimee;7942 Luctus St.;id.ante@a.com;Lower Burrell +Shelley;224-7648 Eros Road;lorem.vehicula.et@facilisislorem.ca;San Gabriel +Quentin;3230 Ac St.;porttitor@estcongue.org;Rancho Palos Verdes +Vielka;P.O. Box 536, 6401 Vitae, Street;libero.dui@eunulla.com;West Bend +Emmanuel;6011 Phasellus Ave;natoque.penatibus@Proinnisl.com;Lower Burrell +Courtney;Ap #410-8412 Nunc. Ave;Integer@sedestNunc.com;Tok +Timothy;4417 Dolor, Rd.;eu.odio@Suspendissedui.org;Boise +Piper;557-8152 Dolor Rd.;Etiam.vestibulum.massa@neque.org;Middletown +Anika;P.O. Box 378, 781 Eu Rd.;risus.In@nequeNullamnisl.org;Texas City +Sade;P.O. Box 363, 7485 Velit Street;sed@nullaIntegervulputate.com;Haverhill +Nathan;Ap #152-986 Ultricies Road;dictum@vulputateposuere.edu;Vineland +Abraham;905 Neque St.;amet.metus.Aliquam@Maurisblanditenim.edu;Buffalo +Jamalia;Ap #736-3150 Eu Road;arcu.Aliquam.ultrices@lectus.com;Radford +Gretchen;271-9614 Enim St.;consequat.dolor.vitae@inmagnaPhasellus.com;West Bend +Judith;321-9194 Tincidunt Av.;euismod.est@ullamcorpereueuismod.edu;Lafayette +Destiny;532-402 Vulputate Rd.;Pellentesque.habitant.morbi@amalesuada.com;San Gabriel +Yoshio;4764 Libero Avenue;Curabitur@vitaeposuereat.org;Hazleton +Jonah;P.O. Box 460, 8616 Praesent Avenue;Duis.volutpat@sapien.com;Highland Park +Ariana;592 Nulla. Road;mollis.Duis@velitQuisquevarius.com;Riverside +Fulton;P.O. Box 757, 1725 Proin Avenue;non.egestas.a@orciquis.edu;Spokane +Zeus;9976 Nulla Street;sapien.molestie.orci@enimCurabitur.org;Rye +Rudyard;P.O. Box 661, 5648 Amet, St.;ligula.Aliquam@Nuncuterat.com;Calabasas +Sasha;1238 Quis St.;eu.euismod.ac@quamCurabiturvel.ca;Derby +Kenneth;2213 Ipsum St.;dictum.augue.malesuada@lacusQuisqueimperdiet.com;Chesapeake +Sigourney;P.O. Box 407, 6167 Et Ave;non@Integervitaenibh.edu;Seal Beach +Aurora;P.O. Box 261, 1820 Elit. Rd.;a.sollicitudin.orci@eunequepellentesque.com;Martinsburg +Theodore;2782 Dui. St.;et.pede@Nulla.ca;Georgetown +Patience;206-7760 Nulla Rd.;Nunc.sollicitudin@AliquamnislNulla.com;Texas City +Stacey;394-4506 Ullamcorper. Ave;vel.convallis.in@infaucibus.ca;Downey +Judah;Ap #816-630 Nulla Street;enim.Sed.nulla@lectusNullam.ca;Mequon +Hadley;P.O. Box 179, 9325 Augue Rd.;mauris@convallisin.edu;Sunbury +Evelyn;Ap #302-6989 Accumsan Ave;arcu.Vestibulum.ante@dictum.com;Terre Haute +Dara;Ap #921-3525 Volutpat Road;non@pharetraNamac.org;Shreveport +Martina;P.O. Box 536, 364 Erat, Av.;elit@erat.com;Durham +Judith;Ap #590-3348 Urna. Avenue;Etiam.laoreet@vulputatenisi.com;Mesa +Deacon;4104 Commodo Av.;varius.ultrices@mi.org;Durant +Jackson;P.O. Box 701, 1297 Natoque Street;at.risus.Nunc@facilisisvitae.ca;Cypress +Linus;876-5978 Nec Ave;Integer.in.magna@ligulaNullamenim.com;Simi Valley +Vladimir;5763 Tellus Rd.;mollis@ornare.org;Elsmere +Lester;Ap #373-394 Ridiculus Avenue;Cum.sociis@erateget.edu;Anchorage +Jillian;6474 Mattis. Av.;purus.gravida@Vivamuseuismod.ca;Cedar City +Germane;Ap #423-3564 Pharetra. Road;id@lacuspedesagittis.org;Kingsport +Cailin;Ap #338-4809 Consectetuer Av.;tincidunt.adipiscing.Mauris@lacusvestibulumlorem.edu;Stamford +Ezra;9289 Porttitor St.;porttitor.vulputate.posuere@eu.com;Tacoma +Jerome;P.O. Box 688, 8768 Quis St.;cursus.non.egestas@dui.ca;Parker +Lucas;4033 Curabitur Rd.;mauris@euismod.org;Eugene +Ferris;852-1864 Nisi St.;Nunc.quis@magnisdis.org;Rosemead +Yuli;P.O. Box 679, 8214 Tellus. Rd.;nunc@estac.ca;Galesburg +Tamara;P.O. Box 651, 133 Enim Road;Maecenas.mi@Suspendissealiquet.edu;Hoover +Meghan;221-8582 Ornare, St.;Sed@Integerid.edu;Butte +Hanae;7560 Ad Rd.;ante@vitaesemper.org;San Fernando +Aiko;758 Amet, St.;Integer.vitae.nibh@euismodurna.ca;Minot +Mikayla;2045 Mollis. Road;volutpat.ornare.facilisis@Uttincidunt.org;Oro Valley +Jescie;6345 Lorem, Road;Aliquam@turpis.edu;North Platte +Aristotle;3103 Blandit Ave;vulputate@scelerisque.ca;Gardena +Carson;P.O. Box 877, 9277 Egestas Rd.;id@hendreritconsectetuer.edu;Aliso Viejo +Harper;Ap #845-9308 Lobortis St.;nec.tempus.scelerisque@Aliquamgravidamauris.edu;Rochester +Dora;Ap #180-6650 Aliquam Av.;Sed.id.risus@quis.com;Belleville +Elton;304 Consequat Rd.;amet.luctus.vulputate@Nullamnisl.ca;Yakima +Conan;Ap #914-7648 Massa. Av.;pede.nec.ante@dui.org;Merizo +Evelyn;Ap #462-7689 Phasellus Road;purus.in.molestie@parturient.edu;Webster Groves +Germaine;2021 Erat Av.;velit.egestas.lacinia@Suspendisseac.org;Bozeman +Martha;402-2005 Amet Avenue;Quisque.libero.lacus@Nullaeget.com;Beaumont +Iona;1263 Vitae, Avenue;a@sociis.ca;Valdez +Herman;P.O. Box 488, 4958 A, Ave;mauris.sagittis.placerat@Fusce.org;Kenner +Finn;P.O. Box 281, 3277 In Street;ut.quam@auguemalesuadamalesuada.edu;Overland Park +Mira;Ap #253-5204 Fringilla Ave;eros.non@sollicitudinorci.org;Weymouth +Tatiana;P.O. Box 444, 168 Malesuada Rd.;nibh.lacinia@aliquetPhasellusfermentum.ca;Tustin +Basia;9740 Aliquet St.;et.magnis@posuerevulputate.edu;Hollywood +Blair;Ap #334-4644 Ipsum St.;ante.ipsum@tristiquepellentesque.org;Hoover +Castor;4450 Tincidunt. Av.;et.tristique@scelerisquescelerisque.edu;Manassas +Leo;P.O. Box 845, 8739 Cursus. Avenue;dui@sedsapienNunc.com;Olympia +Erich;Ap #178-8407 Et St.;aliquet@elit.com;Texarkana +Imogene;7533 Et Ave;sit.amet.massa@Phasellusdapibus.edu;Kennewick +Talon;P.O. Box 181, 8128 Pellentesque. Ave;elit.sed@cursus.ca;Norton +Chiquita;Ap #682-8941 Tempus Avenue;mauris@augue.edu;Boulder Junction +Ria;P.O. Box 235, 6427 Donec Road;rutrum.Fusce@euismodurnaNullam.edu;Sister Bay +Caryn;668-3904 Vel Rd.;eget.varius.ultrices@lorem.org;Oshkosh +Olga;P.O. Box 636, 4178 Praesent St.;malesuada@nuncsed.org;Ogdensburg +Chase;4925 Sagittis Ave;tortor.dictum.eu@viverraMaecenas.com;Warner Robins +Zenia;7714 Auctor, Av.;sed.pede.Cum@bibendumsed.ca;North Charleston +Jelani;Ap #878-5582 Sed St.;justo@euismod.org;Torrington +Elmo;P.O. Box 710, 1075 Rutrum Ave;at.pretium@eleifend.com;Union City +Whilemina;646-1149 Nec, Street;Integer@mollisInteger.org;Kahului +Malik;2294 Et, Av.;scelerisque.scelerisque@nequevitae.com;Moreno Valley +Ava;Ap #700-2122 Nam St.;et@lorem.ca;Melrose +Xyla;P.O. Box 543, 6591 Dolor Rd.;mattis.velit.justo@diam.ca;Camden +Scott;599-3531 Eros Av.;dolor.tempus.non@velmaurisInteger.com;Morrison +Carlos;895-9808 Penatibus St.;Nullam.scelerisque.neque@temporbibendumDonec.ca;Homer +Benjamin;347-1052 Pede Street;dictum.Proin@porttitor.com;Santa Barbara +Orli;Ap #425-7782 Egestas, Road;vel@Suspendisse.ca;Clearwater +Heather;239-9444 Urna. St.;augue.Sed.molestie@lacusUt.org;Tallahassee +Bianca;593-4627 Gravida. Avenue;Morbi@suscipitestac.ca;Deadwood + From a8b3c2a0033bdc8d5ead69ece39f41ef31afc500 Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Thu, 24 Jan 2013 13:47:28 +0100 Subject: [PATCH 02/18] First push of php unittesting. Tests pass locally, testing if the travis mysql service is working. --- .travis.yml | 1 + src/tdt/core/controllers/AController.php | 2 +- src/tdt/core/model/Doc.php | 6 +- src/tdt/core/model/ResourcesModel.php | 2 +- tests/APITest.php | 134 +++++++++++++---------- 5 files changed, 85 insertions(+), 60 deletions(-) diff --git a/.travis.yml b/.travis.yml index e63ede77..07ae8883 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,5 +4,6 @@ php: - "5.3" before_script: - composer install + - mysql -e 'create database myapp_test;' script: phpunit tests \ No newline at end of file diff --git a/src/tdt/core/controllers/AController.php b/src/tdt/core/controllers/AController.php index 3e88a404..43962923 100755 --- a/src/tdt/core/controllers/AController.php +++ b/src/tdt/core/controllers/AController.php @@ -47,7 +47,7 @@ public function __construct() { } public function setFormat($format) { - $this->format_through_url = $format; + $this->format_through_url = $format; } /** diff --git a/src/tdt/core/model/Doc.php b/src/tdt/core/model/Doc.php index c3ac6e2f..397fe630 100755 --- a/src/tdt/core/model/Doc.php +++ b/src/tdt/core/model/Doc.php @@ -36,12 +36,12 @@ public function __construct() { */ private function prepareCacheConfig() { - $cache_config = array(); + $cache_config = array(); $cache_config["system"] = Config::get("general", "cache", "system"); $cache_config["host"] = Config::get("general", "cache", "host"); - $cache_config["port"] = Config::get("general", "cache", "port"); - + $cache_config["port"] = Config::get("general", "cache", "port"); + return $cache_config; } diff --git a/src/tdt/core/model/ResourcesModel.php b/src/tdt/core/model/ResourcesModel.php index 0e14f894..a4caf63e 100755 --- a/src/tdt/core/model/ResourcesModel.php +++ b/src/tdt/core/model/ResourcesModel.php @@ -143,7 +143,7 @@ public function createResource($packageresourcestring, $parameters) { * generic type, without passing that as a separate parameter * NOTE that passing generic/generic_type has priority over generic_type = ... */ - $resourceTypeParts = explode("/", $parameters["resource_type"]); + $resourceTypeParts = explode("/", $parameters["resource_type"]); if ($resourceTypeParts[0] != "remote" && $resourceTypeParts[0] != "installed") { if ($resourceTypeParts[0] == "generic" && !isset($parameters["generic_type"]) && isset($resourceTypeParts[1])) { diff --git a/tests/APITest.php b/tests/APITest.php index bd209724..fb88a729 100644 --- a/tests/APITest.php +++ b/tests/APITest.php @@ -1,7 +1,7 @@ array( - ["hostname"] => string(17) "http://localhost/" ["subdir"] => string(13) "start/public/" ["timezone"] => string(15) "Europe/Brussels" ["defaultlanguage"] => string(2) "en" ["defaultformat"] => string(4) "json" ["cache"] => array(3) { - ["system"] => string(7) "NoCache" ["host"] => string(9) "localhost" ["port"] => int(11211) - ) ["faultinjection"] => array( - ["enabled"] => bool(true) ["period"] => int(1000) - ) ["auth"] => array( - ["enabled"] => bool(true) ["api_user"] => string(3) "tdt" ["api_passwd"] => string(3) "tdt" - } ["logging"] => array(2) { - ["enabled"] => bool(true) ["path"] => string(16) "/var/log/tdtLogs" - } - } ["routes"] => array(7) { - ["GET | /error/(4..|5..|critical)/?.*"] => string(15) "ErrorController" ["GET | /documentation/?"] => string(23) "DocumentationController" ["GET | /?"] => string(23) "DocumentationController" ["GET | (?P.*)\.(?P[^?]+).*\??(.*)"] => string(32) "tdt\core\controllers\RController" ["GET | TDTAdmin/Resources/(?P.*)"] => string(34) "tdt\core\controllers\CUDController" ["PUT | TDTAdmin/Resources/(?P.*)"] => string(34) "tdt\core\controllers\CUDController" ["GET | (?P.*)"] => string(39) "tdt\core\controllers\RedirectController" - } ["db"] => array(5) { - ["system"] => string(5) "mysql" ["host"] => string(9) "localhost" ["name"] => string(3) "tdt" ["user"] => string(9) "superuser" ["password"] => string(9) "superuser" - }); */ - $config = array("general" => array("hostname" => "", "subdir" => "", "defaultformat" => "json"), - "cache" => array("system" => "NoCache","host"=>"", "port"=>""), - "db" => array("system" => "mysql", "host"=>"localhost","user"=>"root", "password" => "")); + private $config; + + public function __construct() { + /* + * Prepare the configuration that will be used throughout the creation/reading/deleting + * process of the test. + */ + $configArray = array("general" => array("hostname" => "", "subdir" => "", "defaultformat" => "json", + "cache" => array("system" => "NoCache","host"=>"", "port"=>"")), + "db" => array("system" => "mysql", "host"=>"localhost","user"=>"root", "password" => "", "name" => "myapp_test"), + "logging" => array("enabled" => false, "path" => "")); + + Config::setConfig($configArray); + + } /* * Test function to check if a CSV file is added and removed correctly - * and in between can be read as well in a correct way. Needs curl to work! + * and in between can be read as well in a correct way. */ + public function testCSV() { + + $TEST_PACKAGE_NAME = "UNITTESTCSV"; + $TEST_RESOURCE_NAME = "csv1"; + + $parameters = array( + 'documentation' => "This is a test case for unittesting a CSV resource.", + 'resource_type' => "generic/CSV", + 'delimiter' => ";", + 'uri' => __DIR__ . "/data/CSVData.csv" + ); + + /* + * Try creating a resource, if anything fails, the test fails + */ + $create_resource = true; + try{ + $model = ResourcesModel::getInstance(); + $model->createResource($TEST_PACKAGE_NAME . "/" . $TEST_RESOURCE_NAME,$parameters); + }catch(Exception $ex){ + var_dump($ex->getTrace()); + $create_resource = false; + } + + $this->assertTrue($create_resource); + + /* + * Try reading the datasource + */ + $read_datasource = true; + try{ + $model = $model = ResourcesModel::getInstance(); + $csv_object = $model->readResource($TEST_PACKAGE_NAME,$TEST_RESOURCE_NAME,array(),array()); + + // Lets get the first rowobject and compare some values. + // Clayton;Ap #630-7719 Scelerisque Road;ac.arcu@facilisismagna.ca;Pierre + $object1 = array_shift($csv_object); + $this->assertEquals("ac.arcu@facilisismagna.ca",$object1->email); + $this->assertEquals("Pierre",$object1->city); + $this->assertEquals("Clayton",$object1->Name); + $this->assertEquals("Ap #630-7719 Scelerisque Road",$object1->Street_Address); + + }catch(Exception $ex){ + $read_datasource = false; + } + + $this->assertTrue($read_datasource); + + /* + * Try deleting the resource + */ + $delete_datasource = true; + try{ + $model = ResourcesModel::getInstance(); + $model->deleteResource($TEST_PACKAGE_NAME, $TEST_RESOURCE_NAME,array()); + }catch(Exception $ex){ + $delete_datasource = false; + } + + $this->assertTrue($delete_datasource); + - public function testCSV() { - $hostname = Config::get("general", "hostname"); - $subdir = Config::get("general", "subdir"); - - $url = $hostname . $subdir . "TDTAdmin/Resources/testcasecsv/csv1"; - $username = Config::get("general", "auth", "username"); - $password = Config::get("general", "auth", "password"); - - $fields = array( - 'documentation' => urlencode("this is a test case for unittesting a CSV resource"), - 'resource_type' => urlencode("generic/CSV"), - 'delimiter' => urlencode(";"), - 'uri' => urlencode(__DIR__ . "/data/CSVData.csv") - ); - - - - //open connection - $ch = curl_init(); - - // configure the HTTP Request - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_HEADER, 1); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_USERPWD, "' . $username . ':' . $password . '"); - curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); - curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields)); - $result = curl_exec($ch); - $responseHeader = curl_getinfo($ch, CURLINFO_HTTP_CODE); - var_dump($responseHeader); - //close connection - curl_close($ch); } } \ No newline at end of file From 97147445e543439a7294d3d7e0bf820e8d968fac Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Thu, 24 Jan 2013 13:59:46 +0100 Subject: [PATCH 03/18] Tweaked the travis configuration. --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 07ae8883..207adffa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,10 @@ language: php +services: mysql php: - "5.4" - "5.3" +env: + - DB=mysql before_script: - composer install - mysql -e 'create database myapp_test;' From 54c2e2ea23963c91468fdbd98a662ccabab402e2 Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Thu, 24 Jan 2013 14:22:52 +0100 Subject: [PATCH 04/18] Changed iFilter to IFilter, windows doesn't throw errors on this small case issue, but *nix environments do. --- src/tdt/core/model/resources/read/IFilter.php | 2 +- src/tdt/core/strategies/CSV.php | 4 ++-- src/tdt/core/strategies/DB.php | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/tdt/core/model/resources/read/IFilter.php b/src/tdt/core/model/resources/read/IFilter.php index 57b3a47d..b90091ee 100755 --- a/src/tdt/core/model/resources/read/IFilter.php +++ b/src/tdt/core/model/resources/read/IFilter.php @@ -13,7 +13,7 @@ namespace tdt\core\model\resources\read; -interface iFilter { +interface IFilter { /** * This has to return not only the dataset as a phpobject!! diff --git a/src/tdt/core/strategies/CSV.php b/src/tdt/core/strategies/CSV.php index ad36cf27..4c9a4171 100755 --- a/src/tdt/core/strategies/CSV.php +++ b/src/tdt/core/strategies/CSV.php @@ -14,8 +14,8 @@ use Monolog\Logger; use tdt\exceptions\TDTException; -class CSV extends ATabularData { - +class CSV extends ATabularData{ + private static $READ_MAX_AMOUNT_OF_ROWS = 100; // amount of chars in one row that can be read private static $MAX_LINE_LENGTH = 15000; diff --git a/src/tdt/core/strategies/DB.php b/src/tdt/core/strategies/DB.php index 392ac48f..2b9347ff 100755 --- a/src/tdt/core/strategies/DB.php +++ b/src/tdt/core/strategies/DB.php @@ -14,12 +14,12 @@ use Monolog\Handler\StreamHandler; use Monolog\Logger; use RedBean_Facade as R; -use tdt\core\model\resources\read\iFilter; +use tdt\core\model\resources\read\IFilter; use tdt\core\universalfilter\interpreter\other\QueryTreeHandler; use tdt\core\utility\Config; use tdt\exceptions\TDTException; -class DB extends ATabularData implements iFilter { +class DB extends ATabularData implements IFilter { /* * If no limit is defined, get a default maximum of rows * This way reading a database with a large set of records will not cause From b99cea44000a139a16dbc75257e0e1d3ef388db5 Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Thu, 24 Jan 2013 17:14:15 +0100 Subject: [PATCH 05/18] Added a database MySQL test. --- tests/APITest.php | 74 +++++++++++++- tests/data/test_data.sql | 210 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 280 insertions(+), 4 deletions(-) create mode 100644 tests/data/test_data.sql diff --git a/tests/APITest.php b/tests/APITest.php index fb88a729..e11a9cc6 100644 --- a/tests/APITest.php +++ b/tests/APITest.php @@ -54,8 +54,7 @@ public function testCSV() { try{ $model = ResourcesModel::getInstance(); $model->createResource($TEST_PACKAGE_NAME . "/" . $TEST_RESOURCE_NAME,$parameters); - }catch(Exception $ex){ - var_dump($ex->getTrace()); + }catch(Exception $ex){ $create_resource = false; } @@ -77,7 +76,7 @@ public function testCSV() { $this->assertEquals("Clayton",$object1->Name); $this->assertEquals("Ap #630-7719 Scelerisque Road",$object1->Street_Address); - }catch(Exception $ex){ + }catch(Exception $ex){ $read_datasource = false; } @@ -90,13 +89,80 @@ public function testCSV() { try{ $model = ResourcesModel::getInstance(); $model->deleteResource($TEST_PACKAGE_NAME, $TEST_RESOURCE_NAME,array()); - }catch(Exception $ex){ + }catch(Exception $ex){ $delete_datasource = false; } $this->assertTrue($delete_datasource); + } + public function testDB(){ + $TEST_PACKAGE_NAME = "UNITTESTDB"; + $TEST_RESOURCE_NAME = "db1"; + + /* + * Pass along the database parameters leading to the test data + */ + $parameters = array( + 'documentation' => "This is a test case for unittesting a DB resource.", + 'resource_type' => "generic/DB", + 'db_table' => "test_table", + 'location' => "localhost", + 'username' => "root", + 'password' => "", + 'db_name' => "myapp_test", + 'db_type' => "MySQL" + + ); + + /* + * Try creating a resource, if anything fails, the test fails + */ + $create_resource = true; + try{ + $model = ResourcesModel::getInstance(); + $model->createResource($TEST_PACKAGE_NAME . "/" . $TEST_RESOURCE_NAME,$parameters); + }catch(Exception $ex){ + $create_resource = false; + } + + $this->assertTrue($create_resource); + + /* + * Try reading the datasource + */ + $read_datasource = true; + try{ + $model = $model = ResourcesModel::getInstance(); + $db_object = $model->readResource($TEST_PACKAGE_NAME,$TEST_RESOURCE_NAME,array(),array()); + + // Lets get the first rowobject and compare some values. + // Clayton;Ap #630-7719 Scelerisque Road;ac.arcu@facilisismagna.ca;Pierre + $object1 = array_shift($db_object); + $this->assertEquals("Yoshi",$object1->Name); + $this->assertEquals("Weber",$object1->Surname); + $this->assertEquals("Lakewood",$object1->City); + $this->assertEquals("6435",$object1->Income); + + }catch(Exception $ex){ + $read_datasource = false; + } + + $this->assertTrue($read_datasource); + + /* + * Try deleting the resource + */ + $delete_datasource = true; + try{ + $model = ResourcesModel::getInstance(); + $model->deleteResource($TEST_PACKAGE_NAME, $TEST_RESOURCE_NAME,array()); + }catch(Exception $ex){ + $delete_datasource = false; + } + + $this->assertTrue($delete_datasource); } } \ No newline at end of file diff --git a/tests/data/test_data.sql b/tests/data/test_data.sql new file mode 100644 index 00000000..701a2230 --- /dev/null +++ b/tests/data/test_data.sql @@ -0,0 +1,210 @@ +CREATE TABLE test_table ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `Name` varchar(255) default NULL, + `Surname` varchar(255) default NULL, + `City` varchar(50) default NULL, + `Income` varchar(50) default NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=1; + + +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Yoshi','Weber','Lakewood','6435'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Patricia','Hickman','Sitka','2344'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ross','Hewitt','Hammond','6797'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Yolanda','Haney','Glendora','3099'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kalia','Mayo','Lowell','1538'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Arden','Pollard','Rialto','4368'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Graiden','Howe','Idaho Falls','1880'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Xanthus','Craft','Newport','7672'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Carl','Brooks','Plymouth','7390'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kaye','Luna','Asheville','3719'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Xanthus','Hayes','Chattanooga','7662'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Randall','Kemp','Concord','3402'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ashely','Patel','Fond du Lac','2355'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ira','Barton','Modesto','6707'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Josephine','Witt','Stafford','4519'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Chastity','Justice','International Falls','3778'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Leslie','Burris','Eatontown','2264'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Michael','Fleming','La Cañada Flintridge','5655'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Nathan','Melton','Morgan City','4597'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Blaze','Robertson','Rutland','2658'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('John','Bernard','Franklin','7526'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Branden','Stuart','Pulaski','5470'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Solomon','Mccray','Beloit','1850'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Aubrey','Keith','Huntington Park','5833'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Luke','Navarro','San Antonio','3340'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Whitney','Dodson','Vancouver','5705'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Signe','Knowles','Butler','7784'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Elizabeth','Tanner','Cedar Rapids','6562'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Winter','Huff','Plano','1986'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Galena','Holland','Pass Christian','2815'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Alana','Reyes','Eatontown','2122'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Deacon','Navarro','Rolla','7100'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Fiona','Lowery','Cedar Falls','3288'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Rebecca','Berger','Vancouver','5710'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Lars','Bartlett','New Brunswick','7132'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Vielka','Reilly','Northampton','7337'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Colin','Good','Wilkes-Barre','5087'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Raven','Myers','Roanoke','6742'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Idona','Allen','Truth or Consequences','5849'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Micah','Newton','Manitowoc','7953'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Cody','Norris','Elkhart','1502'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Pandora','Collins','Norwich','3569'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Damon','Eaton','College Station','2623'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Alana','Sellers','Bell','3035'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Chaney','Barron','San Dimas','7780'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Neve','Lopez','Saginaw','2289'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kirby','Norman','San Francisco','2953'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Gannon','Gallagher','Dana Point','5076'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Zeus','Joyner','Mequon','6300'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Mikayla','Cook','Barre','7409'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jameson','Dillon','Bessemer','4642'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ashton','Carver','Portsmouth','3141'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Christen','Knapp','Danville','7341'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Amos','Wright','Anaconda','5414'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Melyssa','Sampson','Seward','1532'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brooke','Barrera','Mesa','2332'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Keane','Brooks','Stillwater','2800'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Erich','Vazquez','Brigham City','6478'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Carolyn','Colon','Durham','3036'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Gary','Wilcox','Lawrence','5008'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jeremy','Patel','Kahului','4920'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Nelle','Humphrey','Calumet City','3869'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Dominic','Webster','Hartford','4103'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Zeus','Vega','Manhattan','4893'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ali','Hartman','Powell','3676'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ferdinand','Serrano','Bowie','4640'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Alana','Gonzales','Portsmouth','3873'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ferdinand','Craig','Tupelo','6667'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Tyler','Glass','Galesburg','5494'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Rhonda','Howe','Winnemucca','1955'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Hilda','Gomez','Laguna Beach','4096'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Dora','Zimmerman','Vancouver','3470'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Hedda','Morin','North Adams','6131'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jenette','Pratt','Coos Bay','4725'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Barclay','Valentine','Stanton','4144'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brett','Richard','Cortland','1755'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Blaze','Larson','Ogdensburg','7417'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Xerxes','Monroe','Winston-Salem','3941'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Yoshi','Howell','Saint Joseph','3149'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ivy','Pace','Methuen','6988'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Gareth','Conner','Mesquite','6792'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Venus','Ratliff','Franklin','1639'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Meredith','Christensen','Jeffersonville','6640'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Victoria','Miranda','Shelton','1800'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Camden','Joyce','West Jordan','2311'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Breanna','Waller','Little Rock','2132'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Haviva','Everett','Green Bay','6945'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Xenos','Trujillo','Parma','3521'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Bethany','Dickerson','Caguas','1734'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Zena','Holman','Barrow','5778'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Lois','Juarez','Kenosha','5035'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brandon','Farmer','Moultrie','3243'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Priscilla','Lowery','Holyoke','7214'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jillian','Tate','Williston','7160'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Casey','Garner','Plattsburgh','2407'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Damon','Harrell','Kent','3697'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Maia','Maynard','Haverhill','5525'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Adena','Holden','Eugene','5514'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Tyrone','Pickett','Chicago Heights','1712'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Abra','Rasmussen','Forest Lake','6491'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Emery','Osborne','Norton','6576'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Leilani','Meyers','Ocean City','6408'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Wayne','Gray','Tok','2707'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Perry','Glover','Malibu','3958'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Unity','Thomas','Yukon','7556'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Francesca','Evans','Menomonee Falls','3102'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Aaron','Patton','Evanston','1537'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jana','Mccall','Saint Albans','6438'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Dorian','Hicks','Maywood','7093'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Amber','Combs','New Castle','7960'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kiona','Knox','Cleveland','3459'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Shelly','Parks','Parker','6544'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Lillith','Norton','Plattsburgh','7547'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Wesley','Duncan','Clarksville','7689'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Xantha','Huffman','West Memphis','4290'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Allen','Poole','Columbus','3510'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Calvin','Pitts','Cincinnati','2766'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Unity','Rodriguez','Columbus','4574'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Emerald','Gross','Saint Cloud','2478'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ashton','Hudson','Vicksburg','5868'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brody','Montoya','Nanticoke','2033'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Tanek','Roberson','Arvada','7079'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Damian','Wright','Fallon','3257'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Odysseus','Jimenez','Monterey Park','7186'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Clayton','Randall','Beckley','2326'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kelly','Dunn','Nacogdoches','6894'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Magee','Hahn','Winston-Salem','6031'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Samantha','Trevino','Harrisburg','7732'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kenyon','Wilkerson','Atlanta','4306'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Perry','Blackwell','Farmer City','7899'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Armando','Mays','Easton','6634'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Angelica','Sharp','Orangeburg','3187'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Lee','Potter','High Point','2269'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Zenaida','Woodard','Webster Groves','5517'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Graham','Villarreal','Fresno','2728'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Sawyer','Oliver','Centennial','3944'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Maxwell','Collier','Santa Fe','4131'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Destiny','Bray','Hilo','3642'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Mira','Morin','Buffalo','6238'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jerome','Rocha','Worland','1903'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Karyn','Hale','Clovis','4814'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Graiden','Byrd','Calumet City','6199'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Anne','Hopper','Union City','7301'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brielle','Bender','Elko','6582'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Davis','Blake','Colorado Springs','4820'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Cathleen','Maynard','Sitka','7017'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Connor','West','Monrovia','6036'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Patience','Martinez','Rocky Mount','3198'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Vivian','Walters','Sacramento','3470'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Arthur','Thornton','Ansonia','2320'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Garrison','Walls','Ames','4547'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Zia','Finley','East Hartford','3092'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Grant','Holt','Rock Island','4991'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Adrian','Mcguire','Hidden Hills','3008'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kitra','Whitehead','Vincennes','3444'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Keelie','Orr','Miami Gardens','4559'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Maisie','Gates','Saint Cloud','6043'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Dai','Rowland','Seward','5221'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Owen','Short','Atlantic City','6276'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brody','Fitzpatrick','Winooski','4713'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Oprah','Potts','Arlington','6320'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Freya','Hester','Williamsburg','7267'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Hanna','Townsend','Colorado Springs','7414'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Lester','Ramirez','Helena','2950'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Aurelia','Casey','Vancouver','3504'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Whitney','Ramos','Taunton','5994'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Leroy','Vaughn','Jeannette','6195'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Colette','Hebert','Dana Point','7630'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Cade','Dotson','Pasco','4573'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Melvin','Myers','Guthrie','1795'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kylee','Lowery','West Hollywood','2507'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Elliott','Gibbs','Hazleton','3908'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jolie','Ford','Paramount','4384'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Amethyst','Mann','Cape May','5652'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jesse','Marks','Hackensack','6025'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Xantha','Mays','North Charleston','2204'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Sade','Galloway','Montgomery','4690'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Yoshio','Walton','Marshfield','5034'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Joelle','Kelley','Pico Rivera','6569'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Salvador','Blake','Chandler','3562'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Hamish','Sellers','Rohnert Park','4261'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Hayden','Terry','Bay St. Louis','7160'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jaime','Hinton','Milwaukee','4258'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Abdul','Cotton','Marietta','6883'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Keelie','Buckley','Gadsden','4825'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Anika','Snider','Bangor','5025'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Genevieve','Ray','Gallup','2631'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Sandra','Jefferson','Lawton','2851'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Erasmus','Drake','Nogales','5985'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Calista','Pace','Michigan City','5437'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brenna','Byers','Ardmore','2302'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Fuller','Marquez','West Bend','7110'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Miranda','Erickson','Haverhill','6256'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Briar','Hogan','Erie','4569'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Charde','Mcgowan','Norton','1593'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Arsenio','Campbell','Dayton','3900'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Hayfa','Snider','Basin','4999'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kiona','Merrill','Cedar City','5871'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Pearl','Church','San Marino','2028'); +INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Otto','Ramos','Watervliet','4185'); \ No newline at end of file From 811007d41cd30fd72f9ccca2a79129f8371bf770 Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Thu, 24 Jan 2013 17:21:33 +0100 Subject: [PATCH 06/18] Temporarily changed the branch of travis to testing. This should give us the so much loved green passing icon. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d5b9f8b0..e69a9a29 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # tdt/core -[![Build Status](https://travis-ci.org/tdt/core.png?branch=master)](undefined) +[![Build Status](https://travis-ci.org/tdt/core.png?branch=testing)](undefined) # Installation From efcba78f798765926c37cb7295401bf5fa6a43e7 Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Thu, 24 Jan 2013 18:58:48 +0100 Subject: [PATCH 07/18] Finding out what went wrong with the database on travis. --- tests/APITest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/APITest.php b/tests/APITest.php index e11a9cc6..53dbb107 100644 --- a/tests/APITest.php +++ b/tests/APITest.php @@ -145,7 +145,8 @@ public function testDB(){ $this->assertEquals("Lakewood",$object1->City); $this->assertEquals("6435",$object1->Income); - }catch(Exception $ex){ + }catch(Exception $ex){ + var_dump($e->getTrace()); $read_datasource = false; } From 492cf2276fe730b79ed8fa67c88f1204ffa88db2 Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Thu, 24 Jan 2013 19:23:14 +0100 Subject: [PATCH 08/18] Adding another dump of the stacktrace. --- tests/APITest.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/APITest.php b/tests/APITest.php index 53dbb107..5bcfd458 100644 --- a/tests/APITest.php +++ b/tests/APITest.php @@ -123,7 +123,8 @@ public function testDB(){ try{ $model = ResourcesModel::getInstance(); $model->createResource($TEST_PACKAGE_NAME . "/" . $TEST_RESOURCE_NAME,$parameters); - }catch(Exception $ex){ + }catch(Exception $ex){ + var_dump($ex->getTrace()); $create_resource = false; } @@ -146,7 +147,7 @@ public function testDB(){ $this->assertEquals("6435",$object1->Income); }catch(Exception $ex){ - var_dump($e->getTrace()); + var_dump($ex->getTrace()); $read_datasource = false; } From 8fd6e36c3e82b59a157a2e6c8596916eff6cc854 Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Fri, 25 Jan 2013 10:03:18 +0100 Subject: [PATCH 09/18] Changed sql dump to a sql injection via redbean. --- tests/APITest.php | 60 ++++++++--- tests/data/test_data.sql | 210 --------------------------------------- 2 files changed, 46 insertions(+), 224 deletions(-) delete mode 100644 tests/data/test_data.sql diff --git a/tests/APITest.php b/tests/APITest.php index 5bcfd458..4f491248 100644 --- a/tests/APITest.php +++ b/tests/APITest.php @@ -11,6 +11,7 @@ use tdt\core\utility\Config; use tdt\core\model\ResourcesModel; +use RedBean_Facade as R; class APITest extends \PHPUnit_Framework_TestCase { @@ -98,21 +99,29 @@ public function testCSV() { public function testDB(){ + $TEST_PACKAGE_NAME = "UNITTESTDB"; $TEST_RESOURCE_NAME = "db1"; + $DB_HOST = "localhost"; + $DB_USER = "root"; + $DB_PASSWORD = ""; + $DB_NAME = "myapp_test"; + $DB_TABLE = "test_table"; + $DB_TYPE = "mysql"; + /* * Pass along the database parameters leading to the test data */ $parameters = array( 'documentation' => "This is a test case for unittesting a DB resource.", 'resource_type' => "generic/DB", - 'db_table' => "test_table", - 'location' => "localhost", - 'username' => "root", + 'db_table' => $DB_TABLE, + 'location' => $DB_HOST, + 'username' => $DB_USER, 'password' => "", - 'db_name' => "myapp_test", - 'db_type' => "MySQL" + 'db_name' => $DB_NAME, + 'db_type' => $DB_TYPE ); @@ -121,6 +130,24 @@ public function testDB(){ */ $create_resource = true; try{ + + /* + * Add some data to the datatable first + * using RedBean. + */ + + R::setup($DB_TYPE . ":host=" . $DB_HOST . ";dbname=" . $DB_NAME, $DB_USER, ""); + $person = R::dispense($DB_TABLE); + $person->Name = "Reginald"; + $person->Surname = "TSM"; + $person->City = "San Francisco"; + $person->Income = "9000"; + R::store($person); + + /* + * Create the resource definition of the datatable + */ + $model = ResourcesModel::getInstance(); $model->createResource($TEST_PACKAGE_NAME . "/" . $TEST_RESOURCE_NAME,$parameters); }catch(Exception $ex){ @@ -133,18 +160,23 @@ public function testDB(){ /* * Try reading the datasource */ + $read_datasource = true; - try{ - $model = $model = ResourcesModel::getInstance(); - $db_object = $model->readResource($TEST_PACKAGE_NAME,$TEST_RESOURCE_NAME,array(),array()); + try{ - // Lets get the first rowobject and compare some values. - // Clayton;Ap #630-7719 Scelerisque Road;ac.arcu@facilisismagna.ca;Pierre + /* + * Access the model to read the datasource + */ + $model = $model = ResourcesModel::getInstance(); + $db_object = $model->readResource($TEST_PACKAGE_NAME,$TEST_RESOURCE_NAME,array(),array()); + + // Lets get the object that we injected in the data table and check if it matches $object1 = array_shift($db_object); - $this->assertEquals("Yoshi",$object1->Name); - $this->assertEquals("Weber",$object1->Surname); - $this->assertEquals("Lakewood",$object1->City); - $this->assertEquals("6435",$object1->Income); + + $this->assertEquals("Reginald",$object1->Name); + $this->assertEquals("TSM",$object1->Surname); + $this->assertEquals("San Francisco",$object1->City); + $this->assertEquals("9000",$object1->Income); }catch(Exception $ex){ var_dump($ex->getTrace()); diff --git a/tests/data/test_data.sql b/tests/data/test_data.sql deleted file mode 100644 index 701a2230..00000000 --- a/tests/data/test_data.sql +++ /dev/null @@ -1,210 +0,0 @@ -CREATE TABLE test_table ( - `id` mediumint(8) unsigned NOT NULL auto_increment, - `Name` varchar(255) default NULL, - `Surname` varchar(255) default NULL, - `City` varchar(50) default NULL, - `Income` varchar(50) default NULL, - PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=1; - - -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Yoshi','Weber','Lakewood','6435'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Patricia','Hickman','Sitka','2344'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ross','Hewitt','Hammond','6797'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Yolanda','Haney','Glendora','3099'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kalia','Mayo','Lowell','1538'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Arden','Pollard','Rialto','4368'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Graiden','Howe','Idaho Falls','1880'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Xanthus','Craft','Newport','7672'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Carl','Brooks','Plymouth','7390'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kaye','Luna','Asheville','3719'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Xanthus','Hayes','Chattanooga','7662'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Randall','Kemp','Concord','3402'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ashely','Patel','Fond du Lac','2355'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ira','Barton','Modesto','6707'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Josephine','Witt','Stafford','4519'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Chastity','Justice','International Falls','3778'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Leslie','Burris','Eatontown','2264'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Michael','Fleming','La Cañada Flintridge','5655'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Nathan','Melton','Morgan City','4597'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Blaze','Robertson','Rutland','2658'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('John','Bernard','Franklin','7526'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Branden','Stuart','Pulaski','5470'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Solomon','Mccray','Beloit','1850'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Aubrey','Keith','Huntington Park','5833'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Luke','Navarro','San Antonio','3340'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Whitney','Dodson','Vancouver','5705'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Signe','Knowles','Butler','7784'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Elizabeth','Tanner','Cedar Rapids','6562'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Winter','Huff','Plano','1986'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Galena','Holland','Pass Christian','2815'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Alana','Reyes','Eatontown','2122'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Deacon','Navarro','Rolla','7100'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Fiona','Lowery','Cedar Falls','3288'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Rebecca','Berger','Vancouver','5710'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Lars','Bartlett','New Brunswick','7132'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Vielka','Reilly','Northampton','7337'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Colin','Good','Wilkes-Barre','5087'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Raven','Myers','Roanoke','6742'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Idona','Allen','Truth or Consequences','5849'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Micah','Newton','Manitowoc','7953'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Cody','Norris','Elkhart','1502'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Pandora','Collins','Norwich','3569'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Damon','Eaton','College Station','2623'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Alana','Sellers','Bell','3035'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Chaney','Barron','San Dimas','7780'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Neve','Lopez','Saginaw','2289'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kirby','Norman','San Francisco','2953'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Gannon','Gallagher','Dana Point','5076'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Zeus','Joyner','Mequon','6300'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Mikayla','Cook','Barre','7409'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jameson','Dillon','Bessemer','4642'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ashton','Carver','Portsmouth','3141'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Christen','Knapp','Danville','7341'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Amos','Wright','Anaconda','5414'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Melyssa','Sampson','Seward','1532'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brooke','Barrera','Mesa','2332'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Keane','Brooks','Stillwater','2800'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Erich','Vazquez','Brigham City','6478'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Carolyn','Colon','Durham','3036'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Gary','Wilcox','Lawrence','5008'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jeremy','Patel','Kahului','4920'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Nelle','Humphrey','Calumet City','3869'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Dominic','Webster','Hartford','4103'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Zeus','Vega','Manhattan','4893'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ali','Hartman','Powell','3676'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ferdinand','Serrano','Bowie','4640'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Alana','Gonzales','Portsmouth','3873'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ferdinand','Craig','Tupelo','6667'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Tyler','Glass','Galesburg','5494'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Rhonda','Howe','Winnemucca','1955'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Hilda','Gomez','Laguna Beach','4096'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Dora','Zimmerman','Vancouver','3470'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Hedda','Morin','North Adams','6131'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jenette','Pratt','Coos Bay','4725'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Barclay','Valentine','Stanton','4144'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brett','Richard','Cortland','1755'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Blaze','Larson','Ogdensburg','7417'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Xerxes','Monroe','Winston-Salem','3941'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Yoshi','Howell','Saint Joseph','3149'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ivy','Pace','Methuen','6988'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Gareth','Conner','Mesquite','6792'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Venus','Ratliff','Franklin','1639'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Meredith','Christensen','Jeffersonville','6640'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Victoria','Miranda','Shelton','1800'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Camden','Joyce','West Jordan','2311'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Breanna','Waller','Little Rock','2132'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Haviva','Everett','Green Bay','6945'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Xenos','Trujillo','Parma','3521'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Bethany','Dickerson','Caguas','1734'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Zena','Holman','Barrow','5778'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Lois','Juarez','Kenosha','5035'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brandon','Farmer','Moultrie','3243'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Priscilla','Lowery','Holyoke','7214'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jillian','Tate','Williston','7160'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Casey','Garner','Plattsburgh','2407'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Damon','Harrell','Kent','3697'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Maia','Maynard','Haverhill','5525'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Adena','Holden','Eugene','5514'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Tyrone','Pickett','Chicago Heights','1712'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Abra','Rasmussen','Forest Lake','6491'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Emery','Osborne','Norton','6576'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Leilani','Meyers','Ocean City','6408'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Wayne','Gray','Tok','2707'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Perry','Glover','Malibu','3958'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Unity','Thomas','Yukon','7556'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Francesca','Evans','Menomonee Falls','3102'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Aaron','Patton','Evanston','1537'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jana','Mccall','Saint Albans','6438'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Dorian','Hicks','Maywood','7093'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Amber','Combs','New Castle','7960'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kiona','Knox','Cleveland','3459'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Shelly','Parks','Parker','6544'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Lillith','Norton','Plattsburgh','7547'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Wesley','Duncan','Clarksville','7689'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Xantha','Huffman','West Memphis','4290'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Allen','Poole','Columbus','3510'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Calvin','Pitts','Cincinnati','2766'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Unity','Rodriguez','Columbus','4574'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Emerald','Gross','Saint Cloud','2478'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Ashton','Hudson','Vicksburg','5868'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brody','Montoya','Nanticoke','2033'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Tanek','Roberson','Arvada','7079'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Damian','Wright','Fallon','3257'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Odysseus','Jimenez','Monterey Park','7186'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Clayton','Randall','Beckley','2326'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kelly','Dunn','Nacogdoches','6894'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Magee','Hahn','Winston-Salem','6031'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Samantha','Trevino','Harrisburg','7732'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kenyon','Wilkerson','Atlanta','4306'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Perry','Blackwell','Farmer City','7899'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Armando','Mays','Easton','6634'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Angelica','Sharp','Orangeburg','3187'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Lee','Potter','High Point','2269'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Zenaida','Woodard','Webster Groves','5517'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Graham','Villarreal','Fresno','2728'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Sawyer','Oliver','Centennial','3944'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Maxwell','Collier','Santa Fe','4131'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Destiny','Bray','Hilo','3642'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Mira','Morin','Buffalo','6238'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jerome','Rocha','Worland','1903'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Karyn','Hale','Clovis','4814'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Graiden','Byrd','Calumet City','6199'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Anne','Hopper','Union City','7301'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brielle','Bender','Elko','6582'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Davis','Blake','Colorado Springs','4820'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Cathleen','Maynard','Sitka','7017'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Connor','West','Monrovia','6036'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Patience','Martinez','Rocky Mount','3198'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Vivian','Walters','Sacramento','3470'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Arthur','Thornton','Ansonia','2320'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Garrison','Walls','Ames','4547'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Zia','Finley','East Hartford','3092'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Grant','Holt','Rock Island','4991'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Adrian','Mcguire','Hidden Hills','3008'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kitra','Whitehead','Vincennes','3444'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Keelie','Orr','Miami Gardens','4559'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Maisie','Gates','Saint Cloud','6043'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Dai','Rowland','Seward','5221'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Owen','Short','Atlantic City','6276'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brody','Fitzpatrick','Winooski','4713'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Oprah','Potts','Arlington','6320'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Freya','Hester','Williamsburg','7267'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Hanna','Townsend','Colorado Springs','7414'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Lester','Ramirez','Helena','2950'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Aurelia','Casey','Vancouver','3504'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Whitney','Ramos','Taunton','5994'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Leroy','Vaughn','Jeannette','6195'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Colette','Hebert','Dana Point','7630'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Cade','Dotson','Pasco','4573'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Melvin','Myers','Guthrie','1795'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kylee','Lowery','West Hollywood','2507'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Elliott','Gibbs','Hazleton','3908'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jolie','Ford','Paramount','4384'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Amethyst','Mann','Cape May','5652'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jesse','Marks','Hackensack','6025'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Xantha','Mays','North Charleston','2204'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Sade','Galloway','Montgomery','4690'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Yoshio','Walton','Marshfield','5034'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Joelle','Kelley','Pico Rivera','6569'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Salvador','Blake','Chandler','3562'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Hamish','Sellers','Rohnert Park','4261'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Hayden','Terry','Bay St. Louis','7160'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Jaime','Hinton','Milwaukee','4258'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Abdul','Cotton','Marietta','6883'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Keelie','Buckley','Gadsden','4825'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Anika','Snider','Bangor','5025'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Genevieve','Ray','Gallup','2631'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Sandra','Jefferson','Lawton','2851'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Erasmus','Drake','Nogales','5985'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Calista','Pace','Michigan City','5437'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Brenna','Byers','Ardmore','2302'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Fuller','Marquez','West Bend','7110'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Miranda','Erickson','Haverhill','6256'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Briar','Hogan','Erie','4569'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Charde','Mcgowan','Norton','1593'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Arsenio','Campbell','Dayton','3900'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Hayfa','Snider','Basin','4999'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Kiona','Merrill','Cedar City','5871'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Pearl','Church','San Marino','2028'); -INSERT INTO `test_table` (`Name`,`Surname`,`City`,`Income`) VALUES ('Otto','Ramos','Watervliet','4185'); \ No newline at end of file From ca8657172a0fa034abbd91786465c8339aa239f1 Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Fri, 25 Jan 2013 10:21:14 +0100 Subject: [PATCH 10/18] Added a test for the JSON reader, found and fixed a bug in JSON. --- src/tdt/core/strategies/JSON.php | 5 ++- tests/APITest.php | 71 +++++++++++++++++++++++++++++++- 2 files changed, 72 insertions(+), 4 deletions(-) diff --git a/src/tdt/core/strategies/JSON.php b/src/tdt/core/strategies/JSON.php index 8842be51..992cff83 100755 --- a/src/tdt/core/strategies/JSON.php +++ b/src/tdt/core/strategies/JSON.php @@ -13,16 +13,17 @@ use tdt\core\model\resources\AResourceStrategy; use tdt\exceptions\TDTException; +use tdt\core\utility\Request; class JSON extends AResourceStrategy { public function read(&$configObject, $package, $resource) { - $data = \tdt\framework\Request::http($configObject->uri); + $data = Request::http($configObject->uri); return json_decode($data->data); } public function isValid($package_id, $generic_resource_id) { - $data = \tdt\framework\Request::http($this->uri); + $data = Request::http($this->uri); $result = json_decode($data->data); if (!$result) { $exception_config = array(); diff --git a/tests/APITest.php b/tests/APITest.php index 4f491248..56268d93 100644 --- a/tests/APITest.php +++ b/tests/APITest.php @@ -33,8 +33,8 @@ public function __construct() { } /* - * Test function to check if a CSV file is added and removed correctly - * and in between can be read as well in a correct way. + * Test function to check if a CSV strategy is working correctly. + * Tests: Create,Read,Delete */ public function testCSV() { @@ -97,6 +97,10 @@ public function testCSV() { $this->assertTrue($delete_datasource); } + /* + * Test function to check if the DB strategy is working correctly. + * Tests: Create,Read,Delete + */ public function testDB(){ @@ -150,6 +154,7 @@ public function testDB(){ $model = ResourcesModel::getInstance(); $model->createResource($TEST_PACKAGE_NAME . "/" . $TEST_RESOURCE_NAME,$parameters); + }catch(Exception $ex){ var_dump($ex->getTrace()); $create_resource = false; @@ -199,4 +204,66 @@ public function testDB(){ $this->assertTrue($delete_datasource); } + /* + * Test function to check if the JSON strategy is working correctly + * Tests: Create,Read,Delete + */ + public function testJSON(){ + + $TEST_PACKAGE_NAME = "UNITTESTJSON"; + $TEST_RESOURCE_NAME = "json1"; + + $parameters = array( + 'documentation' => "This is a test case for unittesting a JSON resource.", + 'resource_type' => "generic/JSON", + 'uri' => "http://demo.thedatatank.org/TDTInfo/Resources.json" + ); + + /* + * Try creating a resource, if anything fails, the test fails + */ + $create_resource = true; + try{ + $model = ResourcesModel::getInstance(); + $model->createResource($TEST_PACKAGE_NAME . "/" . $TEST_RESOURCE_NAME,$parameters); + }catch(Exception $ex){ + $create_resource = false; + } + + $this->assertTrue($create_resource); + + /* + * Try reading the datasource + */ + $read_datasource = true; + try{ + $model = $model = ResourcesModel::getInstance(); + $json_object = $model->readResource($TEST_PACKAGE_NAME,$TEST_RESOURCE_NAME,array(),array()); + + if(!is_object($json_object->Resources)){ + $read_datasource = false; + } + + + }catch(Exception $ex){ + $read_datasource = false; + } + + $this->assertTrue($read_datasource); + + /* + * Try deleting the resource + */ + $delete_datasource = true; + try{ + $model = ResourcesModel::getInstance(); + $model->deleteResource($TEST_PACKAGE_NAME, $TEST_RESOURCE_NAME,array()); + }catch(Exception $ex){ + $delete_datasource = false; + } + + $this->assertTrue($delete_datasource); + + } + } \ No newline at end of file From 04490665051379f82d304a45dbee0667073c7ec3 Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Fri, 25 Jan 2013 16:29:53 +0100 Subject: [PATCH 11/18] Added first code of the statistics resource. Some more testing needs to be done though. --- src/tdt/core/model/CoreResourceFactory.php | 2 +- .../packages/TDTInfo/TDTInfoResources.php | 4 +- .../packages/TDTInfo/TDTInfoStatistics.php | 166 +++++++++++++++++ src/tdt/core/utility/ApacheLogParser.php | 174 ++++++++++++++++++ 4 files changed, 342 insertions(+), 4 deletions(-) create mode 100644 src/tdt/core/model/packages/TDTInfo/TDTInfoStatistics.php create mode 100644 src/tdt/core/utility/ApacheLogParser.php diff --git a/src/tdt/core/model/CoreResourceFactory.php b/src/tdt/core/model/CoreResourceFactory.php index c312b7b4..d436f77a 100755 --- a/src/tdt/core/model/CoreResourceFactory.php +++ b/src/tdt/core/model/CoreResourceFactory.php @@ -18,7 +18,7 @@ public function __construct() { } protected function getAllResourceNames() { - return array("TDTInfo" => array("Resources", "Packages", "Exceptions", "Admin", "Formatters", "Visualizations"), + return array("TDTInfo" => array("Resources", "Packages", "Exceptions", "Admin", "Formatters", "Visualizations","Statistics"), "TDTAdmin" => array("Resources", "Export") ); } diff --git a/src/tdt/core/model/packages/TDTInfo/TDTInfoResources.php b/src/tdt/core/model/packages/TDTInfo/TDTInfoResources.php index 3606aff3..d8a51737 100755 --- a/src/tdt/core/model/packages/TDTInfo/TDTInfoResources.php +++ b/src/tdt/core/model/packages/TDTInfo/TDTInfoResources.php @@ -40,6 +40,4 @@ public static function getDoc() { return "This resource contains the documentation of all resources."; } -} - -?> +} \ No newline at end of file diff --git a/src/tdt/core/model/packages/TDTInfo/TDTInfoStatistics.php b/src/tdt/core/model/packages/TDTInfo/TDTInfoStatistics.php new file mode 100644 index 00000000..b98dbefb --- /dev/null +++ b/src/tdt/core/model/packages/TDTInfo/TDTInfoStatistics.php @@ -0,0 +1,166 @@ + + * @author Jan Vansteenlandt + */ + +namespace tdt\core\model\packages\TDTInfo; + +use tdt\core\model\resources\read\AReader; +use tdt\core\model\ResourcesModel; +use tdt\core\utility\Config; +use tdt\core\utility\ApacheLogParser; + +class TDTInfoStatistics extends AReader { + + private $resourcestring = "TDTAdmin/Resources"; + private $date = ""; + + public function __construct(){ + + } + + public static function getParameters() { + return array("resourcestring" => "A full packageresource string identifying a resource of which you want to get some statistics from, by default TDTAdmin/Resources.", + "date" => "The date to start the timeframe from, by default it's filled in with the current date. Use the format used by apache access log which is day in 2 digits, month in 3 letters, year in 4 digits i.e. 01/Feb/2008." ); + } + + public static function getRequiredParameters() { + return array(); + } + + public function setParameter($key, $val) { + $this->$key = $val; + if($key == "date"){ + $this->date = $val; + } + } + + public function read() { + + if($this->date == ""){ + + /* + * Set the default date to today in the correct format. + */ + $timezone = Config::get("general","timezone"); + date_default_timezone_set($timezone); + $this->date = date('d/M/Y', time()); + } + + $array_of_days = array(); + + $apache_accesslog = Config::get("general","accesslogapache"); + $apache_logformat = Config::get("general","apachelogformat"); + $log_parser = new ApacheLogParser($apache_accesslog,$apache_logformat); + + /* + * Get the data per day from the given date. + */ + $timeframe = 3; + + for($i=0; $i<$timeframe;$i++){ + + /* + * Prepare day + */ + + $date = \DateTime::createFromFormat("d/M/Y",$this->date); + $interval = 'P'.$i.'D'; + $date->add(new \DateInterval($interval)); + $day = $date->format('d/M/Y'); + + $filters = array( 'path' => array('regex' => "#.*$this->resourcestring.*#"), 'date' => array('regex' => '#'.$day.'#')); + $array_of_days[$day] = $this->initializeDayObject(); + + /* + * Set the filters of the log parser + */ + $log_parser->filters = $filters; + + /* + * Get the data for the given timeframe + * Take into account the default limit of 50! and if + * there are more get them as well + */ + $result_set = $log_parser->getData(); + + $day_fully_parsed = FALSE; + $amount_of_hits_parsed = 0; + + while(!$day_fully_parsed && count($result_set->lines) > 0){ + + $amount_of_hits_parsed+= count($result_set->lines); + + /* + * Parse the data into array_of_days + */ + foreach($result_set->lines as $line){ + + /* + * Count Request header + */ + $method = $line["method"]; + if(isset($array_of_days[$day]->$method)){ + $array_of_days[$day]->$method++; + } + + /* + * Add the path as a hit and put count to 1 + * If it exists already just increment the hit + */ + $path = $line["path"]; + if(isset($array_of_days[$day]->hits[$path])){ + $array_of_days[$day]->hits[$path]->$method++; + }else{ + $array_of_days[$day]->hits[$path]->$method = 1; + } + + } + + /* + * Check if more hits are to be parsed! + */ + if($result_set->hits > $amount_of_hits_parsed){ + $result_set = $log_parser->getData(ApacheLogParser::$DEFAULT_LIMIT,$amount_of_hits_parsed); + }else{ + $day_fully_parsed = true; + } + + } + } + return $array_of_days; + } + + private function initializeDayObject(){ + $day = new \stdClass(); + $day->GET = 0; + $day->PUT = 0; + $day->DELETE = 0; + $day->hits = array(); + return $day; + } + + public static function getDoc() { + return "This resource performs some statistical functionality on the apache access.log file. It will return statistical data in a weekly timeframe starting from the date you enter."; + } + +} \ No newline at end of file diff --git a/src/tdt/core/utility/ApacheLogParser.php b/src/tdt/core/utility/ApacheLogParser.php new file mode 100644 index 00000000..c719d468 --- /dev/null +++ b/src/tdt/core/utility/ApacheLogParser.php @@ -0,0 +1,174 @@ + array('regex' => 'YOUR_REGEX')) + * @var array + */ + public $filters = FALSE; + + /* + * What formatting regular expression to use, currently supported are the common and combined logging format + * @var string + */ + private $format; + + /* + * Regular expressions for the supported formats + * @var $array + */ + private $regular_expressions = array( + 'common' => "/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) (.*) (.*) \[(.*):(\d{2}:\d{2}:\d{2}) (.*\d{4})\] \"(.*) (.*) (.*\/.*)\" (\d{3}) (.*)$/", + 'combined' => "/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) (.*) (.*) \[(.*):(\d{2}:\d{2}:\d{2}) (.*\d{4})\] \"(.*) (.*) (.*\/.*)\" (\d{3}) (.*) \"(.*)\" \"(.*)\"$/" + ); + + /** + * Constructor + * @param string $file + * @param string format The format the apace access.log is formatted by + * @return void + */ + public function __construct($file, $format="common"){ + if(!is_readable($file)){ + throw new TDTException(500,array("Logfile given, $file, could not be resolved or found.")); + } + + $this->format = $format; + $this->file = $file; + } + + /** + * Executes the supplied filter to the string + * @param $filer + * @param $status + * @return string + */ + private function applyFilters($str){ + if(!$this->filters || !is_array($this->filters)){ + return $str; + } + + $str_passed_filters = true; + foreach($this->filters AS $area => $filter){ + if(!preg_match($filter['regex'], $str[$area], $matches, PREG_OFFSET_CAPTURE)){ + $str_passed_filters = false; + } + } + + if($str_passed_filters){ + return $str; + } + } + + /** + * Returns an array of all the filtered lines + * @param $limit + * @return array + */ + public function getData($limit = 50, $offset = 1){ + $handle = fopen($this->file, 'rb'); + if ($handle) { + $count = 1; + $lines = array(); + while (!feof($handle)) { + $buffer = fgets($handle); + // if line within limit, offset scope + + $data = $this->applyFilters($this->formatLine($buffer)); + + if($data){ + // count amount of hits. + $count++; + + // if the count is in the limit and offset, add it to the result array + if($count >= $offset && $count < $limit + $offset -1){ + $lines[] = $data; + } + } + } + } + fclose($handle); + + $resultObject = new \stdClass(); + $resultObject->hits = $count; + $resultObject->lines = $lines; + return $resultObject; + } + + /** + * Regex to parse the log file line + * @param string $line + * @return array + */ + function formatLogLine($line){ + $regex = $this->regular_expressions[$this->format]; + preg_match($regex, $line, $matches); // pattern to format the line + if(count($matches)==0){ + $log = new Logger('ApacheLogParser'); + $log->pushHandler(new StreamHandler(Config::get("general", "logging", "path") . "/log_" . date('Y-m-d') . ".txt", Logger::WARNING)); + $log->addWarning("No matches found, this could be because you didn't configure the logging format of your apache correctly in the passed configuration. Currently using format: $this->format."); + } + return $matches; + } + + /** + * Takes the format_log_line array and makes it usable to us stupid humans + * @param $line + * @return array + */ + function formatLine($line){ + $logs = $this->formatLogLine($line); // format the line + if (isset($logs[0])){ + $formated_log = array(); // make an array to store the lin info in + $formated_log['ip'] = $logs[1]; + $formated_log['identity'] = $logs[2]; + $formated_log['user'] = $logs[2]; + $formated_log['date'] = $logs[4]; + $formated_log['time'] = $logs[5]; + $formated_log['timezone'] = $logs[6]; + $formated_log['method'] = $logs[7]; + $formated_log['path'] = $logs[8]; + $formated_log['protocol'] = $logs[9]; + $formated_log['status'] = $logs[10]; + $formated_log['bytes'] = $logs[11]; + if($this->format == "combined"){ + $formated_log['referer'] = $logs[12]; + $formated_log['agent'] = $logs[13]; + } + + return $formated_log; // return the array of info + } + else{ + $this->badRows++; // if the row is not in the right format add it to the bad rows + return false; + } + } +} \ No newline at end of file From 3a6c70002c87e86dd3d84e7343512ff2c4bf20b9 Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Sat, 26 Jan 2013 11:07:57 +0100 Subject: [PATCH 12/18] Added some more functionality to the statistics, caching is now included. Fixed a small use bug in Request.php and switched the JSON example URI temporarily since testservers are offline. --- .../packages/TDTInfo/TDTInfoStatistics.php | 255 ++++++++++++------ src/tdt/core/utility/ApacheLogParser.php | 2 +- src/tdt/core/utility/Request.php | 1 + tests/APITest.php | 25 +- 4 files changed, 184 insertions(+), 99 deletions(-) diff --git a/src/tdt/core/model/packages/TDTInfo/TDTInfoStatistics.php b/src/tdt/core/model/packages/TDTInfo/TDTInfoStatistics.php index b98dbefb..ad2470c5 100644 --- a/src/tdt/core/model/packages/TDTInfo/TDTInfoStatistics.php +++ b/src/tdt/core/model/packages/TDTInfo/TDTInfoStatistics.php @@ -2,18 +2,18 @@ /** * This is a class which will return all the available resources along with the documentation of that resource in this DataTank - * + * * IMPORTANT NOTE!!! - * + * * Make sure to define your logging format used in your Apace configuration!! * common: - * + * * 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 - * + * * combined: - * + * * 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" - * + * * * @package The-Datatank/packages/TDTInfo * @copyright (C) 2011 by iRail vzw/asbl @@ -28,139 +28,216 @@ use tdt\core\model\ResourcesModel; use tdt\core\utility\Config; use tdt\core\utility\ApacheLogParser; +use tdt\cache\Cache; class TDTInfoStatistics extends AReader { private $resourcestring = "TDTAdmin/Resources"; private $date = ""; - public function __construct(){ - + public function __construct() { + } public static function getParameters() { - return array("resourcestring" => "A full packageresource string identifying a resource of which you want to get some statistics from, by default TDTAdmin/Resources.", - "date" => "The date to start the timeframe from, by default it's filled in with the current date. Use the format used by apache access log which is day in 2 digits, month in 3 letters, year in 4 digits i.e. 01/Feb/2008." ); + return array( "resourcestring" => "A full packageresource string identifying a resource of which you want to get some statistics from, by default TDTAdmin/Resources.", + "date" => "The date to start the timeframe from, by default it's filled in with the current date. Use the format used by apache access log which is day in 2 digits, month in 3 letters, year in 4 digits i.e. 01/Feb/2008." ); } public static function getRequiredParameters() { return array(); } - public function setParameter($key, $val) { - $this->$key = $val; - if($key == "date"){ + public function setParameter( $key, $val ) { + $this->$key = $val; + if ( $key == "date" ) { $this->date = $val; } } + /* + * Read the access log and parse the correct lines from it. + * Queries done for the passed days can be cached however! So + * lets check the cache first and then do the parsing. + */ public function read() { - if($this->date == ""){ - + if ( $this->date == "" ) { + /* * Set the default date to today in the correct format. */ - $timezone = Config::get("general","timezone"); - date_default_timezone_set($timezone); - $this->date = date('d/M/Y', time()); + $timezone = Config::get( "general", "timezone" ); + date_default_timezone_set( $timezone ); + $this->date = date( 'd/M/Y', time() ); } - $array_of_days = array(); - - $apache_accesslog = Config::get("general","accesslogapache"); - $apache_logformat = Config::get("general","apachelogformat"); - $log_parser = new ApacheLogParser($apache_accesslog,$apache_logformat); + if($this->checkCache()){ + return $this->checkCache(); + }else{ - /* - * Get the data per day from the given date. - */ - $timeframe = 3; + $array_of_days = array(); - for($i=0; $i<$timeframe;$i++){ + $apache_accesslog = Config::get( "general", "accesslogapache" ); + $apache_logformat = Config::get( "general", "apachelogformat" ); + $log_parser = new ApacheLogParser( $apache_accesslog, $apache_logformat ); /* - * Prepare day - */ - - $date = \DateTime::createFromFormat("d/M/Y",$this->date); - $interval = 'P'.$i.'D'; - $date->add(new \DateInterval($interval)); - $day = $date->format('d/M/Y'); + * Get the data per day from the given date. + * It has been foreseen in the code ( see for loop ) that + * multiple sequential dates can be asked for. However for ease of use + * and performance reasons, we're currently return the stats for just 1 day. ( timeframe = 1) + */ + $timeframe = 1; - $filters = array( 'path' => array('regex' => "#.*$this->resourcestring.*#"), 'date' => array('regex' => '#'.$day.'#')); - $array_of_days[$day] = $this->initializeDayObject(); + for ( $i=0; $i<$timeframe;$i++ ) { - /* - * Set the filters of the log parser - */ - $log_parser->filters = $filters; + /* + * Prepare day + */ - /* - * Get the data for the given timeframe - * Take into account the default limit of 50! and if - * there are more get them as well - */ - $result_set = $log_parser->getData(); + $date = \DateTime::createFromFormat( "d/M/Y", $this->date ); + $interval = 'P'.$i.'D'; + $date->add( new \DateInterval( $interval ) ); + $day = $date->format( 'd/M/Y' ); - $day_fully_parsed = FALSE; - $amount_of_hits_parsed = 0; + /* + * Prepare the filters to apply + */ + $filters = array( 'path' => array( 'regex' => "#.*$this->resourcestring.*#" ), 'date' => array( 'regex' => '#'.$day.'#' ) ); + $array_of_days[$day] = $this->initializeDayObject(); - while(!$day_fully_parsed && count($result_set->lines) > 0){ - - $amount_of_hits_parsed+= count($result_set->lines); + /* + * Set the filters of the log parser + */ + $log_parser->filters = $filters; /* - * Parse the data into array_of_days + * Get the data for the given timeframe + * Take into account the default limit of 50! and if + * there are more get them as well */ - foreach($result_set->lines as $line){ + $result_set = $log_parser->getData(); + + $day_fully_parsed = FALSE; + $amount_of_hits_parsed = 0; + + while ( !$day_fully_parsed && count( $result_set->lines ) > 0 ) { + + $amount_of_hits_parsed+= count( $result_set->lines ); /* - * Count Request header + * Parse the data into array_of_days */ - $method = $line["method"]; - if(isset($array_of_days[$day]->$method)){ - $array_of_days[$day]->$method++; + foreach ( $result_set->lines as $line ) { + + /* + * Count Request header + */ + $method = $line["method"]; + if ( isset( $array_of_days[$day]->$method ) ) { + $array_of_days[$day]->$method++; + } + + /* + * Add the path as a hit and put count to 1 + * If it exists already just increment the hit + */ + $path = $line["path"]; + if ( isset( $array_of_days[$day]->hits[$path] ) ) { + $array_of_days[$day]->hits[$path]->$method++; + }else { + $array_of_days[$day]->hits[$path]->$method = 1; + } + } - + /* - * Add the path as a hit and put count to 1 - * If it exists already just increment the hit + * Check if more hits are to be parsed! */ - $path = $line["path"]; - if(isset($array_of_days[$day]->hits[$path])){ - $array_of_days[$day]->hits[$path]->$method++; - }else{ - $array_of_days[$day]->hits[$path]->$method = 1; + if ( $result_set->hits > $amount_of_hits_parsed ) { + $result_set = $log_parser->getData( ApacheLogParser::$DEFAULT_LIMIT, $amount_of_hits_parsed ); + }else { + $day_fully_parsed = true; } } - - /* - * Check if more hits are to be parsed! - */ - if($result_set->hits > $amount_of_hits_parsed){ - $result_set = $log_parser->getData(ApacheLogParser::$DEFAULT_LIMIT,$amount_of_hits_parsed); - }else{ - $day_fully_parsed = true; - } - - } - } - return $array_of_days; + } + $c = Cache::getInstance($this->prepareCacheConfig()); + $c->set($this->buildCacheString(),$array_of_days, 604800); // cache it for a week. + return $array_of_days; } - private function initializeDayObject(){ - $day = new \stdClass(); - $day->GET = 0; - $day->PUT = 0; - $day->DELETE = 0; - $day->hits = array(); - return $day; + +} + + /** + * Builds a cache string based on the date and resourcestring + * + * @return string String that represents the date and resourcestring + */ + private function buildCacheString() { + return "STATISTICS__" .$this->resourcestring . "__" . $this->date; } - public static function getDoc() { - return "This resource performs some statistical functionality on the apache access.log file. It will return statistical data in a weekly timeframe starting from the date you enter."; + /** + * checkCache checks if the query has been set in the cache + * It will return FALSE when nothing is found OR when the date is 'today' + * because the access log can be changed during the current date + * so we prefer not to cache it, in order to return the correct result. + * @return cached_query_result|FALSE + */ + private function checkCache() { + + if($this->date == date( 'd/M/Y', time())){ + return FALSE; + } + + $c = Cache::getInstance($this->prepareCacheConfig()); + $cached_query = $c->get($this->buildCacheString()); + if(is_null($cached_query)){ + return FALSE; + }else{ + return $cached_query; + } + + /* + $doc = $c->get($this->hostname . $this->subdir . "documentation"); + if (is_null($doc)) { + $doc = new \stdClass(); + foreach ($factories as $factory) { + $factory->makeDoc($doc); + } + $c->set($this->hostname . $this->subdir . "documentation", $doc, 60 * 60 * 60); // cache it for 1 hour by default + */ + + } + + private function initializeDayObject() { + $day = new \stdClass(); + $day->GET = 0; + $day->PUT = 0; + $day->DELETE = 0; + $day->hits = array(); + return $day; + } + + public static function getDoc() { + return "This resource performs some statistical functionality on the apache access.log file. It will return statistical data in a weekly timeframe starting from the date you enter."; + } + + /* + * prepare the caching configuration + */ + + private function prepareCacheConfig() { + $cache_config = array(); + + $cache_config["system"] = Config::get("general", "cache", "system"); + $cache_config["host"] = Config::get("general", "cache", "host"); + $cache_config["port"] = Config::get("general", "cache", "port"); + + return $cache_config; } -} \ No newline at end of file +} diff --git a/src/tdt/core/utility/ApacheLogParser.php b/src/tdt/core/utility/ApacheLogParser.php index c719d468..7cdf5e59 100644 --- a/src/tdt/core/utility/ApacheLogParser.php +++ b/src/tdt/core/utility/ApacheLogParser.php @@ -96,7 +96,7 @@ private function applyFilters($str){ public function getData($limit = 50, $offset = 1){ $handle = fopen($this->file, 'rb'); if ($handle) { - $count = 1; + $count = 0; $lines = array(); while (!feof($handle)) { $buffer = fgets($handle); diff --git a/src/tdt/core/utility/Request.php b/src/tdt/core/utility/Request.php index 03618397..9d32fea6 100755 --- a/src/tdt/core/utility/Request.php +++ b/src/tdt/core/utility/Request.php @@ -13,6 +13,7 @@ namespace tdt\core\utility; use tdt\cache\Cache; +use tdt\exceptions\TDTException; class Request { diff --git a/tests/APITest.php b/tests/APITest.php index 56268d93..c02f60a5 100644 --- a/tests/APITest.php +++ b/tests/APITest.php @@ -55,7 +55,8 @@ public function testCSV() { try{ $model = ResourcesModel::getInstance(); $model->createResource($TEST_PACKAGE_NAME . "/" . $TEST_RESOURCE_NAME,$parameters); - }catch(Exception $ex){ + }catch(Exception $ex){ + echo $ex->getMessage(); $create_resource = false; } @@ -78,6 +79,7 @@ public function testCSV() { $this->assertEquals("Ap #630-7719 Scelerisque Road",$object1->Street_Address); }catch(Exception $ex){ + echo $ex->getMessage(); $read_datasource = false; } @@ -90,7 +92,8 @@ public function testCSV() { try{ $model = ResourcesModel::getInstance(); $model->deleteResource($TEST_PACKAGE_NAME, $TEST_RESOURCE_NAME,array()); - }catch(Exception $ex){ + }catch(Exception $ex){ + echo $ex->getMessage(); $delete_datasource = false; } @@ -156,7 +159,7 @@ public function testDB(){ $model->createResource($TEST_PACKAGE_NAME . "/" . $TEST_RESOURCE_NAME,$parameters); }catch(Exception $ex){ - var_dump($ex->getTrace()); + echo $ex->getMessage(); $create_resource = false; } @@ -184,7 +187,7 @@ public function testDB(){ $this->assertEquals("9000",$object1->Income); }catch(Exception $ex){ - var_dump($ex->getTrace()); + echo $ex->getMessage(); $read_datasource = false; } @@ -197,7 +200,8 @@ public function testDB(){ try{ $model = ResourcesModel::getInstance(); $model->deleteResource($TEST_PACKAGE_NAME, $TEST_RESOURCE_NAME,array()); - }catch(Exception $ex){ + }catch(Exception $ex){ + echo $ex->getMessage(); $delete_datasource = false; } @@ -216,7 +220,7 @@ public function testJSON(){ $parameters = array( 'documentation' => "This is a test case for unittesting a JSON resource.", 'resource_type' => "generic/JSON", - 'uri' => "http://demo.thedatatank.org/TDTInfo/Resources.json" + 'uri' => "http://data.appsforghent.be/TDTInfo/Resources.json" ); /* @@ -226,7 +230,8 @@ public function testJSON(){ try{ $model = ResourcesModel::getInstance(); $model->createResource($TEST_PACKAGE_NAME . "/" . $TEST_RESOURCE_NAME,$parameters); - }catch(Exception $ex){ + }catch(Exception $ex){ + echo $ex->getMessage(); $create_resource = false; } @@ -245,7 +250,8 @@ public function testJSON(){ } - }catch(Exception $ex){ + }catch(Exception $ex){ + echo $ex->getMessage(); $read_datasource = false; } @@ -258,7 +264,8 @@ public function testJSON(){ try{ $model = ResourcesModel::getInstance(); $model->deleteResource($TEST_PACKAGE_NAME, $TEST_RESOURCE_NAME,array()); - }catch(Exception $ex){ + }catch(Exception $ex){ + echo $ex->getMessage(); $delete_datasource = false; } From 5ea0e84b2d20e600860f558324a004fcb406ff0c Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Sun, 27 Jan 2013 15:26:47 +0100 Subject: [PATCH 13/18] Small update on the apache parser. --- src/tdt/core/utility/ApacheLogParser.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/tdt/core/utility/ApacheLogParser.php b/src/tdt/core/utility/ApacheLogParser.php index 7cdf5e59..d7bdabd4 100644 --- a/src/tdt/core/utility/ApacheLogParser.php +++ b/src/tdt/core/utility/ApacheLogParser.php @@ -6,7 +6,8 @@ * and adjusted with proper regular expressions as the ones provided in the original file didn't work * for a CLF apache log file.(standard logging format) * - * @author Eric Lamb + * @author Eric Lamb (base code) + * @author Jan Vansteenlandt (adjustments & fixes) * */ @@ -67,8 +68,10 @@ public function __construct($file, $format="common"){ /** * Executes the supplied filter to the string - * @param $filer - * @param $status + * In the blog it will return the string when 1 of the regex's + * complies, this adjusted function will return the string if it + * complies to all the passed filters! + * @param $filer * @return string */ private function applyFilters($str){ @@ -91,6 +94,7 @@ private function applyFilters($str){ /** * Returns an array of all the filtered lines * @param $limit + * @param $offset * @return array */ public function getData($limit = 50, $offset = 1){ From 0b781026c6cb22b125986213f0b06d6eb6f2842c Mon Sep 17 00:00:00 2001 From: Coreation Date: Mon, 28 Jan 2013 18:17:50 +0100 Subject: [PATCH 14/18] Small fixes and changes towards paging. --- README.md | 2 +- src/tdt/core/controllers/AController.php | 2 +- src/tdt/core/controllers/CUDController.php | 2 +- src/tdt/core/model/CoreResourceFactory.php | 2 +- .../packages/TDTInfo/TDTInfoExceptions.php | 55 ------------------- src/tdt/core/model/resources/read/AReader.php | 5 +- .../resources/read/GenericResourceReader.php | 16 +++--- src/tdt/core/strategies/CSV.php | 1 + src/tdt/core/strategies/SPARQL.php | 4 +- src/tdt/core/utility/Request.php | 2 +- 10 files changed, 18 insertions(+), 73 deletions(-) delete mode 100755 src/tdt/core/model/packages/TDTInfo/TDTInfoExceptions.php diff --git a/README.md b/README.md index e69a9a29..7bb5d153 100755 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ # Installation To install the datatank core, the best practice is to install tdt/start. This repository is located at http://www.github.com/tdt/start and contains an installer that load the necessary -components to make the datatank structure work. Currently it will install tdt/framework and tdt/core. +components to make the datatank structure work. Currently it will install the requirements for tdt/core found in the composer.json file. This can be done by using [composer](http://getcomposer.org/) and performing composer install in the directory of the tdt/start location. You can recognize this location by the presence of a composer.json file. diff --git a/src/tdt/core/controllers/AController.php b/src/tdt/core/controllers/AController.php index 43962923..1d7ac2f5 100755 --- a/src/tdt/core/controllers/AController.php +++ b/src/tdt/core/controllers/AController.php @@ -1,7 +1,7 @@ HEAD($matches); } - function PUT($matches) { + function PUT($matches) { $packageresourcestring = $matches["packageresourcestring"]; $pieces = explode("/", $packageresourcestring); diff --git a/src/tdt/core/model/CoreResourceFactory.php b/src/tdt/core/model/CoreResourceFactory.php index d436f77a..f770fdc8 100755 --- a/src/tdt/core/model/CoreResourceFactory.php +++ b/src/tdt/core/model/CoreResourceFactory.php @@ -18,7 +18,7 @@ public function __construct() { } protected function getAllResourceNames() { - return array("TDTInfo" => array("Resources", "Packages", "Exceptions", "Admin", "Formatters", "Visualizations","Statistics"), + return array("TDTInfo" => array("Resources", "Packages","Admin", "Formatters", "Visualizations","Statistics"), "TDTAdmin" => array("Resources", "Export") ); } diff --git a/src/tdt/core/model/packages/TDTInfo/TDTInfoExceptions.php b/src/tdt/core/model/packages/TDTInfo/TDTInfoExceptions.php deleted file mode 100755 index 9d492864..00000000 --- a/src/tdt/core/model/packages/TDTInfo/TDTInfoExceptions.php +++ /dev/null @@ -1,55 +0,0 @@ - - */ - -namespace tdt\core\model\packages\TDTInfo; - -use tdt\core\model\resources\read\AReader; - -class TDTInfoExceptions extends AReader { - - public static function getParameters() { - return array(); - } - - public static function getRequiredParameters() { - return array(); - } - - public function setParameter($key, $val) { - - } - - public function read() { - - $exceptions = parse_ini_file("/../../../tdt/framework/exceptions.ini", true); - $tmp = array(); - - foreach ($exceptions as $errorcode => $configarray) { - - $e = new \stdClass(); - $e->code = $errorcode; - $e->message = $configarray["message"]; - $e->parameters = $configarray["parameters"]; - $e->doc = $configarray["documentation"]; - $e->short = $configarray["short"]; - array_push($tmp, $e); - } - - return $tmp; - } - - public static function getDoc() { - return "This resource contains every exception used by this DataTank instance."; - } - -} - -?> diff --git a/src/tdt/core/model/resources/read/AReader.php b/src/tdt/core/model/resources/read/AReader.php index 4cdcaa1b..7b4ee56f 100755 --- a/src/tdt/core/model/resources/read/AReader.php +++ b/src/tdt/core/model/resources/read/AReader.php @@ -11,12 +11,13 @@ namespace tdt\core\model\resources\read; -use tdt\framework\LanguageNegotiator; +use tdt\negotiators\LanguageNegotiator; use tdt\exceptions\TDTException; abstract class AReader { - public static $BASICPARAMS = array("callback", "filterBy", "filterValue", "filterOp"); + public static $BASICPARAMS = array("callback", "filterBy", "filterValue", "filterOp","limit","offset","page"); + // package and resource are always the two minimum parameters protected $parameters = array(); protected $requiredParameters = array(); diff --git a/src/tdt/core/model/resources/read/GenericResourceReader.php b/src/tdt/core/model/resources/read/GenericResourceReader.php index cf5f42f7..3321e352 100755 --- a/src/tdt/core/model/resources/read/GenericResourceReader.php +++ b/src/tdt/core/model/resources/read/GenericResourceReader.php @@ -44,15 +44,13 @@ public function getReadDocumentation() { * A generic resource can't have parameters (yet), strategies can however */ public function setParameter($key, $value) { - if ($key == "page") { - $this->$key = $value; - } else { // it's a strategy parameter - /** - * pass along the parameters to the strategy - */ - $strategy = $this->genres->getStrategy(); - $strategy->setParameter($key, $value); - } + + /** + * pass along the parameters to the strategy + */ + $strategy = $this->genres->getStrategy(); + $strategy->setParameter($key, $value); + } } diff --git a/src/tdt/core/strategies/CSV.php b/src/tdt/core/strategies/CSV.php index 4c9a4171..387264bb 100755 --- a/src/tdt/core/strategies/CSV.php +++ b/src/tdt/core/strategies/CSV.php @@ -69,6 +69,7 @@ public function documentReadParameters() { * @return $mixed An object created with fields of a CSV file. */ public function read(&$configObject, $package, $resource) { + /* * First retrieve the values for the generic fields of the CSV logic. * This is the uri to the file, and a parameter which states if the CSV file diff --git a/src/tdt/core/strategies/SPARQL.php b/src/tdt/core/strategies/SPARQL.php index d23b00a9..46284b9b 100755 --- a/src/tdt/core/strategies/SPARQL.php +++ b/src/tdt/core/strategies/SPARQL.php @@ -19,13 +19,13 @@ class SPARQL extends AResourceStrategy { public function read(&$configObject, $package, $resource) { $uri = $configObject->endpoint . '?query=' . urlencode($configObject->query) . '&format=' . urlencode("application/json"); - $data = \tdt\framework\Request::http($uri); + $data = \tdt\core\utility\Request::http($uri); return json_decode($data->data); } public function isValid($package_id, $generic_resource_id) { $uri = $this->endpoint . '?query=' . urlencode($this->query) . '&format=' . urlencode("application/json"); - $data = \tdt\framework\Request::http($uri); + $data = \tdt\core\utility\Request::http($uri); $result = json_decode($data->data); if (!$result) { $exception_config = array(); diff --git a/src/tdt/core/utility/Request.php b/src/tdt/core/utility/Request.php index 9d32fea6..45fe3ae3 100755 --- a/src/tdt/core/utility/Request.php +++ b/src/tdt/core/utility/Request.php @@ -3,7 +3,7 @@ /** * Helper classes that are specifically designed for TDT. When developing modules you can use these for better performance * - * @package framework + * @package tdt\core\utility * @copyright (C) 2013 by OKFN Belgium vzw/asbl * @license AGPLv3 * @author Jan Vansteenlandt From eec01c31ee98bbaf499e93b0bbe33c3ae67d7351 Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Tue, 29 Jan 2013 10:18:48 +0100 Subject: [PATCH 15/18] Fixed link towards the travis-ci. --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c21be140..5db3bbbf 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +# tdt/core + +[![Build Status](https://travis-ci.org/tdt/core.png?branch=development)](https://travis-ci.org/tdt/core) + # Installation To install the datatank core, the best practice is to install tdt/start. This repository is located at http://www.github.com/tdt/start and contains an installer that load the necessary @@ -31,7 +35,7 @@ example: This will lead a URL passed by a HTTP GET request, existing out of any given string ending with a dot followed by a string representing a format, to our RController. This controller will then apply further logic to provide this request of an answer. -If you want to use The DataTank core without the use of tdt/start, you can still fill out the config of tdt\core\utility\Config::setConfig($array) documented in the README of the tdt/framework. +If you want to use The DataTank core without the use of tdt/start, you can still fill out the config of tdt\core\utility\Config::setConfig($array). ### formatters From b30e9ae2d749f2918c7d4408607a15a9524743da Mon Sep 17 00:00:00 2001 From: Coreation Date: Tue, 29 Jan 2013 10:27:23 +0100 Subject: [PATCH 16/18] Abstract class to help resources that want to implement paging. --- src/tdt/core/model/resources/read/APager.php | 42 ++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/tdt/core/model/resources/read/APager.php diff --git a/src/tdt/core/model/resources/read/APager.php b/src/tdt/core/model/resources/read/APager.php new file mode 100644 index 00000000..3e9da64a --- /dev/null +++ b/src/tdt/core/model/resources/read/APager.php @@ -0,0 +1,42 @@ +package . "/" . $this->resource . ".about?"); + + } + +} \ No newline at end of file From 94715625a32098bf2bfc2814b7c7100239f5e23d Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Tue, 29 Jan 2013 14:21:57 +0100 Subject: [PATCH 17/18] Implemented paging, added paging functionality in the DB and CSV resource, added help functions in the AStrategy and AReader. --- README.md | 2 +- src/tdt/core/controllers/RController.php | 23 ++++-- src/tdt/core/formatters/XmlFormatter.php | 8 +- src/tdt/core/model/DBQueries.php | 15 ++++ .../model/resources/AResourceStrategy.php | 58 +++++++++++--- src/tdt/core/model/resources/read/APager.php | 42 ---------- src/tdt/core/model/resources/read/AReader.php | 25 +++++- src/tdt/core/strategies/ATabularData.php | 9 ++- src/tdt/core/strategies/CSV.php | 78 ++++++++++++++++--- src/tdt/core/strategies/DB.php | 73 ++++++++++++++--- 10 files changed, 244 insertions(+), 89 deletions(-) delete mode 100644 src/tdt/core/model/resources/read/APager.php diff --git a/README.md b/README.md index 7bb5d153..6a01baf5 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # tdt/core -[![Build Status](https://travis-ci.org/tdt/core.png?branch=testing)](undefined) +[![Build Status](https://travis-ci.org/tdt/core.png?branch=feature-paging)](https://travis-ci.org/tdt/core) # Installation diff --git a/src/tdt/core/controllers/RController.php b/src/tdt/core/controllers/RController.php index 51c1a36b..994e43a3 100755 --- a/src/tdt/core/controllers/RController.php +++ b/src/tdt/core/controllers/RController.php @@ -61,7 +61,7 @@ public function GET($matches) { */ if ($resourcename == "") { $packageDoc = $model->getAllPackagesDoc(); - $allPackages = array_keys(get_object_vars($packageDoc)); + $allPackages = array_keys(get_object_vars($packageDoc)); $linkObject = new \stdClass(); $links = array(); @@ -83,7 +83,7 @@ public function GET($matches) { } if (isset($doc->$package)) { - $resourcenames = get_object_vars($doc->$package); + $resourcenames = get_object_vars($doc->$package); foreach ($resourcenames as $resourcename => $value) { $link = $this->hostname . $this->subdir . $package . "/" . $resourcename; $links[] = $link; @@ -97,7 +97,7 @@ public function GET($matches) { //This will create an instance of a factory depending on which format is set $this->formatterfactory = FormatterFactory::getInstance($matches["format"]); - $printer = $this->formatterfactory->getPrinter(strtolower($package), $linkObject); + $printer = $this->formatterfactory->getPrinter($package, $linkObject); $printer->printAll(); exit(); @@ -170,6 +170,19 @@ public function GET($matches) { $o->$RESTresource = $result; $result = $o; + /** + * Before printing the object, check the headers + * For example, a Link header may be set in order to foresee in paging! + * The controller can enhance this header by replacing the standard .about redirect + * by the format given by the user. + */ + foreach(headers_list() as $header){ + if(substr($header,0,4) == "Link"){ + $header = str_replace(".about",".".$matches["format"],$header); + header($header); + } + } + // get the according formatter from the factory $printer = $this->formatterfactory->getPrinter($resourcename, $result); $printer->printAll(); @@ -308,7 +321,7 @@ public function HEAD($matches) { //This will create an instance of a factory depending on which format is set $this->formatterfactory = FormatterFactory::getInstance($matches["format"]); - $printer = $this->formatterfactory->getPrinter(strtolower($package), $linkObject); + $printer = $this->formatterfactory->getPrinter($package, $linkObject); $printer->printHeader(); exit(); } @@ -401,7 +414,7 @@ public function HEAD($matches) { $result = $o; // get the according formatter from the factory - $printer = $this->formatterfactory->getPrinter(strtolower($resourcename), $result); + $printer = $this->formatterfactory->getPrinter($resourcename, $result); $printer->printHeader(); } diff --git a/src/tdt/core/formatters/XmlFormatter.php b/src/tdt/core/formatters/XmlFormatter.php index 8818e7a3..487abe59 100755 --- a/src/tdt/core/formatters/XmlFormatter.php +++ b/src/tdt/core/formatters/XmlFormatter.php @@ -33,11 +33,13 @@ public function printHeader() { public function printBody() { echo ""; - $rootname = $this->rootname; + $rootname = $this->rootname; - if (!isset($this->objectToPrint->$rootname)) { - $rootname = ucfirst($this->rootname); + if (!isset($this->objectToPrint->$rootname)) { $this->rootname = $rootname; + $wrapper = new \stdClass(); + $wrapper->$rootname = $this->objectToPrint; + $this->objectToPrint = $wrapper; } diff --git a/src/tdt/core/model/DBQueries.php b/src/tdt/core/model/DBQueries.php index 4a9fd6cf..4334b9fb 100755 --- a/src/tdt/core/model/DBQueries.php +++ b/src/tdt/core/model/DBQueries.php @@ -261,6 +261,21 @@ static function deleteGenericResource($package, $resource) { ); } + /** + * Delete a strategy entry + */ + static function deleteStrategy($package,$resource,$table){ + return R::exec( + "DELETE FROM $table + WHERE gen_resource_id IN + (SELECT generic_resource.id FROM generic_resource,package,resource + WHERE resource.resource_name=:resource + and package.package_name=:package + and resource_id = resource.id + and package.id=package_id)", array(":package" => $package, ":resource" => $resource) + ); + } + /** * Retrieve a specific remote resource */ diff --git a/src/tdt/core/model/resources/AResourceStrategy.php b/src/tdt/core/model/resources/AResourceStrategy.php index c416a760..7cdb93c5 100755 --- a/src/tdt/core/model/resources/AResourceStrategy.php +++ b/src/tdt/core/model/resources/AResourceStrategy.php @@ -16,9 +16,15 @@ use tdt\core\model\ResourcesModel; use tdt\exceptions\TDTException; use RedBean_Facade as R; +use Monolog\Logger; +use Monolog\Handler\StreamHandler; +use tdt\core\utility\Config; abstract class AResourceStrategy { + protected static $DEFAULT_PAGE_SIZE = 50; + protected $link_header = array(); + /** * This functions contains the businesslogic of a read method (non paged reading) * @return \stdClass object representing the result of the businesslogic. @@ -32,15 +38,7 @@ public function onDelete($package, $resource) { // get the name of the class (=strategy) $strat = $this->getClassName(); $resource_table = (string) GenericResource::$TABLE_PREAMBLE . $strat; - return R::exec( - "DELETE FROM $resource_table - WHERE gen_resource_id IN - (SELECT generic_resource.id FROM generic_resource,package,resource - WHERE resource.resource_name=:resource - and package.package_name=:package - and resource_id = resource.id - and package.id=package_id)", array(":package" => $package, ":resource" => $resource) - ); + return DBQueries::deleteStrategy($package,$resource,$resource_table); } /* @@ -85,7 +83,7 @@ public function onAdd($package_id, $gen_resource_id) { } public function onUpdate($package, $resource) { - + } public function setParameter($key, $value) { @@ -158,6 +156,42 @@ protected function throwException($package_id, $gen_resource_id, $message) { throw new TDTException(452, array("$message"), $exception_config); } -} + /** + * setLinkHeader sets a Link header with next, previous + * @param int $limit The limitation of the amount of objects to return + * @param int $offset The offset from where to begin to return objects (default = 0) + */ + protected function setLinkHeader($page,$page_size,$referral = "next"){ + + /** + * Process the correct referral options(next | previous) + */ + if($referral != "next" || $referral != "previous"){ + $log = new Logger('AResourceStrategy'); + $log->pushHandler(new StreamHandler(Config::get("general", "logging", "path") . "/log_" . date('Y-m-d') . ".txt", Logger::ERROR)); + $log->addError("No correct referral has been found, options are 'next' or 'previous', the referral given was: $referral"); + } + + /** + * Check if the Link header has already been set, with a next relationship for example. + * If so we have to append the Link header instead of hard setting it + */ + $link_header_set = false; + foreach(headers_list() as $header){ + if(substr($header,0,4) == "Link"){ + $header.=", ". Config::get("general","hostname") . Config::get("general","subdir") . $this->package . "/" . $this->resource . ".about?page=" + . $page . "&page_size=" . $page_size . ";rel=" . $referral; + header($header); + $link_header_set = true; + } + } + + if(!$link_header_set){ + header("Link: ". Config::get("general","hostname") . Config::get("general","subdir") . $this->package . "/" . $this->resource . ".about?page=" + . $page . "&page_size=" . $page_size . ";rel=" . $referral); + } + + + } -?> \ No newline at end of file +} \ No newline at end of file diff --git a/src/tdt/core/model/resources/read/APager.php b/src/tdt/core/model/resources/read/APager.php deleted file mode 100644 index 3e9da64a..00000000 --- a/src/tdt/core/model/resources/read/APager.php +++ /dev/null @@ -1,42 +0,0 @@ -package . "/" . $this->resource . ".about?"); - - } - -} \ No newline at end of file diff --git a/src/tdt/core/model/resources/read/AReader.php b/src/tdt/core/model/resources/read/AReader.php index 7b4ee56f..ff5920ec 100755 --- a/src/tdt/core/model/resources/read/AReader.php +++ b/src/tdt/core/model/resources/read/AReader.php @@ -16,7 +16,9 @@ abstract class AReader { - public static $BASICPARAMS = array("callback", "filterBy", "filterValue", "filterOp","limit","offset","page"); + protected static $DEFAULT_PAGE_SIZE = 50; + + public static $BASICPARAMS = array("callback", "filterBy", "filterValue", "filterOp","page_size","page"); // package and resource are always the two minimum parameters protected $parameters = array(); @@ -93,4 +95,25 @@ public function getLang() { return $language; } + /** + * setLinkHeader sets a Link header with next, previous + * @param int $limit The limitation of the amount of objects to return + * @param int $offset The offset from where to begin to return objects (default = 0) + */ + protected function setLinkHeader($page,$page_size,$referral = "next"){ + + /** + * Process the correct referral options(next | previous) + */ + if($referral != "next" || $referral != "previous"){ + $log = new Logger('AReader'); + $log->pushHandler(new StreamHandler(Config::get("general", "logging", "path") . "/log_" . date('Y-m-d') . ".txt", Logger::ERROR)); + $log->addError("No correct referral has been found, options are 'next' or 'previous', the referral given was: $referral"); + } + + header("Link: ". Config::get("general","hostname") . Config::get("general","subdir") . $this->package . "/" . $this->resource . ".about?page=" + . $page . "&page_size=" . $page_size . ";rel=" . $referral); + + } + } diff --git a/src/tdt/core/strategies/ATabularData.php b/src/tdt/core/strategies/ATabularData.php index f308edda..2e3e2966 100755 --- a/src/tdt/core/strategies/ATabularData.php +++ b/src/tdt/core/strategies/ATabularData.php @@ -26,10 +26,7 @@ abstract class ATabularData extends AResourceStrategy { function __construct() { $this->parameters["columns"] = "An array that contains the name of the columns that are to be published, if an empty array is passed every column will be published. This array should be build as index => column_alias."; - - $this->parameters["column_aliases"] = "An array that contains the alias of a published column. This array should be build as column_name => column_alias. If no array is passed, the alias will be equal to the normal column name. If your column name,used as a key, contains whitespaces be sure to replace them with an underscore."; - - $this->parameters["limit"] = "The number of rows returned."; + $this->parameters["column_aliases"] = "An array that contains the alias of a published column. This array should be build as column_name => column_alias. If no array is passed, the alias will be equal to the normal column name. If your column name,used as a key, contains whitespaces be sure to replace them with an underscore."; } /** @@ -66,6 +63,10 @@ protected function evaluateColumns($package_id, $generic_resource_id, $columns, // fill in the configuration object that the strategy will receive public function read(&$configObject, $package, $resource) { + + $this->package = $package; + $this->resource = $resource; + $published_columns = DBQueries::getPublishedColumns($configObject->gen_resource_id); $PK = ""; $columns = array(); diff --git a/src/tdt/core/strategies/CSV.php b/src/tdt/core/strategies/CSV.php index 387264bb..2cf15c6d 100755 --- a/src/tdt/core/strategies/CSV.php +++ b/src/tdt/core/strategies/CSV.php @@ -11,12 +11,14 @@ namespace tdt\core\strategies; -use Monolog\Logger; use tdt\exceptions\TDTException; +use tdt\core\model\resources\AResourceStrategy; +use Monolog\Handler\StreamHandler; +use Monolog\Logger; +use tdt\core\utility\Config; class CSV extends ATabularData{ - - private static $READ_MAX_AMOUNT_OF_ROWS = 100; + // amount of chars in one row that can be read private static $MAX_LINE_LENGTH = 15000; @@ -69,7 +71,7 @@ public function documentReadParameters() { * @return $mixed An object created with fields of a CSV file. */ public function read(&$configObject, $package, $resource) { - + /* * First retrieve the values for the generic fields of the CSV logic. * This is the uri to the file, and a parameter which states if the CSV file @@ -93,10 +95,39 @@ public function read(&$configObject, $package, $resource) { throw new TDTException(452, array("Can't find URI of the CSV"), $exception_config); } + /** + * Get the columns from the configuration + */ $columns = $configObject->columns; $column_aliases = $configObject->column_aliases; $PK = $configObject->PK; + /** + * Calculate which rows we need to read + */ + if(!isset($this->page)){ + $this->page = 1; + } + + if(!isset($this->page_size)){ + $this->page_size = AResourceStrategy::$DEFAULT_PAGE_SIZE; + } + + /** + * We're going to ask for one more row, if we get one more row than the + * user asked for, it means that we still have data to pass along. + * When we notice this we will set the Link HTTP header + */ + $offset = ($this->page -1)*$this->page_size; + $limit = $this->page_size +1; + + // during the reading we will discover if we have a next and/or previous page + $next_page = false; + $previous_page = false; + + /** + * Read the file + */ $resultobject = array(); $arrayOfRowObjects = array(); $row = 0; @@ -104,14 +135,24 @@ public function read(&$configObject, $package, $resource) { $rows = array(); $rowsRead = 0; if (($handle = fopen($filename, "r")) !== FALSE) { - while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE && $rowsRead <= CSV::$READ_MAX_AMOUNT_OF_ROWS + $start_row - 1) { - $num = count($data); - $csvRow = ""; - for ($c = 0; $c < $num; $c++) { - $csvRow = $csvRow . $delimiter . $this->enclose($data[$c]); + while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE && $rowsRead <= $limit) { + if($row >= $offset && $row <= $offset+$limit){ + $num = count($data); + $csvRow = ""; + for ($c = 0; $c < $num; $c++) { + $csvRow = $csvRow . $delimiter . $this->enclose($data[$c]); + } + array_push($rows, ltrim($csvRow, $delimiter)); + $rowsRead++; + if($this->page > 1 && !$previous_page){ + $previous_page = true; + } + + if($row == $offset + $limit && !$next_page){ + $next_page = true; + } } - array_push($rows, ltrim($csvRow, $delimiter)); - $rowsRead++; + $row++; } fclose($handle); } else { @@ -121,6 +162,18 @@ public function read(&$configObject, $package, $resource) { throw new TDTException(452, array("Can't get any data from defined file ,$filename , for this resource."), $exception_config); } + /** + * Delete last row if the beginning of a next page has been read + */ + if($next_page){ + array_pop($rows); + $this->setLinkHeader($this->page + 1,$this->page_size,"next"); + } + + if($previous_page){ + $this->setLinkHeader($this->page -1,$this->page_size,"previous"); + } + // get rid for the comment lines according to the given start_row for ($i = 1; $i < $start_row; $i++) { array_shift($rows); @@ -142,6 +195,9 @@ public function read(&$configObject, $package, $resource) { $line = 0; + /** + * Parse every row and create an object from it + */ foreach ($rows as $row => $fields) { $line++; $data = str_getcsv($fields, $delimiter, '"'); diff --git a/src/tdt/core/strategies/DB.php b/src/tdt/core/strategies/DB.php index 2b9347ff..47a8b713 100755 --- a/src/tdt/core/strategies/DB.php +++ b/src/tdt/core/strategies/DB.php @@ -18,6 +18,7 @@ use tdt\core\universalfilter\interpreter\other\QueryTreeHandler; use tdt\core\utility\Config; use tdt\exceptions\TDTException; +use tdt\core\model\resources\AResourceStrategy; class DB extends ATabularData implements IFilter { /* @@ -54,8 +55,7 @@ public function documentCreateParameters() { $this->parameters["db_type"] = "The type of the database, current supported types are: MySQL"; $this->parameters["db_table"] = "The database table of which some or all fields will be published."; $this->parameters["location"] = "The location of the database, for sqlite this will be the path towards the sqlite file, for all the other database types this will be the host on which the database is installed."; - $this->parameters["PK"] = "The primary key of an entry. This must be the name of an existing column name in the tabular resource."; - $this->parameters["limit"] = "The limit of a data retrieval query on the database table. If not provided a default amount of rows will be loaded."; + $this->parameters["PK"] = "The primary key of an entry. This must be the name of an existing column name in the tabular resource."; return $this->parameters; } @@ -75,31 +75,84 @@ public function documentReadParameters() { * @return $mixed An object created with fields and values of the database table */ public function read(&$configObject, $package, $resource) { + parent::read($configObject, $package, $resource); + /** + * Add the database we want to connect to the Redbean databases. + * This will allow us to switch between the connection with our own back-end and the database from which to read data. + */ R::addDatabase('db_resource', $configObject->db_type . ":host=" . $configObject->location . ";dbname=" . $configObject->db_name, $configObject->username, $configObject->password); R::selectDatabase('db_resource'); - $fields = ""; //implode(array_keys($configObject->columns),","); + $fields = ""; + + /** + * Prepare the SQL statement + */ + foreach ($configObject->column_aliases as $column_name => $column_alias) { $fields.= " $configObject->db_table" . "." . "$column_name AS $column_alias ,"; } $fields = rtrim($fields, ","); - // prepare to get some of them data from the database! - $sql_limit = ""; + if(!isset($this->page)){ + $this->page = 1; + } - if ($configObject->limit != "") { - $sql_limit = "LIMIT 0,$configObject->limit"; - } else { - $sql_limit = "LIMIT 0, " . DB::$READ_MAX_AMOUNT_OF_ROWS; + if(!isset($this->page_size)){ + $this->page_size = AResourceStrategy::$DEFAULT_PAGE_SIZE; } - $sql = "SELECT $fields FROM $configObject->db_table $sql_limit"; + + /** + * We're going to ask for one more row, if we get one more row than the + * user asked for, it means that we still have data to pass along. + * When we notice this we will set the Link HTTP header + */ + $offset = ($this->page -1)*$this->page_size; + $limit = $this->page_size +1; + + $sql = "SELECT $fields FROM $configObject->db_table LIMIT $offset,$limit"; $results = R::getAll($sql); + /** + * Check if we have more rows then we can return in 1 page + */ + $result_count = count($results); + + if($result_count > $limit-1){ + array_pop($results); + $this->setLinkHeader($this->page+1, $this->page_size,"next"); + } + + /** + * Check if we have a previous page + * Note that previous and next cannot be combined in 1 query. + * If we have 1 row too many, and our offset was done -1 and our limit +1 + * we cannot know which header to pass as we dont know whether the 1 extra record is + * from a previous page or a next page. + * + * Again take into account that a page size can be bigger then the previous amount of records, + * resulting in a negative offset, put offset to 0 if this is the case + */ + if($offset>0){ + $offset = $offset - $this->page_size; + + $limit = $this->page_size; + + if($offset<0) + $offset = 0; + + $sql = "SELECT $fields FROM $configObject->db_table LIMIT $offset,$limit"; + $previous_results = R::getAll($sql); + if(count($previous_results)>0){ + $this->setLinkHeader($this->page-1,$limit,"previous"); + } + } + /* * The result of the R::getAll results in an array of arrays. Each array represents a row. * Loop over them and build up the resulting object to be returned, use the PK and the column_aliases as well. From 68a152e3ba99ab051683133de3b1684c72f5b57b Mon Sep 17 00:00:00 2001 From: Jan Vansteenlandt Date: Wed, 30 Jan 2013 16:38:45 +0100 Subject: [PATCH 18/18] Fixed paging for SPECTQL queries, fixed some small bugs in spectql caused by namespacing classes. --- .travis.yml | 2 +- src/tdt/core/controllers/RController.php | 4 +- .../core/controllers/SPECTQLController.php | 61 ++++++- src/tdt/core/formatters/FormatterFactory.php | 19 +- src/tdt/core/model/ResourcesModel.php | 11 +- .../model/resources/AResourceStrategy.php | 7 +- .../core/model/resources/GenericResource.php | 2 +- .../resources/read/GenericResourceReader.php | 2 +- src/tdt/core/strategies/CSV.php | 74 ++++++-- src/tdt/core/strategies/DB.php | 172 +++++++++++++++--- .../converter/SQLConverter.php | 7 +- .../interpreter/debugging/TreePrinter.php | 111 +++++------ .../implementations/IdentifierExecuter.php | 7 +- .../implementations/LimitFilterExecuter.php | 3 + .../interpreter/other/QueryTreeHandler.php | 10 +- .../UniversalFilterTableManager.php | 27 +++ tests/APITest.php | 47 ++++- 17 files changed, 428 insertions(+), 138 deletions(-) diff --git a/.travis.yml b/.travis.yml index 207adffa..8e09c70c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,4 +9,4 @@ before_script: - composer install - mysql -e 'create database myapp_test;' -script: phpunit tests \ No newline at end of file +script: phpunit tests/APITest.php \ No newline at end of file diff --git a/src/tdt/core/controllers/RController.php b/src/tdt/core/controllers/RController.php index 994e43a3..14bb9d9c 100755 --- a/src/tdt/core/controllers/RController.php +++ b/src/tdt/core/controllers/RController.php @@ -184,8 +184,8 @@ public function GET($matches) { } // get the according formatter from the factory - $printer = $this->formatterfactory->getPrinter($resourcename, $result); - $printer->printAll(); + $printer = $this->formatterfactory->getPrinter($resourcename, $result); + $printer->printAll(); } private function getAllSubPackages($package, &$linkObject, &$links) { diff --git a/src/tdt/core/controllers/SPECTQLController.php b/src/tdt/core/controllers/SPECTQLController.php index b018e253..79078547 100755 --- a/src/tdt/core/controllers/SPECTQLController.php +++ b/src/tdt/core/controllers/SPECTQLController.php @@ -26,6 +26,7 @@ use tdt\core\utility\RequestURI; use tdt\exceptions\TDTException; use app\core\Config; +use tdt\core\universalfilter\interpreter\debugging\TreePrinter; class SPECTQLController extends AController { @@ -116,12 +117,12 @@ public function GET($matches) { * uncomment to view the Querytree from the spectql query */ /* - $treePrinter = new TreePrinter(); - $tree = $treePrinter->treeToString($universalquery); - echo "
";
-          echo $tree;
-          echo "
"; - */ + $treePrinter = new TreePrinter(); + $tree = $treePrinter->treeToString($universalquery); + echo "
";
+        echo $tree;
+        echo "
"; + */ $interpreter = new UniversalInterpreter(new UniversalFilterTableManager()); $result = $interpreter->interpret($universalquery); @@ -140,6 +141,54 @@ public function GET($matches) { $formatterfactory->setFormat($format); $rootname = "spectqlquery"; + /** + * adjust header if given from the read() of a resource + */ + foreach(headers_list() as $header){ + if(substr($header,0,4) == "Link"){ + $ru = RequestURI::getInstance(Config::getConfigArray()); + $pageURL = $ru->getURI(); + $new_link_header= "Link:"; + + + /** + * Link to next + * Get the link to next, if present + * Adjust the spectql query URL with the next limit(..,..) and format + */ + $matches = array(); + if(preg_match('/page=(.*)&page_size=(.*);rel=next.*/',$header,$matches)){ + $query_matches = array(); + preg_match('/(.*)\.limit\(.*\)?(:.*)/',$pageURL,$query_matches); + $next_query_url = $query_matches[1]; + $limit = $matches[2]; + $offset = $limit * ($matches[1] -1 ); + $next_query_url.= ".limit(" . $offset . "," . $limit . "):" . $format; + $new_link_header.= $next_query_url . ";rel=next;"; + } + + /** + * Link to previous + */ + $matches = array(); + if(preg_match('/page=(\d{1,})&page_size=(\d{1,});rel=previous.*/',$header,$matches)){ + $query_matches = array(); + preg_match('/(.*)\.limit\(.*\)?(:.*)/',$pageURL,$query_matches); + $next_query_url = $query_matches[1]; + $limit = $matches[2]; + $offset = $limit * ($matches[1] -1 ); + $next_query_url.= ".limit(" . $offset . "," . $limit . "):" . $format; + $new_link_header.= $next_query_url . ";rel=previous"; + } + + $new_link_header = rtrim($new_link_header,";"); + /** + * Set the adjusted Link header + */ + + header($new_link_header); + } + } $printer = $formatterfactory->getPrinter(strtolower($rootname), $result); $printer->printAll(); diff --git a/src/tdt/core/formatters/FormatterFactory.php b/src/tdt/core/formatters/FormatterFactory.php index e1fcfbfb..7685f222 100755 --- a/src/tdt/core/formatters/FormatterFactory.php +++ b/src/tdt/core/formatters/FormatterFactory.php @@ -36,6 +36,7 @@ public static function getInstance($urlformat = "") { * @param string $urlformat The format of the request i.e. json,xml,.... */ public function setFormat($urlformat) { + //We define the format like this: // * Check if $urlformat has been set // - if not: probably something fishy happened, set format as error for logging purpose @@ -47,19 +48,31 @@ public function setFormat($urlformat) { $urlformat = ucfirst(strtolower($urlformat)); if (strtolower($urlformat) == "about" || $urlformat == "") { //urlformat can be empty on SPECTQL query - $cn = new ContentNegotiator(); + + /** + * Prepare + */ + $default = Config::get("general","defaultformat"); + $config = array(); + $config["log_dir"] = Config::get("general","logging","path"); + $config["enabled"] = Config::get("general","logging","enabled"); + + $cn = new ContentNegotiator($default,$config); $format = $cn->pop(); + while (!$this->formatExists($format) && $cn->hasNext()) { $format = $cn->pop(); if ($format == "*") { $format == "Xml"; } } + if (!$this->formatExists($format)) { - $this->format = Config::get("general", "defaultformat"); - //$exception_config = array(); $exception_config["log_dir"] = Config::get("general","logging","path"); $exception_config["url"] = Config::get("general","hostname") . Config::get("general","subdir") . "error"; throw new TDTException(451,array($format),$exception_config); // could not find a suitible format + $this->format = Config::get("general", "defaultformat"); } + $this->format = $format; + //We've found our format through about, so let's set the header for content-location to the right one //to do this we're building our current URL and changing .about in .format $format = strtolower($this->format); diff --git a/src/tdt/core/model/ResourcesModel.php b/src/tdt/core/model/ResourcesModel.php index a4caf63e..cca08d12 100755 --- a/src/tdt/core/model/ResourcesModel.php +++ b/src/tdt/core/model/ResourcesModel.php @@ -372,7 +372,7 @@ private function formatGenericType($genType, $genericTable) { public function readResource($package, $resource, $parameters, $RESTparameters) { //first check if the resource exists - if (!$this->hasResource($package, $resource)) { + if (!$this->hasResource($package, $resource)) { $exception_config = array(); $exception_config["log_dir"] = Config::get("general", "logging", "path"); $exception_config["url"] = Config::get("general", "hostname") . Config::get("general", "subdir") . "error"; @@ -642,24 +642,25 @@ public function isResourceIFilter($package, $resource) { if ($factory->hasResource($package, $resource)) { // remote resource just proxies the url so we don't need to take that into account - if (get_class($factory) == "GenericResourceFactory") { + if (get_class($factory) == "tdt\core\model\GenericResourceFactory") { $genericResource = new GenericResource($package, $resource); $strategy = $genericResource->getStrategy(); $interfaces = class_implements($strategy); - if (in_array("iFilter", $interfaces)) { + + if (in_array("tdt\\core\\model\\resources\\read\IFilter", $interfaces)) { return $genericResource; } else { return FALSE; } - } elseif (get_class($factory) == "InstalledResourceFactory") { + } elseif (get_class($factory) == "tdt\core\model\InstalledResourceFactory") { $reader = $factory->createReader($package, $resource, array(), array()); $interfaces = class_implements($reader); - if (in_array("iFilter", $interfaces)) { + if (in_array("tdt\\core\\model\\resources\\read\IFilter", $interfaces)) { return $reader; } else { return FALSE; diff --git a/src/tdt/core/model/resources/AResourceStrategy.php b/src/tdt/core/model/resources/AResourceStrategy.php index 7cdb93c5..bb7e4cd2 100755 --- a/src/tdt/core/model/resources/AResourceStrategy.php +++ b/src/tdt/core/model/resources/AResourceStrategy.php @@ -22,8 +22,7 @@ abstract class AResourceStrategy { - protected static $DEFAULT_PAGE_SIZE = 50; - protected $link_header = array(); + protected static $DEFAULT_PAGE_SIZE = 50; /** * This functions contains the businesslogic of a read method (non paged reading) @@ -86,7 +85,7 @@ public function onUpdate($package, $resource) { } - public function setParameter($key, $value) { + public function setParameter($key, $value) { $this->$key = $value; } @@ -166,7 +165,7 @@ protected function setLinkHeader($page,$page_size,$referral = "next"){ /** * Process the correct referral options(next | previous) */ - if($referral != "next" || $referral != "previous"){ + if($referral != "next" && $referral != "previous"){ $log = new Logger('AResourceStrategy'); $log->pushHandler(new StreamHandler(Config::get("general", "logging", "path") . "/log_" . date('Y-m-d') . ".txt", Logger::ERROR)); $log->addError("No correct referral has been found, options are 'next' or 'previous', the referral given was: $referral"); diff --git a/src/tdt/core/model/resources/GenericResource.php b/src/tdt/core/model/resources/GenericResource.php index 76d3b93d..b69d75dc 100755 --- a/src/tdt/core/model/resources/GenericResource.php +++ b/src/tdt/core/model/resources/GenericResource.php @@ -52,7 +52,7 @@ public function read() { // pass these parameters onto the createConfig to create the config object $configObject = $this->createConfigObject($parameters, $strat); - + // give the config object to the read function! return $strat->read($configObject, $this->package, $this->resource); } diff --git a/src/tdt/core/model/resources/read/GenericResourceReader.php b/src/tdt/core/model/resources/read/GenericResourceReader.php index 3321e352..27d41320 100755 --- a/src/tdt/core/model/resources/read/GenericResourceReader.php +++ b/src/tdt/core/model/resources/read/GenericResourceReader.php @@ -28,7 +28,7 @@ public function __construct($package, $resource, $RESTparameters) { /** * read method */ - public function read() { + public function read() { return $this->genres->read(); } diff --git a/src/tdt/core/strategies/CSV.php b/src/tdt/core/strategies/CSV.php index 2cf15c6d..26ed7be0 100755 --- a/src/tdt/core/strategies/CSV.php +++ b/src/tdt/core/strategies/CSV.php @@ -94,7 +94,7 @@ public function read(&$configObject, $package, $resource) { $exception_config["url"] = Config::get("general", "hostname") . Config::get("general", "subdir") . "error"; throw new TDTException(452, array("Can't find URI of the CSV"), $exception_config); } - + /** * Get the columns from the configuration */ @@ -102,24 +102,50 @@ public function read(&$configObject, $package, $resource) { $column_aliases = $configObject->column_aliases; $PK = $configObject->PK; + /** - * Calculate which rows we need to read + * Calculate which rows we need to read */ - if(!isset($this->page)){ - $this->page = 1; - } + $limit = AResourceStrategy::$DEFAULT_PAGE_SIZE; + $offset = 0; - if(!isset($this->page_size)){ - $this->page_size = AResourceStrategy::$DEFAULT_PAGE_SIZE; - } + if(!isset($this->limit) && !isset($this->offset)){ - /** - * We're going to ask for one more row, if we get one more row than the - * user asked for, it means that we still have data to pass along. - * When we notice this we will set the Link HTTP header - */ - $offset = ($this->page -1)*$this->page_size; - $limit = $this->page_size +1; + if(!isset($this->page)){ + $this->page = 1; + } + + if(!isset($this->page_size)){ + $this->page_size = AResourceStrategy::$DEFAULT_PAGE_SIZE; + } + + /** + * We're going to ask for one more row, if we get one more row than the + * user asked for, it means that we still have data to pass along. + * When we notice this we will set the Link HTTP header + */ + $offset = ($this->page -1)*$this->page_size; + $limit = $this->page_size +1; + + }else{ + + $limit = $this->limit +1; + $offset = $this->offset; + + // calculate the page and size from limit and offset as good as possible + // meaning that if offset indicates that page 1 exists of 2 rows, page 2 of 20 rows, page 3 min. 20 rows. + // paging should be (x=size) x, x, x, y < x EOF + $page = $offset/$limit; + $page = round($page,0,PHP_ROUND_HALF_DOWN); + if($page==0){ + $page = 1; + } + $this->page = $page; + $this->page_size = $limit -1; + + } // during the reading we will discover if we have a next and/or previous page $next_page = false; @@ -144,7 +170,7 @@ public function read(&$configObject, $package, $resource) { } array_push($rows, ltrim($csvRow, $delimiter)); $rowsRead++; - if($this->page > 1 && !$previous_page){ + if($offset > 0 && !$previous_page){ $previous_page = true; } @@ -162,6 +188,10 @@ public function read(&$configObject, $package, $resource) { throw new TDTException(452, array("Can't get any data from defined file ,$filename , for this resource."), $exception_config); } + // re-adjust the limit and page_size again + $limit = $limit-1; + $this->page_size = $this->page_size; + /** * Delete last row if the beginning of a next page has been read */ @@ -171,6 +201,12 @@ public function read(&$configObject, $package, $resource) { } if($previous_page){ + if($this->page == 1){ + // This tweak has to be made so that if incorrect page sizes have been given, i.e. offset = 2, limit (=page_size) = 20 + // We can still link to the "previous page". Note that incomplete paging due to offset and limit + // the returned resultset can lie in the the middle of a page, or across 2 pages + $this->page++; + } $this->setLinkHeader($this->page -1,$this->page_size,"previous"); } @@ -187,7 +223,7 @@ public function read(&$configObject, $package, $resource) { * note that the precondition of the beforehand filling of the fieldhash * is that the column_name is an index! Otherwise there's no way of id'ing a column */ - if ($has_header_row == "0") { + if ($has_header_row == "0" || $offset>=1) { foreach ($columns as $index => $column_name) { $fieldhash[$column_name] = $index; } @@ -257,7 +293,7 @@ public function read(&$configObject, $package, $resource) { * but we're going to log it nonetheless. */ foreach (array_keys($fieldhash) as $key) { - if (!in_array($key, $columns)) { + if (!in_array($key, $columns)) { $log = new Logger('CSV'); $log->pushHandler(new StreamHandler(Config::get("general", "logging", "path") . "/log_" . date('Y-m-d') . ".txt", Logger::ALERT)); $log->addAlert("$package/$resource : The column name $key that has been found in the CSV file isn't present in the saved columns of the CSV resource definition."); @@ -300,7 +336,7 @@ public function read(&$configObject, $package, $resource) { } } } - } + } return $arrayOfRowObjects; } diff --git a/src/tdt/core/strategies/DB.php b/src/tdt/core/strategies/DB.php index 47a8b713..262cd5ed 100755 --- a/src/tdt/core/strategies/DB.php +++ b/src/tdt/core/strategies/DB.php @@ -98,21 +98,50 @@ public function read(&$configObject, $package, $resource) { $fields = rtrim($fields, ","); - if(!isset($this->page)){ - $this->page = 1; - } - - if(!isset($this->page_size)){ - $this->page_size = AResourceStrategy::$DEFAULT_PAGE_SIZE; - } - /** - * We're going to ask for one more row, if we get one more row than the - * user asked for, it means that we still have data to pass along. - * When we notice this we will set the Link HTTP header + * Calculate page, size, limit and offset */ - $offset = ($this->page -1)*$this->page_size; - $limit = $this->page_size +1; + $limit = AResourceStrategy::$DEFAULT_PAGE_SIZE; + $offset = 0; + + if(!isset($this->limit) && !isset($this->offset)){ + + if(!isset($this->page)){ + $this->page = 1; + } + + if(!isset($this->page_size)){ + $this->page_size = AResourceStrategy::$DEFAULT_PAGE_SIZE; + } + + /** + * We're going to ask for one more row, if we get one more row than the + * user asked for, it means that we still have data to pass along. + * When we notice this we will set the Link HTTP header + */ + $offset = ($this->page -1)*$this->page_size; + $limit = $this->page_size +1; + + }else{ + + $limit = $this->limit +1; + $offset = $this->offset; + + // calculate the page and size from limit and offset as good as possible + // meaning that if offset indicates that page 1 exists of 2 rows, page 2 of 20 rows, page 3 min. 20 rows. + // paging should be (x=size) x, x, x, y < x EOF + $page = $offset/$limit; + $page = round($page,0,PHP_ROUND_HALF_DOWN); + if($page==0){ + $page = 1; + } + $this->page = $page; + $this->page_size = $limit -1; + + } + $sql = "SELECT $fields FROM $configObject->db_table LIMIT $offset,$limit"; @@ -138,7 +167,9 @@ public function read(&$configObject, $package, $resource) { * Again take into account that a page size can be bigger then the previous amount of records, * resulting in a negative offset, put offset to 0 if this is the case */ + if($offset>0){ + $offset = $offset - $this->page_size; $limit = $this->page_size; @@ -340,22 +371,30 @@ private function getTableColumns() { * */ public function readAndProcessQuery($query, $parameters) { - + /* * Decide which part of the query we want to execute ourselves and which part we leave to the universalinterpreter * Since this database resource serves as an example for how partially execution works we're going to assume we * cannot perform sort by statements ( or higher such as limit statements). * Thus we ask for the QueryTreeHandler for the clauses up untill select. - */ + */ $queryHandler = new QueryTreeHandler($query); $converter = $queryHandler->getSqlConverter(); - $queryNode = $queryHandler->getNodeForClause("select"); - - $selectClause = $converter->getSelectClause(); - $whereClause = $converter->getWhereClause(); - $groupByClause = $converter->getGroupByClause(); + /* + * Try getting the limit node + */ + $executed_node_name = "limit"; + $queryNode = $queryHandler->getNodeForClause("limit"); + + /* + * If none given, then take the select node + */ + if(is_null($queryNode)){ + $queryNode = $queryHandler->getNodeForClause("select"); + $executed_node_name = "select"; + } /* @@ -392,13 +431,38 @@ public function readAndProcessQuery($query, $parameters) { $sourceIdentifier = $parameters["package"] . "." . $parameters["resource"]; $sourceIdentifier = str_replace("/", ".", $sourceIdentifier); - // initialize the ORM redbeans to execute some SQL - R::setup($configObject->db_type . ":host=" . $configObject->location . ";dbname=" . $configObject->db_name, $configObject->username, $configObject->password); + /** + * Add the database we want to connect to the Redbean databases. + * This will allow us to switch between the connection with our own back-end and the database from which to read data. + */ + R::addDatabase('db_resource', $configObject->db_type . ":host=" . $configObject->location . ";dbname=" . $configObject->db_name, $configObject->username, $configObject->password); + R::selectDatabase('db_resource'); $resultObject = new \stdClass(); + // Create the SQL string $sql = $this->convertClausesToSQLString($converter, $configObject); + /** + * Get limit if set, and add 1, this way we know if we have to link to a next page or not + * and add it to the SQL query string. + */ + $offset = 0; + $limit = AResourceStrategy::$DEFAULT_PAGE_SIZE; + $limitless_sql = $sql; + $sql.= " LIMIT "; + + if($converter->getLimitClause()){ + $limit_array = $converter->getLimitClause(); + $offset = $limit_array[0]; + $limit = $limit_array[1]; + } + + $limit = $limit+1; + + $sql.= $offset . ","; + $sql.= $limit; + try { /* * Execute the query @@ -406,9 +470,27 @@ public function readAndProcessQuery($query, $parameters) { * we put together an array with the clauses used, and the phpObject retrieved from the database query. * We also put an empty entry for the order by clause (if given) so that the interpreter knows we didn't execute it. */ - $results = R::getAll($sql); + $results = R::getAll($sql); + /** + * Check if we have more rows then we can return in 1 page + */ + $result_count = count($results); + $limit = $limit - 1; + + if($result_count > $limit){ + + array_pop($results); + $page = $offset/$limit; + $page = round($page,0,PHP_ROUND_HALF_DOWN); + if($page==0){ + $page = 1; + } + $this->page = $page; + $this->setLinkHeader($page+1, $limit,"next"); + } $arrayOfRowObjects = array(); + /* * assemble objects out of the resultset */ @@ -428,6 +510,44 @@ public function readAndProcessQuery($query, $parameters) { array_push($arrayOfRowObjects, $rowobject); } + /** + * check if a previous header should be set. + */ + if($offset>0){ + + $offset = $offset - $limit; + + if($offset<0) + $offset = 0; + + $sql = $limitless_sql; + $sql.= " LIMIT "; + + if($converter->getLimitClause()){ + $limit_array = $converter->getLimitClause(); + $offset = $limit_array[0]; + $limit = $limit_array[1]; + } + + $sql.= $offset . ","; + $sql.= $limit; + + $previous_results = R::getAll($sql); + if(count($previous_results)>0){ + + $page = $offset/$limit; + $page = round($page,0,PHP_ROUND_HALF_DOWN); + if($page==0){ + $page = 2; + } + $this->page = $page; + + $this->setLinkHeader($page-1,$limit,"previous"); + } + } + // Link the redbean again with our back-end + R::selectDatabase('default'); + /* * We added all the possible clauses except for the order by clause in our SQL query. * That means that unless there's been an order by clause, we have executed the entire query. @@ -445,7 +565,7 @@ public function readAndProcessQuery($query, $parameters) { /* * We have executed the select partial tree, notify this to the universalfilterTableManager */ - $resultObject->clause = "select"; + $resultObject->clause = $executed_node_name; $resultObject->partialTreeResultObject = $arrayOfRowObjects; $resultObject->query = $query; @@ -505,8 +625,8 @@ private function convertClausesToSQLString($converter, $configObject) { foreach ($converter->getGroupByClause() as $groupbyidentifier) { $sql.= $groupbyidentifier . ", "; } - } - + } + $sql = rtrim($sql, ", "); return $sql; diff --git a/src/tdt/core/universalfilter/converter/SQLConverter.php b/src/tdt/core/universalfilter/converter/SQLConverter.php index 0860ba39..b50b7b8d 100755 --- a/src/tdt/core/universalfilter/converter/SQLConverter.php +++ b/src/tdt/core/universalfilter/converter/SQLConverter.php @@ -50,7 +50,7 @@ class SQLConverter { * Returns an array with [0] => offset and [1] => limit (amount of records) */ - public function getLimit() { + public function getLimitClause() { return $this->limitclause; } @@ -97,7 +97,8 @@ public function treeToSQLClauses(UniversalFilterNode $tree) { * @return string A string representation of the tree */ private function treeToSQL(UniversalFilterNode $tree) { - $method = "print_" . get_class($tree); + $classname = get_class($tree); + $method = "print_" . end(explode("\\", $classname)); //calls the correct clone method and then returns. return $this->$method($tree); @@ -381,7 +382,7 @@ public function getClause($clause) { array_push($clauses, $this->orderbyclause); break; case "limit": - array_push($clauses, $this->orderbyclause); + array_push($clauses, $this->limitclause); break; } diff --git a/src/tdt/core/universalfilter/interpreter/debugging/TreePrinter.php b/src/tdt/core/universalfilter/interpreter/debugging/TreePrinter.php index bec23f0c..bf02093a 100755 --- a/src/tdt/core/universalfilter/interpreter/debugging/TreePrinter.php +++ b/src/tdt/core/universalfilter/interpreter/debugging/TreePrinter.php @@ -44,7 +44,8 @@ public function treeToString(UniversalFilterNode $tree = null) { return $this->getPadding() . "[!!!! NULL !!!!]"; } - $method = "print_" . get_class($tree); + $classname = get_class($tree); + $method = "print_" . end(explode("\\", $classname)); //calls the correct clone method and then returns. $var = ""; if (method_exists($this, $method)) { @@ -85,74 +86,74 @@ private function incPadding($count) { } private function print_Identifier(Identifier $filter) { - return $this->getPadding() . "Identifier[ " . $filter->getIdentifierString() . " n"; + return $this->getPadding() . "Identifier[ " . $filter->getIdentifierString() . " ]\n"; } private function print_Constant(Constant $filter) { - return $this->getPadding() . "Constant[ " . $filter->getConstant() . " n"; + return $this->getPadding() . "Constant[ " . $filter->getConstant() . " ]\n"; } private function print_TableAliasFilter(TableAliasFilter $filter) { - return $this->getPadding() . "TableAliasFilter[" . $filter->getAlias() . "] {n" . - $this->getPadding(1) . "source: n" . + return $this->getPadding() . "TableAliasFilter[" . $filter->getAlias() . "] {\n" . + $this->getPadding(1) . "source: \n" . $this->treeToStringWithPadding(2, $filter->getSource()) . - $this->getPadding() . "}n"; + $this->getPadding() . "}\n"; } private function print_FilterByExpressionFilter(FilterByExpressionFilter $filter) { - return $this->getPadding() . "FilterByExpressionFilter {n" . - $this->getPadding(1) . "expression : n" . + return $this->getPadding() . "FilterByExpressionFilter {\n" . + $this->getPadding(1) . "expression : \n" . $this->treeToStringWithPadding(2, $filter->getExpression()) . - $this->getPadding(1) . "source: n" . + $this->getPadding(1) . "source: \n" . $this->treeToStringWithPadding(2, $filter->getSource()) . - $this->getPadding() . "}n"; + $this->getPadding() . "}\n"; } private function print_ColumnSelectionFilter(ColumnSelectionFilter $filter) { - $string = $this->getPadding() . "ColumnSelectionFilter {n"; + $string = $this->getPadding() . "ColumnSelectionFilter {\n"; foreach ($filter->getColumnData() as $index => $originalColumn) { $aliaspart = ""; if ($originalColumn->getAlias() != null) { $aliaspart = " [As " . $originalColumn->getAlias() . "]"; } - $string.=$this->getPadding(1) . "column " . ($index + 1) . $aliaspart . ": n"; + $string.=$this->getPadding(1) . "column " . ($index + 1) . $aliaspart . ": \n"; $string.=$this->treeToStringWithPadding(2, $originalColumn->getColumn()); } - $string.=$this->getPadding(1) . "source: n" . + $string.=$this->getPadding(1) . "source: \n" . $this->treeToStringWithPadding(2, $filter->getSource()) . - $this->getPadding() . "}n"; + $this->getPadding() . "}\n"; return $string; } private function print_SortFieldsFilter(SortFieldsFilter $filter) { - $string = $this->getPadding() . "SortFieldsFilter {n"; + $string = $this->getPadding() . "SortFieldsFilter {\n"; foreach ($filter->getColumnData() as $index => $originalColumn) { $name = $originalColumn->getColumn()->getIdentifierString(); $order = ($originalColumn->getSortOrder() == SortFieldsFilterColumn::$SORTORDER_ASCENDING ? "ascending" : "descending"); - $string.=$this->getPadding(1) . "sort column " . $name . " " . $order . " n"; + $string.=$this->getPadding(1) . "sort column " . $name . " " . $order . " \n"; } - $string.=$this->getPadding(1) . "in source: n" . + $string.=$this->getPadding(1) . "in source: \n" . $this->treeToStringWithPadding(2, $filter->getSource()) . - $this->getPadding() . "}n"; + $this->getPadding() . "}\n"; return $string; } private function print_DistinctFilter(DistinctFilter $filter) { - return $this->getPadding() . "DistinctFilter {n" . - $this->getPadding(1) . "source: n" . + return $this->getPadding() . "DistinctFilter {\n" . + $this->getPadding(1) . "source: \n" . $this->treeToStringWithPadding(2, $filter->getSource()) . - $this->getPadding() . "}n"; + $this->getPadding() . "}\n"; } private function print_LimitFilter(LimitFilter $filter) { - return $this->getPadding() . "LimitFilter {n" . - $this->getPadding(1) . "source: n" . + return $this->getPadding() . "LimitFilter {\n" . + $this->getPadding(1) . "source: \n" . $this->treeToStringWithPadding(2, $filter->getSource()) . - $this->getPadding() . "}n"; + $this->getPadding() . "}\n"; } private function print_DataGrouper(DataGrouper $filter) { @@ -164,60 +165,60 @@ private function print_DataGrouper(DataGrouper $filter) { $columnstring.=$column->getIdentifierString(); } - return $this->getPadding() . "DataGrouper[" . $columnstring . "] {n" . - $this->getPadding(1) . "source: n" . + return $this->getPadding() . "DataGrouper[" . $columnstring . "] {\n" . + $this->getPadding(1) . "source: \n" . $this->treeToStringWithPadding(2, $filter->getSource()) . - $this->getPadding() . "}n"; + $this->getPadding() . "}\n"; } private function print_DatasetJoinFilter(DatasetJoinFilter $filter) { - $string = $this->getPadding() . "DatasetJoinFilter [keepleft: " . ($filter->getKeepLeft() ? "true" : "false") . "; keepright: " . ($filter->getKeepRight() ? "true" : "false") . "] {n" . - $this->getPadding(1) . "source 1: n" . + $string = $this->getPadding() . "DatasetJoinFilter [keepleft: " . ($filter->getKeepLeft() ? "true" : "false") . "; keepright: " . ($filter->getKeepRight() ? "true" : "false") . "] {\n" . + $this->getPadding(1) . "source 1: \n" . $this->treeToStringWithPadding(2, $filter->getSource(0)) . - $this->getPadding(1) . "source 2: n" . + $this->getPadding(1) . "source 2: \n" . $this->treeToStringWithPadding(2, $filter->getSource(1)); if ($filter->getExpression() !== NULL) { - $string .= $this->getPadding(1) . "expression : n" . + $string .= $this->getPadding(1) . "expression : \n" . $this->treeToStringWithPadding(2, $filter->getExpression()); } else { - $string .= $this->getPadding(1) . "expression : <NONE> n"; + $string .= $this->getPadding(1) . "expression : <NONE> \n"; } - $string .= $this->getPadding() . "}n"; + $string .= $this->getPadding() . "}\n"; return $string; } private function print_UnaryFunction(UnaryFunction $filter) { - return $this->getPadding() . "UnaryFunction[" . $filter->getType() . "] {n" . - $this->getPadding(1) . "argument: n" . + return $this->getPadding() . "UnaryFunction[" . $filter->getType() . "] {\n" . + $this->getPadding(1) . "argument: \n" . $this->treeToStringWithPadding(2, $filter->getSource()) . - $this->getPadding() . "}n"; + $this->getPadding() . "}\n"; } private function print_BinaryFunction(BinaryFunction $filter) { - return $this->getPadding() . "BinaryFunction[" . $filter->getType() . "] {n" . - $this->getPadding(1) . "argument 1: n" . + return $this->getPadding() . "BinaryFunction[" . $filter->getType() . "] {\n" . + $this->getPadding(1) . "argument 1: \n" . $this->treeToStringWithPadding(2, $filter->getSource(0)) . - $this->getPadding(1) . "argument 2: n" . + $this->getPadding(1) . "argument 2: \n" . $this->treeToStringWithPadding(2, $filter->getSource(1)) . - $this->getPadding() . "}n"; + $this->getPadding() . "}\n"; } private function print_TernaryFunction(TernaryFunction $filter) { - return $this->getPadding() . "TernaryFunction[" . $filter->getType() . "] {n" . - $this->getPadding(1) . "argument 1: n" . + return $this->getPadding() . "TernaryFunction[" . $filter->getType() . "] {\n" . + $this->getPadding(1) . "argument 1: \n" . $this->treeToStringWithPadding(2, $filter->getSource(0)) . - $this->getPadding(1) . "argument 2: n" . + $this->getPadding(1) . "argument 2: \n" . $this->treeToStringWithPadding(2, $filter->getSource(1)) . - $this->getPadding(1) . "argument 3: n" . + $this->getPadding(1) . "argument 3: \n" . $this->treeToStringWithPadding(2, $filter->getSource(2)) . - $this->getPadding() . "}n"; + $this->getPadding() . "}\n"; } private function print_AggregatorFunction(AggregatorFunction $filter) { - return $this->getPadding() . "AggregatorFunction[" . $filter->getType() . "] {n" . - $this->getPadding(1) . "argument: n" . + return $this->getPadding() . "AggregatorFunction[" . $filter->getType() . "] {\n" . + $this->getPadding(1) . "argument: \n" . $this->treeToStringWithPadding(2, $filter->getSource()) . - $this->getPadding() . "}n"; + $this->getPadding() . "}\n"; } private function print_CheckInFunction(CheckInFunction $filter) { @@ -229,24 +230,24 @@ private function print_CheckInFunction(CheckInFunction $filter) { $checkstring.="" . $constant->getConstant() . ""; } - return $this->getPadding() . "CheckInFunction[" . $checkstring . "] {n" . - $this->getPadding(1) . "source: n" . + return $this->getPadding() . "CheckInFunction[" . $checkstring . "] {\n" . + $this->getPadding(1) . "source: \n" . $this->treeToStringWithPadding(2, $filter->getSource()) . - $this->getPadding() . "}n"; + $this->getPadding() . "}\n"; } private function printSomeUnknownNode(UniversalFilterNode $filter) { $string = $this->getPadding() . $filter->getType() . "[?]"; if ($filter instanceof NormalFilterNode) { - $string.=" {n"; + $string.=" {\n"; for ($index = 0; $index < $filter->getSourceCount(); $index++) { - $string.=$this->getPadding(1) . "source " . ($index + 1) . ": n"; + $string.=$this->getPadding(1) . "source " . ($index + 1) . ": \n"; $string.=$this->treeToStringWithPadding(2, $filter->getSource($index)); } - $string.=$this->getPadding() . "}n"; + $string.=$this->getPadding() . "}\n"; return $string; } else { - return $string . "n"; + return $string . "\n"; } } diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/IdentifierExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/IdentifierExecuter.php index cce1e84c..82be0527 100755 --- a/src/tdt/core/universalfilter/interpreter/executers/implementations/IdentifierExecuter.php +++ b/src/tdt/core/universalfilter/interpreter/executers/implementations/IdentifierExecuter.php @@ -24,6 +24,8 @@ use tdt\core\universalfilter\interpreter\IInterpreterControl; use tdt\core\universalfilter\interpreter\sourceusage\SourceUsageData; use tdt\core\universalfilter\UniversalFilterNode; +use tdt\exceptions\TDTException; +use tdt\core\utility\Config; class IdentifierExecuter extends AbstractUniversalFilterNodeExecuter { @@ -47,7 +49,10 @@ public function initExpression(UniversalFilterNode $filter, Environment $topenv, $this->isColumn = true; $this->header = $this->getColumnDataHeader($topenv, $this->filter->getIdentifierString()); if ($this->header === null) { - throw new Exception("The identifier " . $this->filter->getIdentifierString() . "can not be found. It is not a column."); + $exception_config = array(); + $exception_config["log_dir"] = Config::get("general", "logging", "path"); + $exception_config["url"] = Config::get("general", "hostname") . Config::get("general", "subdir") . "error"; + throw new TDTException(500,array("The identifier " . $this->filter->getIdentifierString() . "can not be found. It is not a column."),$exception_config); } if (!$this->isColumn) { $this->singlevaluecolumnheader = $this->header->getColumnInformationById($this->header->getColumnId()); diff --git a/src/tdt/core/universalfilter/interpreter/executers/implementations/LimitFilterExecuter.php b/src/tdt/core/universalfilter/interpreter/executers/implementations/LimitFilterExecuter.php index f8315eb1..bc016337 100755 --- a/src/tdt/core/universalfilter/interpreter/executers/implementations/LimitFilterExecuter.php +++ b/src/tdt/core/universalfilter/interpreter/executers/implementations/LimitFilterExecuter.php @@ -17,6 +17,9 @@ use tdt\core\universalfilter\interpreter\IInterpreterControl; use tdt\core\universalfilter\UniversalFilterNode; use tdt\exceptions\TDTException; +use Monolog\Handler\StreamHandler; +use Monolog\Logger; +use tdt\core\utility\Config; class LimitFilterExecuter extends AbstractUniversalFilterNodeExecuter { diff --git a/src/tdt/core/universalfilter/interpreter/other/QueryTreeHandler.php b/src/tdt/core/universalfilter/interpreter/other/QueryTreeHandler.php index 7e78543b..e649593a 100755 --- a/src/tdt/core/universalfilter/interpreter/other/QueryTreeHandler.php +++ b/src/tdt/core/universalfilter/interpreter/other/QueryTreeHandler.php @@ -45,7 +45,7 @@ public function getNodeForClause($clause) { while ($currentNode != null && !$found) { $type = $currentNode->getType(); - + switch ($clause) { case "orderby": if ($type == "FILTERSORTCOLUMNS") { @@ -67,6 +67,11 @@ public function getNodeForClause($clause) { $found = true; } break; + case "limit": + if ($type == "FILTERLIMIT") { + $found = true; + } + break; } if (method_exists($currentNode, "getSource")) { @@ -76,6 +81,9 @@ public function getNodeForClause($clause) { $currentNode = null; } } + if(!$found){ + return null; + } return $parentNode; } diff --git a/src/tdt/core/universalfilter/tablemanager/implementation/UniversalFilterTableManager.php b/src/tdt/core/universalfilter/tablemanager/implementation/UniversalFilterTableManager.php index 7f45da6d..be012467 100755 --- a/src/tdt/core/universalfilter/tablemanager/implementation/UniversalFilterTableManager.php +++ b/src/tdt/core/universalfilter/tablemanager/implementation/UniversalFilterTableManager.php @@ -23,6 +23,7 @@ use tdt\core\universalfilter\UniversalFilterNode; use tdt\core\utility\Config; use tdt\exceptions\TDTException; +use tdt\core\utility\RequestURI; class UniversalFilterTableManager implements IUniversalFilterTableManager { @@ -62,6 +63,32 @@ private function getFullResourcePhpObject($package, $resource, $RESTparameters = //removes the first element and reindex the array - this way we'll only keep the object specifiers (RESTful filtering) in this array array_shift($RESTparameters); } + /** + * Pass along limit and offset if given + */ + $ru = RequestURI::getInstance(Config::getConfigArray()); + $pageURL = $ru->getURI(); + $matches = array(); + + if(preg_match('/.*\.limit\((.*)\).*/',$pageURL,$matches)){ + $limit_items = explode(",",$matches[1]); + $limit = 0; + $offset = 0; + + if(count($limit_items) == 2){ + $offset = array_shift($limit_items); + $limit = array_shift($limit_items); + }else{ + $limit = array_shift($limit_items); + } + } + + $parameters["limit"] = $limit; + $parameters["offset"] = $offset; + + /** + * Read the resource from the model + */ $resourceObject = $model->readResource($package, $resource, $parameters, $RESTparameters); //implement cache diff --git a/tests/APITest.php b/tests/APITest.php index c02f60a5..b7979251 100644 --- a/tests/APITest.php +++ b/tests/APITest.php @@ -18,24 +18,40 @@ class APITest extends \PHPUnit_Framework_TestCase { private $config; public function __construct() { + + parent::__construct('testCSV'); /* * Prepare the configuration that will be used throughout the creation/reading/deleting * process of the test. */ $configArray = array("general" => array("hostname" => "", "subdir" => "", "defaultformat" => "json", "cache" => array("system" => "NoCache","host"=>"", "port"=>"")), - "db" => array("system" => "mysql", "host"=>"localhost","user"=>"root", "password" => "", "name" => "myapp_test"), - "logging" => array("enabled" => false, "path" => "")); + "db" => array("system" => "mysql", "host"=>"localhost","user"=>"root", "password" => "", "name" => "myapp_test"), + "logging" => array("enabled" => false, "path" => "")); Config::setConfig($configArray); } + protected function setUp(){ + parent::setUp(); + + ob_start(); // <-- very important! + } + + protected function tearDown(){ + header_remove(); // <-- VERY important. + parent::tearDown(); + } + /* * Test function to check if a CSV strategy is working correctly. * Tests: Create,Read,Delete */ + /** + * @runInSeparateProcess + */ public function testCSV() { $TEST_PACKAGE_NAME = "UNITTESTCSV"; @@ -46,17 +62,20 @@ public function testCSV() { 'resource_type' => "generic/CSV", 'delimiter' => ";", 'uri' => __DIR__ . "/data/CSVData.csv" - ); + ); + + /* * Try creating a resource, if anything fails, the test fails - */ + */ $create_resource = true; try{ $model = ResourcesModel::getInstance(); $model->createResource($TEST_PACKAGE_NAME . "/" . $TEST_RESOURCE_NAME,$parameters); }catch(Exception $ex){ - echo $ex->getMessage(); + echo $ex->getMessage(); + ob_flush(); $create_resource = false; } @@ -65,11 +84,12 @@ public function testCSV() { /* * Try reading the datasource */ + $read_datasource = true; try{ $model = $model = ResourcesModel::getInstance(); $csv_object = $model->readResource($TEST_PACKAGE_NAME,$TEST_RESOURCE_NAME,array(),array()); - + header_remove(); // Lets get the first rowobject and compare some values. // Clayton;Ap #630-7719 Scelerisque Road;ac.arcu@facilisismagna.ca;Pierre $object1 = array_shift($csv_object); @@ -80,6 +100,7 @@ public function testCSV() { }catch(Exception $ex){ echo $ex->getMessage(); + ob_flush(); $read_datasource = false; } @@ -104,6 +125,9 @@ public function testCSV() { * Test function to check if the DB strategy is working correctly. * Tests: Create,Read,Delete */ + /** + * @runInSeparateProcess + */ public function testDB(){ @@ -130,7 +154,7 @@ public function testDB(){ 'db_name' => $DB_NAME, 'db_type' => $DB_TYPE - ); + ); /* * Try creating a resource, if anything fails, the test fails @@ -180,7 +204,7 @@ public function testDB(){ // Lets get the object that we injected in the data table and check if it matches $object1 = array_shift($db_object); - + $this->assertEquals("Reginald",$object1->Name); $this->assertEquals("TSM",$object1->Surname); $this->assertEquals("San Francisco",$object1->City); @@ -212,6 +236,9 @@ public function testDB(){ * Test function to check if the JSON strategy is working correctly * Tests: Create,Read,Delete */ + /** + * @runInSeparateProcess + */ public function testJSON(){ $TEST_PACKAGE_NAME = "UNITTESTJSON"; @@ -221,7 +248,7 @@ public function testJSON(){ 'documentation' => "This is a test case for unittesting a JSON resource.", 'resource_type' => "generic/JSON", 'uri' => "http://data.appsforghent.be/TDTInfo/Resources.json" - ); + ); /* * Try creating a resource, if anything fails, the test fails @@ -249,7 +276,7 @@ public function testJSON(){ $read_datasource = false; } - + }catch(Exception $ex){ echo $ex->getMessage(); $read_datasource = false;