diff --git a/smp-api/src/main/java/eu/europa/ec/smp/api/validators/BdxSmpOasisValidator.java b/smp-api/src/main/java/eu/europa/ec/smp/api/validators/BdxSmpOasisValidator.java index 26aceb1b6831a714c39da5f4f900bcf21eb5692d..df3636cc1efb9763836521d8b4319c09a261f5e8 100644 --- a/smp-api/src/main/java/eu/europa/ec/smp/api/validators/BdxSmpOasisValidator.java +++ b/smp-api/src/main/java/eu/europa/ec/smp/api/validators/BdxSmpOasisValidator.java @@ -17,6 +17,7 @@ import eu.europa.ec.smp.api.exceptions.XmlInvalidAgainstSchemaException; import org.xml.sax.SAXException; import javax.xml.XMLConstants; +import javax.xml.bind.Unmarshaller; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; @@ -30,24 +31,37 @@ import java.net.URL; */ public class BdxSmpOasisValidator { - private static final Validator validator; + /** + * Class has only static members. + */ + private BdxSmpOasisValidator() { - static { + } + + /** + * thread safe validator + */ + private static final ThreadLocal<Validator> validator = ThreadLocal.withInitial( () -> { SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); URL xsdFilePath = BdxSmpOasisValidator.class.getResource("/bdx-smp-201605.xsd"); try { Schema schema = schemaFactory.newSchema(xsdFilePath); - validator = schema.newValidator(); - validator.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, ""); - validator.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); + Validator vaInstance = schema.newValidator(); + vaInstance.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + vaInstance.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); + return vaInstance; } catch (SAXException e) { throw new IllegalStateException("Unable to initialize BDX SMP OASIS XSD schema validator.", e); } + } ); + + private static Validator getValidator() { + return validator.get(); } public static void validateXSD(String xmlBody) throws XmlInvalidAgainstSchemaException { try { - validator.validate(new StreamSource(new StringReader(xmlBody))); + getValidator().validate(new StreamSource(new StringReader(xmlBody))); } catch (SAXException | IOException e) { throw new XmlInvalidAgainstSchemaException(e.getMessage(), e); } diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/H2JPATestConfiguration.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/H2JPATestConfiguration.java index dc42bdffc8bc106f6dcd437cc5b4048fff7bc636..ac9e5b9fb72bad7c5ed81c829d0da0c0fed29bf4 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/H2JPATestConfiguration.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/H2JPATestConfiguration.java @@ -6,9 +6,7 @@ import eu.europa.ec.edelivery.smp.services.ServiceUIData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.*; import org.springframework.core.env.Environment; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.jdbc.datasource.DriverManagerDataSource; -import org.springframework.orm.hibernate5.HibernateTransactionManager; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.JpaVendorAdapter; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; @@ -17,12 +15,10 @@ import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; -import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.sql.DataSource; @Configuration -//@PropertySource("persistence-test-h2.properties") @EnableTransactionManagement public class H2JPATestConfiguration { @Autowired @@ -31,19 +27,10 @@ public class H2JPATestConfiguration { @Bean(name = "h2DataSource") public DataSource h2DataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); - -/* - dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName")); - dataSource.setUrl(env.getProperty("jdbc.url")); - dataSource.setUsername(env.getProperty("jdbc.user")); - dataSource.setPassword(env.getProperty("jdbc.pass"));*/ - dataSource.setDriverClassName("org.h2.Driver"); - dataSource.setUrl("jdbc:h2:file:./target/myDb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=TRUE;AUTO_SERVER=TRUE"); + dataSource.setUrl("jdbc:h2:file:./target/h2TestDb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=TRUE;AUTO_SERVER=TRUE"); dataSource.setUsername("smp-dev"); dataSource.setPassword("smp-dev"); - - return dataSource; } @@ -52,7 +39,8 @@ public class H2JPATestConfiguration { LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean(); lef.setDataSource(h2DataSource); lef.setJpaVendorAdapter(jpaVendorAdapter); - lef.setPackagesToScan("eu.europa.ec.edelivery.smp.data.ui"); + lef.getJpaPropertyMap().put("org.hibernate.envers.store_data_at_delete", true); + lef.setPackagesToScan("eu.europa.ec.edelivery.smp.data.ui", "eu.europa.ec.edelivery.smp.data.model"); return lef; } @@ -63,8 +51,6 @@ public class H2JPATestConfiguration { hibernateJpaVendorAdapter.setShowSql(false); hibernateJpaVendorAdapter.setGenerateDdl(true); hibernateJpaVendorAdapter.setDatabase(Database.H2); - - return hibernateJpaVendorAdapter; } @@ -80,13 +66,11 @@ public class H2JPATestConfiguration { public ServiceUIData serviceUIData(){ ServiceUIData serviceMetadat = new ServiceUIData(); return serviceMetadat; - } @Bean public UiDaoService uiDaoService(){ UiDaoService uiDaoService = new UiDaoService(); return uiDaoService; - } } diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AuditIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AuditIntegrationTest.java index da78c5a595c66ffd4c320083cea46764743a7cad..ca21e71bdfafdbd9411f820d36d789a44fee7a4b 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AuditIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AuditIntegrationTest.java @@ -13,8 +13,7 @@ package eu.europa.ec.edelivery.smp.services; -import eu.europa.ec.edelivery.smp.config.PropertiesSingleDomainTestConfig; -import eu.europa.ec.edelivery.smp.config.SmpServicesTestConfig; +import eu.europa.ec.edelivery.smp.config.H2JPATestConfiguration; import eu.europa.ec.edelivery.smp.data.model.*; import org.hibernate.envers.AuditReader; import org.hibernate.envers.AuditReaderFactory; @@ -24,15 +23,10 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - - import javax.persistence.*; import javax.xml.bind.JAXBException; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.HashMap; -; import java.util.Map; import java.util.UUID; @@ -44,17 +38,14 @@ import static eu.europa.ec.edelivery.smp.testutil.AuditUtils.*; * Created by rihtajo */ @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = {SmpServicesTestConfig.class, PropertiesSingleDomainTestConfig.class}) +@ContextConfiguration(classes = {H2JPATestConfiguration.class}) public class AuditIntegrationTest { - - // because envers creates audit on commit we user PersistenceUnit to control commit... // (instead of PersistenceContext and transaction annotations... ) @PersistenceUnit EntityManagerFactory emf; - @Before public void before() throws IOException { clearDatabase(); @@ -92,6 +83,7 @@ public class AuditIntegrationTest { } public void clearTable(EntityManager em, String tableName, String condition){ + System.out.printf(String.format("DELETE FROM %s WHERE %s", tableName, condition)); System.out.printf(String.format("DELETE FROM %s_AUD WHERE %s", tableName, condition)); Query qTable = em.createNativeQuery(String.format("DELETE FROM %s WHERE %s", tableName, condition)); diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceUIDataIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceUIDataIntegrationTest.java index a188a2ca99fb0aa00d4acf4e4fdbb623dcb43617..8bd592970b0e9071860d658574bff729d8629fea 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceUIDataIntegrationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceUIDataIntegrationTest.java @@ -2,12 +2,11 @@ package eu.europa.ec.edelivery.smp.services; import eu.europa.ec.edelivery.smp.config.H2JPATestConfiguration; import eu.europa.ec.edelivery.smp.data.ui.*; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.jdbc.Sql; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; @@ -16,46 +15,67 @@ import static org.junit.Assert.*; @RunWith(SpringRunner.class) @SpringBootTest(classes = { H2JPATestConfiguration.class}) -@ActiveProfiles("db-h2-integration-test") @Transactional public class ServiceUIDataIntegrationTest { @Autowired private ServiceUIData serviceUIData; + private DomainRO testDomain = null; + private ServiceGroupRO testSG = null; + + @Before + public void initDatabase() { + + + testDomain = new DomainRO(); + testDomain.setDomainId("test"); + testDomain.setBdmslSmpId("test"); + serviceUIData.persistDomain(testDomain); + + testSG = new ServiceGroupRO(); + testSG.setServiceGroupROId(new ServiceGroupRO.ServiceGroupROId()); + testSG.getServiceGroupROId().setParticipantId("testParticipantId"); + testSG.getServiceGroupROId().setParticipantSchema("testParticipantSchema"); + testSG.setDomain(testDomain.getDomainId()); + serviceUIData.persistServiceGroup(testSG); + + } + + @Test public void getServiceGroupList() { - for (int i=0;i<20; i++) { + for (int i = 0; i < 20; i++) { ServiceGroupRO sg = new ServiceGroupRO(); sg.setServiceGroupROId(new ServiceGroupRO.ServiceGroupROId()); sg.getServiceGroupROId().setParticipantId("ParticipantId" + i); sg.getServiceGroupROId().setParticipantSchema("ParticipantId"); - sg.setDomain("test"); + sg.setDomain(testDomain.getDomainId()); serviceUIData.persistServiceGroup(sg); } - ServiceResult<ServiceGroupRO> lst = serviceUIData.getServiceGroupList(0,10,null,null); + ServiceResult<ServiceGroupRO> lst = serviceUIData.getServiceGroupList(0, 10, null, null); assertEquals(10, lst.getServiceEntities().size()); } @Test public void getUserList() { - for (int i=0;i<20; i++) { + for (int i = 0; i < 20; i++) { UserRO ent = new UserRO(); ent.setAdmin(false); - ent.setUsername("Username" +i); + ent.setUsername("Username" + i); ent.setPassword("Password"); serviceUIData.persistUser(ent); } - ServiceResult<UserRO> lst = serviceUIData.getUserList(0,10,null,null); + ServiceResult<UserRO> lst = serviceUIData.getUserList(0, 10, null, null); assertEquals(10, lst.getServiceEntities().size()); } @Test public void getDomainList() { - for (int i=0;i<20; i++) { + for (int i = 0; i < 20; i++) { DomainRO ent = new DomainRO(); ent.setDomainId("DomainId" + i); ent.setBdmslClientCertAlias("dmslClientCertAlias"); @@ -65,30 +85,28 @@ public class ServiceUIDataIntegrationTest { serviceUIData.persistDomain(ent); } - ServiceResult<DomainRO> lst = serviceUIData.getDomainList(0,10,null,null); + ServiceResult<DomainRO> lst = serviceUIData.getDomainList(0, 10, null, null); assertEquals(10, lst.getServiceEntities().size()); } @Test public void getServiceMetadataList() { - for (int i=0;i<20; i++) { + for (int i = 0; i < 20; i++) { ServiceMetadataRO ent = new ServiceMetadataRO(); ent.setServiceMetadataROId(new ServiceMetadataRO.ServiceMetadataROId()); ent.getServiceMetadataROId().setDocumentIdScheme("DocumentIdScheme"); - ent.getServiceMetadataROId().setDocumentIdValue("DocumentIdValue"); - ent.getServiceMetadataROId().setParticipantId("ParticipantId" +i); - ent.getServiceMetadataROId().setParticipantSchema("ParticipantSchema"); + ent.getServiceMetadataROId().setDocumentIdValue("DocumentIdValue" +i); + ent.getServiceMetadataROId().setParticipantId(testSG.getServiceGroupROId().getParticipantId()); + ent.getServiceMetadataROId().setParticipantSchema(testSG.getServiceGroupROId().getParticipantSchema()); long cnt = serviceUIData.getServiceMetadataList(0, 10, null, null).getCount(); serviceUIData.persistMetaData(ent); } - ServiceResult<ServiceMetadataRO> lst = serviceUIData.getServiceMetadataList(0,10,null,null); + ServiceResult<ServiceMetadataRO> lst = serviceUIData.getServiceMetadataList(0, 10, null, null); assertEquals(10, lst.getServiceEntities().size()); } - - @Test public void persistServiceGroup() { @@ -96,29 +114,28 @@ public class ServiceUIDataIntegrationTest { sg.setServiceGroupROId(new ServiceGroupRO.ServiceGroupROId()); sg.getServiceGroupROId().setParticipantId("ParticipantId"); sg.getServiceGroupROId().setParticipantSchema("ParticipantId"); - sg.setDomain("test"); - long cnt = serviceUIData.getServiceGroupList(0,10,null,null).getCount(); + sg.setDomain(testDomain.getDomainId()); + long cnt = serviceUIData.getServiceGroupList(0, 10, null, null).getCount(); serviceUIData.persistServiceGroup(sg); - ServiceResult<ServiceGroupRO> lst = serviceUIData.getServiceGroupList(0,10,null,null); + ServiceResult<ServiceGroupRO> lst = serviceUIData.getServiceGroupList(0, 10, null, null); assertEquals(cnt + 1, lst.getCount().longValue()); } @Test public void persistUser() { - UserRO ent = new UserRO(); ent.setAdmin(false); ent.setUsername("Username"); ent.setPassword("Password"); - long cnt = serviceUIData.getUserList(0,10,null,null).getCount(); + long cnt = serviceUIData.getUserList(0, 10, null, null).getCount(); serviceUIData.persistUser(ent); - ServiceResult<UserRO> lst = serviceUIData.getUserList(0,10,null,null); - assertEquals(cnt+1, lst.getCount().longValue()); + ServiceResult<UserRO> lst = serviceUIData.getUserList(0, 10, null, null); + assertEquals(cnt + 1, lst.getCount().longValue()); } @Test @@ -130,12 +147,12 @@ public class ServiceUIDataIntegrationTest { ent.setBdmslClientCertHeader("dmslClientCertHeader"); ent.setBdmslSmpId("BdmslSmpId"); ent.setSignatureCertAlias("SignatureCertAlias"); - long cnt = serviceUIData.getDomainList(0,10,null,null).getCount(); + long cnt = serviceUIData.getDomainList(0, 10, null, null).getCount(); serviceUIData.persistDomain(ent); - ServiceResult<DomainRO> lst = serviceUIData.getDomainList(0,10,null,null); - assertEquals(cnt+1, lst.getCount().longValue()); + ServiceResult<DomainRO> lst = serviceUIData.getDomainList(0, 10, null, null); + assertEquals(cnt + 1, lst.getCount().longValue()); } @Test @@ -144,16 +161,14 @@ public class ServiceUIDataIntegrationTest { ent.setServiceMetadataROId(new ServiceMetadataRO.ServiceMetadataROId()); ent.getServiceMetadataROId().setDocumentIdScheme("DocumentIdScheme"); ent.getServiceMetadataROId().setDocumentIdValue("DocumentIdValue"); - ent.getServiceMetadataROId().setParticipantId("ParticipantId"); - ent.getServiceMetadataROId().setParticipantSchema("ParticipantSchema"); - long cnt = serviceUIData.getServiceMetadataList(0,10,null,null).getCount(); + ent.getServiceMetadataROId().setParticipantId(testSG.getServiceGroupROId().getParticipantId()); + ent.getServiceMetadataROId().setParticipantSchema(testSG.getServiceGroupROId().getParticipantSchema()); + long cnt = serviceUIData.getServiceMetadataList(0, 10, null, null).getCount(); serviceUIData.persistMetaData(ent); - ServiceResult<ServiceMetadataRO> lst = serviceUIData.getServiceMetadataList(0,10,null,null); - assertEquals(cnt+1, lst.getCount().longValue()); + ServiceResult<ServiceMetadataRO> lst = serviceUIData.getServiceMetadataList(0, 10, null, null); + assertEquals(cnt + 1, lst.getCount().longValue()); } - - } \ No newline at end of file diff --git a/smp-server-library/src/test/resources/schema.sql b/smp-server-library/src/test/resources/schema.sql index e6077f440eed6ce1225ad7d64678fbc8dffd3d73..67fda392b486cc4accffce23c9131e676ff7e69b 100755 --- a/smp-server-library/src/test/resources/schema.sql +++ b/smp-server-library/src/test/resources/schema.sql @@ -10,133 +10,70 @@ -- See the Licence for the specific language governing permissions and limitations under the Licence. CREATE TABLE smp_domain ( - domainId VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - bdmslClientCertHeader VARCHAR(4000) - CHARACTER SET utf8 - COLLATE utf8_bin NULL, - bdmslClientCertAlias VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NULL, - bdmslSmpId VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - signatureCertAlias VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NULL, + domainId VARCHAR(50) NOT NULL, + bdmslClientCertHeader VARCHAR(4000) , + bdmslClientCertAlias VARCHAR(50) , + bdmslSmpId VARCHAR(50) NOT NULL, + signatureCertAlias VARCHAR(50) , PRIMARY KEY(domainId) -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; +); CREATE TABLE smp_domain_AUD ( - domainId VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - bdmslClientCertHeader VARCHAR(4000) - CHARACTER SET utf8 - COLLATE utf8_bin NULL, - bdmslClientCertAlias VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NULL, - bdmslSmpId VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - signatureCertAlias VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NULL, + domainId VARCHAR(50) NOT NULL, + bdmslClientCertHeader VARCHAR(4000), + bdmslClientCertAlias VARCHAR(50), + bdmslSmpId VARCHAR(50) NOT NULL, + signatureCertAlias VARCHAR(50) NULL, REV integer not null, REVTYPE tinyint, PRIMARY KEY(domainId, REV) -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; +); CREATE TABLE smp_service_group ( - businessIdentifier VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - businessIdentifierScheme VARCHAR(100) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - domainId VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL - DEFAULT 'domain1', + businessIdentifier VARCHAR(50) NOT NULL, + businessIdentifierScheme VARCHAR(100) NOT NULL, + domainId VARCHAR(50) DEFAULT 'domain1' NOT NULL , extension TEXT NULL DEFAULT NULL, PRIMARY KEY (businessIdentifier, businessIdentifierScheme), CONSTRAINT FK_srv_group_domain FOREIGN KEY (domainId) REFERENCES smp_domain (domainId) -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; +); CREATE TABLE smp_service_group_AUD ( - businessIdentifier VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - businessIdentifierScheme VARCHAR(100) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - domainId VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL - DEFAULT 'domain1', + businessIdentifier VARCHAR(50) NOT NULL, + businessIdentifierScheme VARCHAR(100) NOT NULL, + domainId VARCHAR(50) NOT NULL, extension TEXT NULL DEFAULT NULL, REV integer not null, REVTYPE tinyint, PRIMARY KEY (businessIdentifier, businessIdentifierScheme, REV) -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; +); CREATE TABLE smp_service_metadata ( - documentIdentifier VARCHAR(500) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - documentIdentifierScheme VARCHAR(100) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - businessIdentifier VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - businessIdentifierScheme VARCHAR(100) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, + documentIdentifier VARCHAR(500) NOT NULL, + documentIdentifierScheme VARCHAR(100) NOT NULL, + businessIdentifier VARCHAR(50) NOT NULL, + businessIdentifierScheme VARCHAR(100) NOT NULL, xmlcontent TEXT, PRIMARY KEY (documentIdentifier, documentIdentifierScheme, businessIdentifier, businessIdentifierScheme), - KEY FK_service_metadata_service_group (businessIdentifier, businessIdentifierScheme), - CONSTRAINT FK_service_metadata_service_group FOREIGN KEY (businessIdentifier, businessIdentifierScheme) REFERENCES smp_service_group (businessIdentifier, businessIdentifierScheme) + FOREIGN KEY (businessIdentifier, businessIdentifierScheme) REFERENCES smp_service_group (businessIdentifier, businessIdentifierScheme) ON DELETE CASCADE ON UPDATE CASCADE -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; +); CREATE TABLE smp_service_metadata_AUD ( - documentIdentifier VARCHAR(500) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - documentIdentifierScheme VARCHAR(100) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - businessIdentifier VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - businessIdentifierScheme VARCHAR(100) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, + documentIdentifier VARCHAR(500) NOT NULL, + documentIdentifierScheme VARCHAR(100) NOT NULL, + businessIdentifier VARCHAR(50) NOT NULL, + businessIdentifierScheme VARCHAR(100) NOT NULL, xmlcontent TEXT, REV integer not null, REVTYPE tinyint, PRIMARY KEY (documentIdentifier, documentIdentifierScheme, businessIdentifier, businessIdentifierScheme, REV) -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; +); CREATE TABLE smp_user ( @@ -144,9 +81,7 @@ CREATE TABLE smp_user ( password VARCHAR(256), isadmin TINYINT(1) DEFAULT 0 NOT NULL, PRIMARY KEY (username) -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; +); CREATE TABLE smp_user_AUD ( username VARCHAR(256) NOT NULL, @@ -155,46 +90,31 @@ CREATE TABLE smp_user_AUD ( REV integer not null, REVTYPE tinyint, PRIMARY KEY (username, REV) -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; +); CREATE TABLE smp_ownership ( username VARCHAR(256) NOT NULL, - businessIdentifier VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - businessIdentifierScheme VARCHAR(100) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - KEY FK_ownership_service_group (businessIdentifier, businessIdentifierScheme), - KEY FK_ownership_user (username), - CONSTRAINT FK_ownership_service_group FOREIGN KEY (businessIdentifier, businessIdentifierScheme) REFERENCES smp_service_group (businessIdentifier, businessIdentifierScheme) + businessIdentifier VARCHAR(50) NOT NULL, + businessIdentifierScheme VARCHAR(100), + PRIMARY KEY (businessIdentifier, businessIdentifierScheme, username), + FOREIGN KEY (businessIdentifier, businessIdentifierScheme) REFERENCES smp_service_group (businessIdentifier, businessIdentifierScheme) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT FK_ownership_user FOREIGN KEY (username) REFERENCES smp_user (username) + FOREIGN KEY (username) REFERENCES smp_user (username) ON DELETE CASCADE ON UPDATE CASCADE -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; +); CREATE TABLE smp_ownership_AUD ( username VARCHAR(256) NOT NULL, - businessIdentifier VARCHAR(50) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, - businessIdentifierScheme VARCHAR(100) - CHARACTER SET utf8 - COLLATE utf8_bin NOT NULL, + businessIdentifier VARCHAR(50) NOT NULL, + businessIdentifierScheme VARCHAR(100) NOT NULL, REV integer not null, REVTYPE tinyint, PRIMARY KEY (username, businessIdentifier, businessIdentifierScheme, REV) -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; +); CREATE TABLE SMP_REV_INFO ( @@ -203,67 +123,10 @@ CREATE TABLE SMP_REV_INFO ( REVISION_DATE timestamp NULL, username VARCHAR(255) NULL, CONSTRAINT PK_SMP_REV_INFO PRIMARY KEY (ID) -) ENGINE = InnoDB - DEFAULT CHARSET = utf8; - - - -DELIMITER // - -DROP PROCEDURE IF EXISTS validate_new_user // -CREATE PROCEDURE validate_new_user (IN new_user_is_admin TINYINT(1)) -BEGIN - IF new_user_is_admin <> 0 AND new_user_is_admin <> 1 - THEN - SIGNAL SQLSTATE '99999' - SET MESSAGE_TEXT = '0 or 1 are the only allowed values for ISADMIN column'; - END IF; - END // - -DROP PROCEDURE IF EXISTS validate_new_domain // -CREATE PROCEDURE validate_new_domain (IN new_bdmsl_client_cert_alias varchar(50), IN new_bdmsl_client_cert_header varchar(4000)) -BEGIN - IF ((new_bdmsl_client_cert_alias > '' OR new_bdmsl_client_cert_alias = null) AND (new_bdmsl_client_cert_header > '' OR new_bdmsl_client_cert_header = null)) - THEN - SIGNAL SQLSTATE '99999' - SET MESSAGE_TEXT = 'Both BDMSL authentication ways cannot be switched ON at the same time: bdmslClientCertAlias and bdmslClientCertHeader'; - END IF; - END // - - -DROP TRIGGER IF EXISTS smp_domain_check_bdmsl_auth_before_insert // -DROP TRIGGER IF EXISTS smp_domain_check_bdmsl_auth_before_update // -CREATE TRIGGER smp_domain_check_bdmsl_auth_before_update -BEFORE UPDATE ON smp_domain -FOR EACH ROW - BEGIN - call validate_new_domain(NEW.bdmslClientCertAlias, NEW.bdmslClientCertHeader); - END // -CREATE TRIGGER smp_domain_check_bdmsl_auth_before_insert -BEFORE INSERT ON smp_domain -FOR EACH ROW - BEGIN - call validate_new_domain(NEW.bdmslClientCertAlias, NEW.bdmslClientCertHeader); - END // - +); -DROP TRIGGER IF EXISTS smp_user_check_is_admin_value_before_insert // -DROP TRIGGER IF EXISTS smp_user_check_is_admin_value_before_update // -CREATE TRIGGER smp_user_check_is_admin_value_before_insert -BEFORE INSERT ON smp_user -FOR EACH ROW - BEGIN - call validate_new_user(NEW.ISADMIN); - END // -CREATE TRIGGER smp_user_check_is_admin_value_before_update -BEFORE UPDATE ON smp_user -FOR EACH ROW - BEGIN - call validate_new_user(NEW.ISADMIN); - END // -DELIMITER ; create table hibernate_sequence( next_val BIGINT NOT NULL