Documentation

Trace:

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision Both sides next revision
jvx:server:storage:insteadof [2018/02/07 08:14]
admin created
jvx:server:storage:insteadof [2018/02/07 08:15]
admin
Line 236: Line 236:
 You'll find the implementation of SimpleTestLauncher [[jvx:​code_snippets#​test_ui_with_simple_junit_test|here]]. You'll find the implementation of SimpleTestLauncher [[jvx:​code_snippets#​test_ui_with_simple_junit_test|here]].
  
 +The database objects (Oracle):
  
 +<file sql create.sql>​
 +CREATE TABLE CONTRACT
 +(
 +  id    NUMBER(16) NOT NULL,
 +  title VARCHAR2(1000),​
 +  state NUMBER(1) DEFAULT 1
 +)
 +;
 +COMMENT ON column CONTRACT.id
 +  IS '​PK';​
 +COMMENT ON column CONTRACT.title
 +  IS '​Contract title';​
 +COMMENT ON column CONTRACT.state
 +  IS '​Contract state';​
 +ALTER TABLE CONTRACT
 +  add constraint CONT_PK primary key (ID);
 +
 +CREATE TABLE ACTIVITY
 +(
 +  id                  NUMBER(16) NOT NULL,
 +  cont_id ​            ​NUMBER(16),​
 +  name                VARCHAR2(1000),​
 +  cost                NUMBER(10,​2),​
 +  valid_from ​         DATE,
 +  valid_to ​           DATE,
 +  responsible_user_id NUMBER(16),
 +  validated ​          ​CHAR(1) DEFAULT '​Y'​
 +)
 +;
 +COMMENT ON column ACTIVITY.id
 +  IS '​PK';​
 +COMMENT ON column ACTIVITY.cont_id
 +  IS '​Contract FK';
 +COMMENT ON column ACTIVITY.name
 +  IS '​Activity name';
 +COMMENT ON column ACTIVITY.cost
 +  IS '​Activity costs';​
 +COMMENT ON column ACTIVITY.valid_from
 +  IS 'Valid from';
 +COMMENT ON column ACTIVITY.valid_to
 +  IS 'Valid to';
 +COMMENT ON column ACTIVITY.responsible_user_id
 +  IS '​Responsible User FK';
 +COMMENT ON column ACTIVITY.validated
 +  IS '​Whether the activity is valid';​
 +ALTER TABLE ACTIVITY
 +  add constraint ACTI_PK primary key (ID);
 +ALTER TABLE ACTIVITY
 +  add constraint ACTI_CONT_FK foreign key (CONT_ID)
 +  references CONTRACT (ID);
 +ALTER TABLE ACTIVITY
 +  add constraint ACTI_RESP_USER_FK foreign key (RESPONSIBLE_USER_ID)
 +  references USERS (ID);
 +
 +CREATE sequence SEQ_ACTIVITY_ID
 +minvalue 1
 +maxvalue 999999999999999999999999999
 +START WITH 41
 +increment BY 1
 +cache 20
 +ORDER;
 +
 +CREATE sequence SEQ_CONTRACT_ID
 +minvalue 1
 +maxvalue 999999999999999999999999999
 +START WITH 21
 +increment BY 1
 +cache 20
 +ORDER;
 +
 +CREATE OR REPLACE force VIEW v_activities AS
 +SELECT a.id
 +      ,a.cont_id
 +      ,c.title cont_title
 +      ,a.name
 +      ,a.cost
 +      ,​a.valid_from
 +      ,a.valid_to
 +  FROM activity a
 +      ,contract c
 + WHERE a.cont_id = c.id;
 +  ​
 +CREATE OR REPLACE TRIGGER TR_ACTIVITY_BR_IU
 +  before INSERT OR UPDATE ON activity  ​
 +  FOR each ROW
 +BEGIN
 +
 +  IF (:NEW.id IS NULL) THEN
 +    SELECT seq_activity_id.NEXTVAL INTO :NEW.id FROM dual;
 +  END IF;       
 +        ​
 +  IF (:​NEW.validated = '​N'​) THEN
 +    ​
 +    IF (:​NEW.valid_from IS NULL) THEN
 +      raise_application_error(-20000,​ 'Valid from can''​t be null!'​);​
 +    END IF;
 +  ​
 +  END IF;
 +  ​
 +END TR_ACTIVITY_BR_IU;​
 +/
 +
 +CREATE OR REPLACE TRIGGER TR_CONTRACT_BR_IU
 +  before INSERT OR UPDATE ON contract  ​
 +  FOR each ROW
 +BEGIN
 +
 +  IF (:NEW.id IS NULL) THEN
 +    SELECT seq_contract_id.NEXTVAL INTO :NEW.id FROM dual;
 +  END IF;       
 +        ​
 +  IF (:NEW.state = 4) THEN
 +      ​
 +    UPDATE activity ​
 +       SET validated = '​N'​
 +     WHERE cont_id = id
 +       AND validated = '​Y';​
 +       
 +  END IF;     
 +  ​
 +END TR_CONTRACT_BR_IU;​
 +/
 +
 +prompt Disabling triggers FOR CONTRACT...
 +ALTER TABLE CONTRACT disable ALL triggers;
 +prompt Disabling triggers FOR ACTIVITY...
 +ALTER TABLE ACTIVITY disable ALL triggers;
 +prompt Disabling foreign key constraints FOR ACTIVITY...
 +ALTER TABLE ACTIVITY disable constraint ACTI_CONT_FK;​
 +ALTER TABLE ACTIVITY disable constraint ACTI_RESP_USER_FK;​
 +prompt Loading CONTRACT...
 +INSERT INTO CONTRACT (id, title, state)
 +VALUES (1, '​Air',​ 1);
 +COMMIT;
 +prompt 1 records loaded
 +prompt Loading ACTIVITY...
 +INSERT INTO ACTIVITY (id, cont_id, name, cost, valid_from, valid_to, responsible_user_id,​ validated)
 +VALUES (1, 1, 'Part 1', .2, NULL, NULL, NULL, '​Y'​);​
 +COMMIT;
 +prompt 1 records loaded
 +prompt Enabling foreign key constraints FOR ACTIVITY...
 +ALTER TABLE ACTIVITY enable constraint ACTI_CONT_FK;​
 +ALTER TABLE ACTIVITY enable constraint ACTI_RESP_USER_FK;​
 +prompt Enabling triggers FOR CONTRACT...
 +ALTER TABLE CONTRACT enable ALL triggers;
 +prompt Enabling triggers FOR ACTIVITY...
 +ALTER TABLE ACTIVITY enable ALL triggers;
 +</​file>​
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information