summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes M. Schmitt <schmittjoh@gmail.com>2011-02-13 12:35:21 +0100
committerFabien Potencier <fabien.potencier@gmail.com>2011-02-14 20:55:06 +0100
commit2f8cd3cca342f5f4b6a01477c0123bf12592275f (patch)
tree843d968d5f3d2adca4125d46e6c1b20912124b81
parentd3b1f6131134e5be76e52eee30952356d8e159e4 (diff)
downloadsymfony-security-2f8cd3cca342f5f4b6a01477c0123bf12592275f.zip
symfony-security-2f8cd3cca342f5f4b6a01477c0123bf12592275f.tar.gz
symfony-security-2f8cd3cca342f5f4b6a01477c0123bf12592275f.tar.bz2
[Security/Acl] added pre-generated schemas
-rw-r--r--Acl/Resources/bin/generateSql.php43
-rw-r--r--Acl/Resources/schema/db2.sql43
-rw-r--r--Acl/Resources/schema/mssql.sql43
-rw-r--r--Acl/Resources/schema/mysql.sql21
-rw-r--r--Acl/Resources/schema/oracle.sql175
-rw-r--r--Acl/Resources/schema/postgresql.sql43
-rw-r--r--Acl/Resources/schema/sqlite.sql31
7 files changed, 399 insertions, 0 deletions
diff --git a/Acl/Resources/bin/generateSql.php b/Acl/Resources/bin/generateSql.php
new file mode 100644
index 0000000..2307226
--- /dev/null
+++ b/Acl/Resources/bin/generateSql.php
@@ -0,0 +1,43 @@
+<?php
+
+require_once __DIR__.'/../../../../ClassLoader/UniversalClassLoader.php';
+
+use Symfony\Component\ClassLoader\UniversalClassLoader;
+use Symfony\Component\Finder\Finder;
+use Symfony\Component\Security\Acl\Dbal\Schema;
+
+$loader = new UniversalClassLoader();
+$loader->registerNamespaces(array(
+ 'Symfony' => __DIR__.'/../../../../../..',
+ 'Doctrine\\Common' => __DIR__.'/../../../../../../../vendor/doctrine-common/lib',
+ 'Doctrine\\DBAL\\Migrations' => __DIR__.'/../../../../../../../vendor/doctrine-migrations/lib',
+ 'Doctrine\\DBAL' => __DIR__.'/../../../../../../../vendor/doctrine-dbal/lib',
+ 'Doctrine' => __DIR__.'/../../../../../../../vendor/doctrine/lib',
+));
+$loader->register();
+
+
+$schema = new Schema(array(
+ 'class_table_name' => 'acl_classes',
+ 'entry_table_name' => 'acl_entries',
+ 'oid_table_name' => 'acl_object_identities',
+ 'oid_ancestors_table_name' => 'acl_object_identity_ancestors',
+ 'sid_table_name' => 'acl_security_identities',
+));
+
+$reflection = new ReflectionClass('Doctrine\DBAL\Platforms\AbstractPlatform');
+$finder = new Finder();
+$finder->name('*.php')->in(dirname($reflection->getFileName()));
+foreach ($finder as $file) {
+ require_once $file->getPathName();
+ $className = sprintf('Doctrine\DBAL\Platforms\%s', basename($file->getFilename(), '.php'));
+
+ $reflection = new ReflectionClass($className);
+ if ($reflection->isAbstract()) {
+ continue;
+ }
+
+ $platform = $reflection->newInstance();
+ $targetFile = sprintf(__DIR__.'/../schema/%s.sql', $platform->getName());
+ file_put_contents($targetFile, implode("\n\n", $schema->toSql($platform)));
+}
diff --git a/Acl/Resources/schema/db2.sql b/Acl/Resources/schema/db2.sql
new file mode 100644
index 0000000..2507271
--- /dev/null
+++ b/Acl/Resources/schema/db2.sql
@@ -0,0 +1,43 @@
+CREATE TABLE acl_classes (id INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL, class_type VARCHAR(200) NOT NULL, PRIMARY KEY(id))
+
+CREATE UNIQUE INDEX acl_classes_class_type_uniq ON acl_classes (class_type)
+
+CREATE TABLE acl_security_identities (id INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL, identifier VARCHAR(200) NOT NULL, username SMALLINT NOT NULL, PRIMARY KEY(id))
+
+CREATE UNIQUE INDEX ecurity_identities_identifier_username_uniq ON acl_security_identities (identifier, username)
+
+CREATE TABLE acl_object_identities (id INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL, parent_object_identity_id INTEGER DEFAULT NULL, class_id INTEGER NOT NULL, object_identifier VARCHAR(100) NOT NULL, entries_inheriting SMALLINT NOT NULL, PRIMARY KEY(id))
+
+CREATE UNIQUE INDEX object_identities_object_identifier_class_id_uniq ON acl_object_identities (object_identifier, class_id)
+
+CREATE INDEX acl_object_identities_parent_object_identity_id_idx ON acl_object_identities (parent_object_identity_id)
+
+CREATE TABLE acl_object_identity_ancestors (object_identity_id INTEGER NOT NULL, ancestor_id INTEGER NOT NULL, PRIMARY KEY(object_identity_id, ancestor_id))
+
+CREATE INDEX acl_object_identity_ancestors_object_identity_id_idx ON acl_object_identity_ancestors (object_identity_id)
+
+CREATE INDEX acl_object_identity_ancestors_ancestor_id_idx ON acl_object_identity_ancestors (ancestor_id)
+
+CREATE TABLE acl_entries (id INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL, class_id INTEGER NOT NULL, object_identity_id INTEGER DEFAULT NULL, security_identity_id INTEGER NOT NULL, field_name VARCHAR(50) DEFAULT NULL, ace_order SMALLINT NOT NULL, mask INTEGER NOT NULL, granting SMALLINT NOT NULL, granting_strategy VARCHAR(30) NOT NULL, audit_success SMALLINT NOT NULL, audit_failure SMALLINT NOT NULL, PRIMARY KEY(id))
+
+CREATE UNIQUE INDEX cl_entries_class_id_dentity_id_field_name_ace_order_uniq ON acl_entries (class_id, object_identity_id, field_name, ace_order)
+
+CREATE INDEX acl_entries_class_id_ct_identity_id_ty_identity_id_idx ON acl_entries (class_id, object_identity_id, security_identity_id)
+
+CREATE INDEX acl_entries_class_id_idx ON acl_entries (class_id)
+
+CREATE INDEX acl_entries_object_identity_id_idx ON acl_entries (object_identity_id)
+
+CREATE INDEX acl_entries_security_identity_id_idx ON acl_entries (security_identity_id)
+
+ALTER TABLE acl_object_identities ADD CONSTRAINT acl_object_identities_parent_object_identity_id_fk FOREIGN KEY (parent_object_identity_id) REFERENCES acl_object_identities(id) ON UPDATE RESTRICT ON DELETE RESTRICT
+
+ALTER TABLE acl_object_identity_ancestors ADD CONSTRAINT acl_object_identity_ancestors_object_identity_id_fk FOREIGN KEY (object_identity_id) REFERENCES acl_object_identities(id) ON UPDATE CASCADE ON DELETE CASCADE
+
+ALTER TABLE acl_object_identity_ancestors ADD CONSTRAINT acl_object_identity_ancestors_ancestor_id_fk FOREIGN KEY (ancestor_id) REFERENCES acl_object_identities(id) ON UPDATE CASCADE ON DELETE CASCADE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_class_id_fk FOREIGN KEY (class_id) REFERENCES acl_classes(id) ON UPDATE CASCADE ON DELETE CASCADE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_object_identity_id_fk FOREIGN KEY (object_identity_id) REFERENCES acl_object_identities(id) ON UPDATE CASCADE ON DELETE CASCADE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_security_identity_id_fk FOREIGN KEY (security_identity_id) REFERENCES acl_security_identities(id) ON UPDATE CASCADE ON DELETE CASCADE \ No newline at end of file
diff --git a/Acl/Resources/schema/mssql.sql b/Acl/Resources/schema/mssql.sql
new file mode 100644
index 0000000..29b86de
--- /dev/null
+++ b/Acl/Resources/schema/mssql.sql
@@ -0,0 +1,43 @@
+CREATE TABLE acl_classes (id INT IDENTITY NOT NULL, class_type NVARCHAR(200) NOT NULL, PRIMARY KEY(id))
+
+CREATE UNIQUE INDEX acl_classes_class_type_uniq ON acl_classes (class_type) WHERE class_type IS NOT NULL
+
+CREATE TABLE acl_security_identities (id INT IDENTITY NOT NULL, identifier NVARCHAR(200) NOT NULL, username BIT DEFAULT '0' NOT NULL, PRIMARY KEY(id))
+
+CREATE UNIQUE INDEX ecurity_identities_identifier_username_uniq ON acl_security_identities (identifier, username) WHERE identifier IS NOT NULL AND username IS NOT NULL
+
+CREATE TABLE acl_object_identities (id INT IDENTITY NOT NULL, parent_object_identity_id INT DEFAULT NULL, class_id INT NOT NULL, object_identifier NVARCHAR(100) NOT NULL, entries_inheriting BIT DEFAULT '0' NOT NULL, PRIMARY KEY(id))
+
+CREATE UNIQUE INDEX object_identities_object_identifier_class_id_uniq ON acl_object_identities (object_identifier, class_id) WHERE object_identifier IS NOT NULL AND class_id IS NOT NULL
+
+CREATE INDEX acl_object_identities_parent_object_identity_id_idx ON acl_object_identities (parent_object_identity_id)
+
+CREATE TABLE acl_object_identity_ancestors (object_identity_id INT NOT NULL, ancestor_id INT NOT NULL, PRIMARY KEY(object_identity_id, ancestor_id))
+
+CREATE INDEX acl_object_identity_ancestors_object_identity_id_idx ON acl_object_identity_ancestors (object_identity_id)
+
+CREATE INDEX acl_object_identity_ancestors_ancestor_id_idx ON acl_object_identity_ancestors (ancestor_id)
+
+CREATE TABLE acl_entries (id INT IDENTITY NOT NULL, class_id INT NOT NULL, object_identity_id INT DEFAULT NULL, security_identity_id INT NOT NULL, field_name NVARCHAR(50) DEFAULT NULL, ace_order SMALLINT NOT NULL, mask INT NOT NULL, granting BIT NOT NULL, granting_strategy NVARCHAR(30) NOT NULL, audit_success BIT DEFAULT '0' NOT NULL, audit_failure BIT DEFAULT '0' NOT NULL, PRIMARY KEY(id))
+
+CREATE UNIQUE INDEX cl_entries_class_id_dentity_id_field_name_ace_order_uniq ON acl_entries (class_id, object_identity_id, field_name, ace_order) WHERE class_id IS NOT NULL AND object_identity_id IS NOT NULL AND field_name IS NOT NULL AND ace_order IS NOT NULL
+
+CREATE INDEX acl_entries_class_id_ct_identity_id_ty_identity_id_idx ON acl_entries (class_id, object_identity_id, security_identity_id)
+
+CREATE INDEX acl_entries_class_id_idx ON acl_entries (class_id)
+
+CREATE INDEX acl_entries_object_identity_id_idx ON acl_entries (object_identity_id)
+
+CREATE INDEX acl_entries_security_identity_id_idx ON acl_entries (security_identity_id)
+
+ALTER TABLE acl_object_identities ADD CONSTRAINT acl_object_identities_parent_object_identity_id_fk FOREIGN KEY (parent_object_identity_id) REFERENCES acl_object_identities(id) ON UPDATE RESTRICT ON DELETE RESTRICT
+
+ALTER TABLE acl_object_identity_ancestors ADD CONSTRAINT acl_object_identity_ancestors_object_identity_id_fk FOREIGN KEY (object_identity_id) REFERENCES acl_object_identities(id) ON UPDATE CASCADE ON DELETE CASCADE
+
+ALTER TABLE acl_object_identity_ancestors ADD CONSTRAINT acl_object_identity_ancestors_ancestor_id_fk FOREIGN KEY (ancestor_id) REFERENCES acl_object_identities(id) ON UPDATE CASCADE ON DELETE CASCADE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_class_id_fk FOREIGN KEY (class_id) REFERENCES acl_classes(id) ON UPDATE CASCADE ON DELETE CASCADE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_object_identity_id_fk FOREIGN KEY (object_identity_id) REFERENCES acl_object_identities(id) ON UPDATE CASCADE ON DELETE CASCADE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_security_identity_id_fk FOREIGN KEY (security_identity_id) REFERENCES acl_security_identities(id) ON UPDATE CASCADE ON DELETE CASCADE \ No newline at end of file
diff --git a/Acl/Resources/schema/mysql.sql b/Acl/Resources/schema/mysql.sql
new file mode 100644
index 0000000..e6ce8fb
--- /dev/null
+++ b/Acl/Resources/schema/mysql.sql
@@ -0,0 +1,21 @@
+CREATE TABLE acl_classes (id INT AUTO_INCREMENT NOT NULL, class_type VARCHAR(200) NOT NULL, UNIQUE INDEX acl_classes_class_type_uniq (class_type), PRIMARY KEY(id)) ENGINE = InnoDB
+
+CREATE TABLE acl_security_identities (id INT AUTO_INCREMENT NOT NULL, identifier VARCHAR(200) NOT NULL, username TINYINT(1) DEFAULT '0' NOT NULL, UNIQUE INDEX ecurity_identities_identifier_username_uniq (identifier, username), PRIMARY KEY(id)) ENGINE = InnoDB
+
+CREATE TABLE acl_object_identities (id INT AUTO_INCREMENT NOT NULL, parent_object_identity_id INT DEFAULT NULL, class_id INT NOT NULL, object_identifier VARCHAR(100) NOT NULL, entries_inheriting TINYINT(1) DEFAULT '0' NOT NULL, UNIQUE INDEX object_identities_object_identifier_class_id_uniq (object_identifier, class_id), INDEX acl_object_identities_parent_object_identity_id_idx (parent_object_identity_id), PRIMARY KEY(id)) ENGINE = InnoDB
+
+CREATE TABLE acl_object_identity_ancestors (object_identity_id INT NOT NULL, ancestor_id INT NOT NULL, INDEX acl_object_identity_ancestors_object_identity_id_idx (object_identity_id), INDEX acl_object_identity_ancestors_ancestor_id_idx (ancestor_id), PRIMARY KEY(object_identity_id, ancestor_id)) ENGINE = InnoDB
+
+CREATE TABLE acl_entries (id INT AUTO_INCREMENT NOT NULL, class_id INT NOT NULL, object_identity_id INT DEFAULT NULL, security_identity_id INT NOT NULL, field_name VARCHAR(50) DEFAULT NULL, ace_order SMALLINT NOT NULL, mask INT NOT NULL, granting TINYINT(1) NOT NULL, granting_strategy VARCHAR(30) NOT NULL, audit_success TINYINT(1) DEFAULT '0' NOT NULL, audit_failure TINYINT(1) DEFAULT '0' NOT NULL, UNIQUE INDEX cl_entries_class_id_dentity_id_field_name_ace_order_uniq (class_id, object_identity_id, field_name, ace_order), INDEX acl_entries_class_id_ct_identity_id_ty_identity_id_idx (class_id, object_identity_id, security_identity_id), INDEX acl_entries_class_id_idx (class_id), INDEX acl_entries_object_identity_id_idx (object_identity_id), INDEX acl_entries_security_identity_id_idx (security_identity_id), PRIMARY KEY(id)) ENGINE = InnoDB
+
+ALTER TABLE acl_object_identities ADD CONSTRAINT acl_object_identities_parent_object_identity_id_fk FOREIGN KEY (parent_object_identity_id) REFERENCES acl_object_identities(id) ON UPDATE RESTRICT ON DELETE RESTRICT
+
+ALTER TABLE acl_object_identity_ancestors ADD CONSTRAINT acl_object_identity_ancestors_object_identity_id_fk FOREIGN KEY (object_identity_id) REFERENCES acl_object_identities(id) ON UPDATE CASCADE ON DELETE CASCADE
+
+ALTER TABLE acl_object_identity_ancestors ADD CONSTRAINT acl_object_identity_ancestors_ancestor_id_fk FOREIGN KEY (ancestor_id) REFERENCES acl_object_identities(id) ON UPDATE CASCADE ON DELETE CASCADE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_class_id_fk FOREIGN KEY (class_id) REFERENCES acl_classes(id) ON UPDATE CASCADE ON DELETE CASCADE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_object_identity_id_fk FOREIGN KEY (object_identity_id) REFERENCES acl_object_identities(id) ON UPDATE CASCADE ON DELETE CASCADE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_security_identity_id_fk FOREIGN KEY (security_identity_id) REFERENCES acl_security_identities(id) ON UPDATE CASCADE ON DELETE CASCADE \ No newline at end of file
diff --git a/Acl/Resources/schema/oracle.sql b/Acl/Resources/schema/oracle.sql
new file mode 100644
index 0000000..0575bbc
--- /dev/null
+++ b/Acl/Resources/schema/oracle.sql
@@ -0,0 +1,175 @@
+CREATE TABLE acl_classes (id NUMBER(10) NOT NULL, class_type VARCHAR2(200) NOT NULL, PRIMARY KEY(id))
+
+DECLARE
+ constraints_Count NUMBER;
+BEGIN
+ SELECT COUNT(CONSTRAINT_NAME) INTO constraints_Count FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'ACL_CLASSES' AND CONSTRAINT_TYPE = 'P';
+ IF constraints_Count = 0 OR constraints_Count = '' THEN
+ EXECUTE IMMEDIATE 'ALTER TABLE ACL_CLASSES ADD CONSTRAINT ACL_CLASSES_AI_PK PRIMARY KEY (id)';
+ END IF;
+END;
+
+CREATE SEQUENCE ACL_CLASSES_SEQ START WITH 1 MINVALUE 1 INCREMENT BY 1
+
+CREATE TRIGGER ACL_CLASSES_AI_PK
+ BEFORE INSERT
+ ON ACL_CLASSES
+ FOR EACH ROW
+DECLARE
+ last_Sequence NUMBER;
+ last_InsertID NUMBER;
+BEGIN
+ SELECT ACL_CLASSES_SEQ.NEXTVAL INTO :NEW.id FROM DUAL;
+ IF (:NEW.id IS NULL OR :NEW.id = 0) THEN
+ SELECT ACL_CLASSES_SEQ.NEXTVAL INTO :NEW.id FROM DUAL;
+ ELSE
+ SELECT NVL(Last_Number, 0) INTO last_Sequence
+ FROM User_Sequences
+ WHERE Sequence_Name = 'ACL_CLASSES_SEQ';
+ SELECT :NEW.id INTO last_InsertID FROM DUAL;
+ WHILE (last_InsertID > last_Sequence) LOOP
+ SELECT ACL_CLASSES_SEQ.NEXTVAL INTO last_Sequence FROM DUAL;
+ END LOOP;
+ END IF;
+END;
+
+CREATE UNIQUE INDEX acl_classes_class_type_uniq ON acl_classes (class_type)
+
+CREATE TABLE acl_security_identities (id NUMBER(10) NOT NULL, identifier VARCHAR2(200) NOT NULL, username NUMBER(1) DEFAULT '0' NOT NULL, PRIMARY KEY(id))
+
+DECLARE
+ constraints_Count NUMBER;
+BEGIN
+ SELECT COUNT(CONSTRAINT_NAME) INTO constraints_Count FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'ACL_SECURITY_IDENTITIES' AND CONSTRAINT_TYPE = 'P';
+ IF constraints_Count = 0 OR constraints_Count = '' THEN
+ EXECUTE IMMEDIATE 'ALTER TABLE ACL_SECURITY_IDENTITIES ADD CONSTRAINT ACL_SECURITY_IDENTITIES_AI_PK PRIMARY KEY (id)';
+ END IF;
+END;
+
+CREATE SEQUENCE ACL_SECURITY_IDENTITIES_SEQ START WITH 1 MINVALUE 1 INCREMENT BY 1
+
+CREATE TRIGGER ACL_SECURITY_IDENTITIES_AI_PK
+ BEFORE INSERT
+ ON ACL_SECURITY_IDENTITIES
+ FOR EACH ROW
+DECLARE
+ last_Sequence NUMBER;
+ last_InsertID NUMBER;
+BEGIN
+ SELECT ACL_SECURITY_IDENTITIES_SEQ.NEXTVAL INTO :NEW.id FROM DUAL;
+ IF (:NEW.id IS NULL OR :NEW.id = 0) THEN
+ SELECT ACL_SECURITY_IDENTITIES_SEQ.NEXTVAL INTO :NEW.id FROM DUAL;
+ ELSE
+ SELECT NVL(Last_Number, 0) INTO last_Sequence
+ FROM User_Sequences
+ WHERE Sequence_Name = 'ACL_SECURITY_IDENTITIES_SEQ';
+ SELECT :NEW.id INTO last_InsertID FROM DUAL;
+ WHILE (last_InsertID > last_Sequence) LOOP
+ SELECT ACL_SECURITY_IDENTITIES_SEQ.NEXTVAL INTO last_Sequence FROM DUAL;
+ END LOOP;
+ END IF;
+END;
+
+CREATE UNIQUE INDEX ecurity_identities_identifier_username_uniq ON acl_security_identities (identifier, username)
+
+CREATE TABLE acl_object_identities (id NUMBER(10) NOT NULL, parent_object_identity_id NUMBER(10) DEFAULT NULL, class_id NUMBER(10) NOT NULL, object_identifier VARCHAR2(100) NOT NULL, entries_inheriting NUMBER(1) DEFAULT '0' NOT NULL, PRIMARY KEY(id))
+
+DECLARE
+ constraints_Count NUMBER;
+BEGIN
+ SELECT COUNT(CONSTRAINT_NAME) INTO constraints_Count FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'ACL_OBJECT_IDENTITIES' AND CONSTRAINT_TYPE = 'P';
+ IF constraints_Count = 0 OR constraints_Count = '' THEN
+ EXECUTE IMMEDIATE 'ALTER TABLE ACL_OBJECT_IDENTITIES ADD CONSTRAINT ACL_OBJECT_IDENTITIES_AI_PK PRIMARY KEY (id)';
+ END IF;
+END;
+
+CREATE SEQUENCE ACL_OBJECT_IDENTITIES_SEQ START WITH 1 MINVALUE 1 INCREMENT BY 1
+
+CREATE TRIGGER ACL_OBJECT_IDENTITIES_AI_PK
+ BEFORE INSERT
+ ON ACL_OBJECT_IDENTITIES
+ FOR EACH ROW
+DECLARE
+ last_Sequence NUMBER;
+ last_InsertID NUMBER;
+BEGIN
+ SELECT ACL_OBJECT_IDENTITIES_SEQ.NEXTVAL INTO :NEW.id FROM DUAL;
+ IF (:NEW.id IS NULL OR :NEW.id = 0) THEN
+ SELECT ACL_OBJECT_IDENTITIES_SEQ.NEXTVAL INTO :NEW.id FROM DUAL;
+ ELSE
+ SELECT NVL(Last_Number, 0) INTO last_Sequence
+ FROM User_Sequences
+ WHERE Sequence_Name = 'ACL_OBJECT_IDENTITIES_SEQ';
+ SELECT :NEW.id INTO last_InsertID FROM DUAL;
+ WHILE (last_InsertID > last_Sequence) LOOP
+ SELECT ACL_OBJECT_IDENTITIES_SEQ.NEXTVAL INTO last_Sequence FROM DUAL;
+ END LOOP;
+ END IF;
+END;
+
+CREATE UNIQUE INDEX object_identities_object_identifier_class_id_uniq ON acl_object_identities (object_identifier, class_id)
+
+CREATE INDEX acl_object_identities_parent_object_identity_id_idx ON acl_object_identities (parent_object_identity_id)
+
+CREATE TABLE acl_object_identity_ancestors (object_identity_id NUMBER(10) NOT NULL, ancestor_id NUMBER(10) NOT NULL, PRIMARY KEY(object_identity_id, ancestor_id))
+
+CREATE INDEX acl_object_identity_ancestors_object_identity_id_idx ON acl_object_identity_ancestors (object_identity_id)
+
+CREATE INDEX acl_object_identity_ancestors_ancestor_id_idx ON acl_object_identity_ancestors (ancestor_id)
+
+CREATE TABLE acl_entries (id NUMBER(10) NOT NULL, class_id NUMBER(10) NOT NULL, object_identity_id NUMBER(10) DEFAULT NULL, security_identity_id NUMBER(10) NOT NULL, field_name VARCHAR2(50) DEFAULT NULL, ace_order NUMBER(5) NOT NULL, mask NUMBER(10) NOT NULL, granting NUMBER(1) NOT NULL, granting_strategy VARCHAR2(30) NOT NULL, audit_success NUMBER(1) DEFAULT '0' NOT NULL, audit_failure NUMBER(1) DEFAULT '0' NOT NULL, PRIMARY KEY(id))
+
+DECLARE
+ constraints_Count NUMBER;
+BEGIN
+ SELECT COUNT(CONSTRAINT_NAME) INTO constraints_Count FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'ACL_ENTRIES' AND CONSTRAINT_TYPE = 'P';
+ IF constraints_Count = 0 OR constraints_Count = '' THEN
+ EXECUTE IMMEDIATE 'ALTER TABLE ACL_ENTRIES ADD CONSTRAINT ACL_ENTRIES_AI_PK PRIMARY KEY (id)';
+ END IF;
+END;
+
+CREATE SEQUENCE ACL_ENTRIES_SEQ START WITH 1 MINVALUE 1 INCREMENT BY 1
+
+CREATE TRIGGER ACL_ENTRIES_AI_PK
+ BEFORE INSERT
+ ON ACL_ENTRIES
+ FOR EACH ROW
+DECLARE
+ last_Sequence NUMBER;
+ last_InsertID NUMBER;
+BEGIN
+ SELECT ACL_ENTRIES_SEQ.NEXTVAL INTO :NEW.id FROM DUAL;
+ IF (:NEW.id IS NULL OR :NEW.id = 0) THEN
+ SELECT ACL_ENTRIES_SEQ.NEXTVAL INTO :NEW.id FROM DUAL;
+ ELSE
+ SELECT NVL(Last_Number, 0) INTO last_Sequence
+ FROM User_Sequences
+ WHERE Sequence_Name = 'ACL_ENTRIES_SEQ';
+ SELECT :NEW.id INTO last_InsertID FROM DUAL;
+ WHILE (last_InsertID > last_Sequence) LOOP
+ SELECT ACL_ENTRIES_SEQ.NEXTVAL INTO last_Sequence FROM DUAL;
+ END LOOP;
+ END IF;
+END;
+
+CREATE UNIQUE INDEX cl_entries_class_id_dentity_id_field_name_ace_order_uniq ON acl_entries (class_id, object_identity_id, field_name, ace_order)
+
+CREATE INDEX acl_entries_class_id_ct_identity_id_ty_identity_id_idx ON acl_entries (class_id, object_identity_id, security_identity_id)
+
+CREATE INDEX acl_entries_class_id_idx ON acl_entries (class_id)
+
+CREATE INDEX acl_entries_object_identity_id_idx ON acl_entries (object_identity_id)
+
+CREATE INDEX acl_entries_security_identity_id_idx ON acl_entries (security_identity_id)
+
+ALTER TABLE acl_object_identities ADD CONSTRAINT acl_object_identities_parent_object_identity_id_fk FOREIGN KEY (parent_object_identity_id) REFERENCES acl_object_identities(id) ON DELETE RESTRICT
+
+ALTER TABLE acl_object_identity_ancestors ADD CONSTRAINT acl_object_identity_ancestors_object_identity_id_fk FOREIGN KEY (object_identity_id) REFERENCES acl_object_identities(id) ON DELETE CASCADE
+
+ALTER TABLE acl_object_identity_ancestors ADD CONSTRAINT acl_object_identity_ancestors_ancestor_id_fk FOREIGN KEY (ancestor_id) REFERENCES acl_object_identities(id) ON DELETE CASCADE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_class_id_fk FOREIGN KEY (class_id) REFERENCES acl_classes(id) ON DELETE CASCADE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_object_identity_id_fk FOREIGN KEY (object_identity_id) REFERENCES acl_object_identities(id) ON DELETE CASCADE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_security_identity_id_fk FOREIGN KEY (security_identity_id) REFERENCES acl_security_identities(id) ON DELETE CASCADE \ No newline at end of file
diff --git a/Acl/Resources/schema/postgresql.sql b/Acl/Resources/schema/postgresql.sql
new file mode 100644
index 0000000..5b45ffa
--- /dev/null
+++ b/Acl/Resources/schema/postgresql.sql
@@ -0,0 +1,43 @@
+CREATE TABLE acl_classes (id SERIAL NOT NULL, class_type VARCHAR(200) NOT NULL, PRIMARY KEY(id))
+
+CREATE UNIQUE INDEX acl_classes_class_type_uniq ON acl_classes (class_type)
+
+CREATE TABLE acl_security_identities (id SERIAL NOT NULL, identifier VARCHAR(200) NOT NULL, username BOOLEAN DEFAULT '0' NOT NULL, PRIMARY KEY(id))
+
+CREATE UNIQUE INDEX ecurity_identities_identifier_username_uniq ON acl_security_identities (identifier, username)
+
+CREATE TABLE acl_object_identities (id SERIAL NOT NULL, parent_object_identity_id INT DEFAULT NULL, class_id INT NOT NULL, object_identifier VARCHAR(100) NOT NULL, entries_inheriting BOOLEAN DEFAULT '0' NOT NULL, PRIMARY KEY(id))
+
+CREATE UNIQUE INDEX object_identities_object_identifier_class_id_uniq ON acl_object_identities (object_identifier, class_id)
+
+CREATE INDEX acl_object_identities_parent_object_identity_id_idx ON acl_object_identities (parent_object_identity_id)
+
+CREATE TABLE acl_object_identity_ancestors (object_identity_id INT NOT NULL, ancestor_id INT NOT NULL, PRIMARY KEY(object_identity_id, ancestor_id))
+
+CREATE INDEX acl_object_identity_ancestors_object_identity_id_idx ON acl_object_identity_ancestors (object_identity_id)
+
+CREATE INDEX acl_object_identity_ancestors_ancestor_id_idx ON acl_object_identity_ancestors (ancestor_id)
+
+CREATE TABLE acl_entries (id SERIAL NOT NULL, class_id INT NOT NULL, object_identity_id INT DEFAULT NULL, security_identity_id INT NOT NULL, field_name VARCHAR(50) DEFAULT NULL, ace_order SMALLINT NOT NULL, mask INT NOT NULL, granting BOOLEAN NOT NULL, granting_strategy VARCHAR(30) NOT NULL, audit_success BOOLEAN DEFAULT '0' NOT NULL, audit_failure BOOLEAN DEFAULT '0' NOT NULL, PRIMARY KEY(id))
+
+CREATE UNIQUE INDEX cl_entries_class_id_dentity_id_field_name_ace_order_uniq ON acl_entries (class_id, object_identity_id, field_name, ace_order)
+
+CREATE INDEX acl_entries_class_id_ct_identity_id_ty_identity_id_idx ON acl_entries (class_id, object_identity_id, security_identity_id)
+
+CREATE INDEX acl_entries_class_id_idx ON acl_entries (class_id)
+
+CREATE INDEX acl_entries_object_identity_id_idx ON acl_entries (object_identity_id)
+
+CREATE INDEX acl_entries_security_identity_id_idx ON acl_entries (security_identity_id)
+
+ALTER TABLE acl_object_identities ADD CONSTRAINT acl_object_identities_parent_object_identity_id_fk FOREIGN KEY (parent_object_identity_id) REFERENCES acl_object_identities(id) ON UPDATE RESTRICT ON DELETE RESTRICT NOT DEFERRABLE INITIALLY IMMEDIATE
+
+ALTER TABLE acl_object_identity_ancestors ADD CONSTRAINT acl_object_identity_ancestors_object_identity_id_fk FOREIGN KEY (object_identity_id) REFERENCES acl_object_identities(id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
+
+ALTER TABLE acl_object_identity_ancestors ADD CONSTRAINT acl_object_identity_ancestors_ancestor_id_fk FOREIGN KEY (ancestor_id) REFERENCES acl_object_identities(id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_class_id_fk FOREIGN KEY (class_id) REFERENCES acl_classes(id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_object_identity_id_fk FOREIGN KEY (object_identity_id) REFERENCES acl_object_identities(id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
+
+ALTER TABLE acl_entries ADD CONSTRAINT acl_entries_security_identity_id_fk FOREIGN KEY (security_identity_id) REFERENCES acl_security_identities(id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE \ No newline at end of file
diff --git a/Acl/Resources/schema/sqlite.sql b/Acl/Resources/schema/sqlite.sql
new file mode 100644
index 0000000..821d432
--- /dev/null
+++ b/Acl/Resources/schema/sqlite.sql
@@ -0,0 +1,31 @@
+CREATE TABLE acl_classes (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, class_type VARCHAR(200) NOT NULL)
+
+CREATE UNIQUE INDEX acl_classes_class_type_uniq ON acl_classes (class_type)
+
+CREATE TABLE acl_security_identities (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, identifier VARCHAR(200) NOT NULL, username BOOLEAN DEFAULT '0' NOT NULL)
+
+CREATE UNIQUE INDEX ecurity_identities_identifier_username_uniq ON acl_security_identities (identifier, username)
+
+CREATE TABLE acl_object_identities (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_object_identity_id INTEGER DEFAULT NULL, class_id INTEGER NOT NULL, object_identifier VARCHAR(100) NOT NULL, entries_inheriting BOOLEAN DEFAULT '0' NOT NULL)
+
+CREATE UNIQUE INDEX object_identities_object_identifier_class_id_uniq ON acl_object_identities (object_identifier, class_id)
+
+CREATE INDEX acl_object_identities_parent_object_identity_id_idx ON acl_object_identities (parent_object_identity_id)
+
+CREATE TABLE acl_object_identity_ancestors (object_identity_id INTEGER NOT NULL, ancestor_id INTEGER NOT NULL, PRIMARY KEY("object_identity_id", "ancestor_id"))
+
+CREATE INDEX acl_object_identity_ancestors_object_identity_id_idx ON acl_object_identity_ancestors (object_identity_id)
+
+CREATE INDEX acl_object_identity_ancestors_ancestor_id_idx ON acl_object_identity_ancestors (ancestor_id)
+
+CREATE TABLE acl_entries (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, class_id INTEGER NOT NULL, object_identity_id INTEGER DEFAULT NULL, security_identity_id INTEGER NOT NULL, field_name VARCHAR(50) DEFAULT NULL, ace_order INTEGER NOT NULL, mask INTEGER NOT NULL, granting BOOLEAN NOT NULL, granting_strategy VARCHAR(30) NOT NULL, audit_success BOOLEAN DEFAULT '0' NOT NULL, audit_failure BOOLEAN DEFAULT '0' NOT NULL)
+
+CREATE UNIQUE INDEX cl_entries_class_id_dentity_id_field_name_ace_order_uniq ON acl_entries (class_id, object_identity_id, field_name, ace_order)
+
+CREATE INDEX acl_entries_class_id_ct_identity_id_ty_identity_id_idx ON acl_entries (class_id, object_identity_id, security_identity_id)
+
+CREATE INDEX acl_entries_class_id_idx ON acl_entries (class_id)
+
+CREATE INDEX acl_entries_object_identity_id_idx ON acl_entries (object_identity_id)
+
+CREATE INDEX acl_entries_security_identity_id_idx ON acl_entries (security_identity_id) \ No newline at end of file