New tables:

PASSWORDS - holds history of passwords for parties
 ACCESS_CONTROLS - hold page, item / role information for authorization purposes.

Modified tables:
 ENQUIRIES - meter size removed. Replaced by foreign key to METER_SIZE_CODES.
 COSTS - includes AICO_CODE and DESCRIPTION for use as cost details for Additional Items.

General modifications:
 Yes/No columns modified to VARCHAR2(3)

Modules:
 Added mip_security.pck. Supports Authentication and Authorization (update of the original POC version)

Respository:
 Created new directory structure to hold persistent data. Currently includes Data/Seed for base table values and Data/Demo to populate various party and relationship tables.

git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@2838 248e525c-4dfb-0310-94bc-949c084e9493
This commit is contained in:
hardya
2007-11-12 12:07:25 +00:00
parent 7def5bb1af
commit f5e160010b
45 changed files with 541 additions and 58 deletions

View File

@@ -0,0 +1,23 @@
@echo off
if "%1"=="" goto :usage
if "%1"=="sys" goto :usage
if "%1"=="system" goto :usage
sqlplus %1 @delete_demo_data
sqlldr %1 control=prty
sqlldr %1 control=parl
sqlldr %1 control=prel
sqlplus %1 @create_passwords
goto :done
:usage
echo usage InstallDemoData user/password@database
:done

View File

@@ -0,0 +1,22 @@
DECLARE
l_hash dbms_obfuscation_toolkit.varchar2_checksum;
BEGIN
FOR l_pwd IN (SELECT id
,upper(username) || '/' || upper(username) AS str
FROM parties
WHERE username IS NOT NULL) LOOP
l_hash := dbms_obfuscation_toolkit.md5(input_string => l_pwd.str);
INSERT INTO passwords
(prty_id
,password_hash
,created_on)
VALUES
(l_pwd.id
,l_hash
,SYSDATE);
END LOOP;
END;
/
exit

View File

@@ -0,0 +1,5 @@
delete from party_relationships;
delete from party_roles;
delete from passwords;
delete from parties;
exit

38
Data/Demo/parl.ctl Normal file
View File

@@ -0,0 +1,38 @@
LOAD DATA
INFILE *
INTO TABLE party_roles
REPLACE
FIELDS TERMINATED BY '|'
(
prty_id
,rt_code
,id
,start_date
,end_date
,description
)
BEGINDATA
200|SUPP|2001|08-NOV-07|||
201|SUPP|2011|08-NOV-07|||
202|SUPP|2021|08-NOV-07|||
203|SUPP|2031|08-NOV-07|||
204|SUPP|2041|08-NOV-07|||
205|SUPP|2051|08-NOV-07|||
206|SUPP|2061|08-NOV-07|||
207|SUPP|2071|08-NOV-07|||
208|SUPP|2081|08-NOV-07|||
400|MIPADMIN|4001|08-NOV-07|||
400|CS|4002|08-NOV-07|||
400|ICU|4003|08-NOV-07|||
401|MIPADMIN|4011|08-NOV-07|||
401|CS|4012|08-NOV-07|||
401|ICU|4013|08-NOV-07|||
402|MIPADMIN|4021|08-NOV-07|||
403|MIPADMIN|4031|08-NOV-07|||
404|AGENT|4041|08-NOV-07|||
404|SUPPADMIN|4042|08-NOV-07|||
405|AGENT|4051|08-NOV-07|||
405|SUPPADMIN|4052|08-NOV-07|||
406|AGENT|4061|08-NOV-07|||
407|AGENT|4071|08-NOV-07|||
408|AGENT|4081|08-NOV-07|||

44
Data/Demo/prel.ctl Normal file
View File

@@ -0,0 +1,44 @@
LOAD DATA
INFILE *
INTO TABLE party_relationships
REPLACE
FIELDS TERMINATED BY '|'
(
from_parl_id
,to_parl_id
,from_parl_prty_id
,to_parl_prty_id
,from_parl_rt_code
,to_parl_rt_code
,start_date
,from_prtp_rt_code
,to_prtp_rt_code
)
BEGINDATA
4041|2001|404|200|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4041|2011|404|201|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4041|2021|404|202|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4042|2001|404|200|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP
4042|2011|404|201|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP
4042|2021|404|202|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP
4042|2031|404|203|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP
4042|2041|404|204|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP
4042|2051|404|205|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP
4051|2001|405|200|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4051|2011|405|201|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4051|2021|405|202|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4052|2031|405|203|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP
4052|2041|405|204|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP
4052|2051|405|205|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP
4052|2061|405|206|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP
4052|2071|405|207|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP
4052|2081|405|208|SUPPADMIN|SUPP|08-NOV-07|SUPPADMIN|SUPP
4061|2031|406|203|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4061|2041|406|204|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4061|2051|406|205|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4071|2031|407|203|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4071|2041|407|204|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4071|2051|407|205|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4081|2061|408|206|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4081|2071|408|207|AGENT|SUPP|08-NOV-07|AGENT|SUPP
4081|2081|408|208|AGENT|SUPP|08-NOV-07|AGENT|SUPP

59
Data/Demo/prty.ctl Normal file
View File

@@ -0,0 +1,59 @@
LOAD DATA
INFILE *
INTO TABLE parties
REPLACE
FIELDS TERMINATED BY '|'
(
manu_ref
,created_by
,shortcode
,name
,description
,created_on
,updated_on
,updated_by
,mktp_ref
,lt_7b_contract_ref
,gt_7b_contract_ref
,adversarial_contract_ref
,username
,status
,first_name
,last_name
,personal_title
,comments
,id
,prty_type
)
BEGINDATA
ACT|hardya||ACTARIS||08-NOV-07||||||||||||Manufactures meters|100|MANU
DRE|hardya||DRESSER||08-NOV-07||||||||||||Manufactures meters|101|MANU
QUI|hardya||QUINSHIELD||08-NOV-07||||||||||||Manufactures meters|102|MANU
|hardya|NS1|Northern Supplies||08-NOV-07|||NSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to the north of the UK|200|MKTP
|hardya|NS2|Extreme Northern Supplies||08-NOV-07|||ENSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to the extreme north of the UK|201|MKTP
|hardya|WS1|Welsh Supplies||08-NOV-07|||WSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to Wales|202|MKTP
|hardya|WS2|Welsh Supplies||08-NOV-07|||W2SUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to Wales|203|MKTP
|hardya|CE1|Central Gas Supplies||08-NOV-07|||CGSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to the Central region|204|MKTP
|hardya|CE2|Centre de Gas Supplies||08-NOV-07|||CDSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to the Central region|205|MKTP
|hardya|LON|London Supplies||08-NOV-07|||LONSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to London|206|MKTP
|hardya|KER|Kernow Supplies||08-NOV-07|||KERSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to Cornwall|207|MKTP
|hardya|BM|Bootiful Gas Supplies||08-NOV-07|||BGSUPP|LT7 Contract|GT7 Contract|Adversarial Contract||||||Supplier of gas to the East|208|MKTP
|hardya||National Grid||08-NOV-07||||||||||||Internal organization|300|IO
|hardya||National Grid Metering||08-NOV-07||||||||||||Internal organization|301|IO
|hardya||Customer Services||08-NOV-07||||||||||||Internal organization|302|IO
|hardya||Quotations||08-NOV-07||||||||||||Internal organization|303|IO
|hardya||||08-NOV-07|||||||hardya|OPEN|Andrew|Hardy|Mr|User|400|PERS
|hardya||||08-NOV-07|||||||priestj|OPEN|Jamie|Priest|Mr|User|401|PERS
|hardya||||08-NOV-07|||||||kanagasabapathy|OPEN|Dharshani|Kanagasabapathy||User|402|PERS
|hardya||||08-NOV-07|||||||mullend|OPEN|Matt|Mullen||User|403|PERS
|hardya||||08-NOV-07|||||||agent1|OPEN|Fred|Smith||User|404|PERS
|hardya||||08-NOV-07|||||||agent2|OPEN|Joe|Bloggs||User|405|PERS
|hardya||||08-NOV-07|||||||agent3|OPEN|Peter|Piper||User|406|PERS
|hardya||||08-NOV-07|||||||agent4|OPEN|Nigel|Normal||User|407|PERS
|hardya||||08-NOV-07|||||||agent5|OPEN|Norah|Batty||User|408|PERS
|hardya||||08-NOV-07|||||||cs1|OPEN|Henrietta|Helpful||User|409|PERS
|hardya||||08-NOV-07|||||||cs2|OPEN|Tommy|Atkins||User|410|PERS
|hardya||||08-NOV-07|||||||cs3|OPEN|Tracy|Beaker||User|411|PERS
|hardya||||08-NOV-07|||||||ic1|OPEN|Gareth|Thomas||User|412|PERS
|hardya||||08-NOV-07|||||||ic2|OPEN|Bhavesh|Singh||User|413|PERS
|hardya||||08-NOV-07|||||||ic3|OPEN|Dave|Smith||User|414|PERS

View File

@@ -6,8 +6,8 @@ FIELDS TERMINATED BY '|'
(
code
,qmax
,valid_for_existing_meter
,valid_for_new_meter
,valid_for_existing_meter
)
BEGINDATA
U16|12.8|YES|YES

33
InstallMIP.cmd Normal file
View File

@@ -0,0 +1,33 @@
@echo off
if "%1"=="" goto :usage
if "%2"=="" goto :usage
if "%3"=="" goto :usage
if "%4"=="" goto :usage
if "%5"=="" goto :usage
@echo Install Schema
sqlplus /nolog @Schema\InstallMIP %1 %2 %3 %4 %5
@echo Install Modules
sqlplus %3/%4@%5 @Modules\Modules.sql
cd Data\Seed
call InstallSeed %3/%4@%5
cd ..\..
cd Data\Demo
call InstallDemoData %3/%4@%5
cd ..\..
goto :done
:usage
echo usage InstallMIP sys_name sys_password app_name app_password db_connect_string
:done

7
Modules/Modules.sql Normal file
View File

@@ -0,0 +1,7 @@
set scan off
set define off
@@mip_files.pck
@@mip_security.pck
exit

190
Modules/mip_security.pck Normal file
View File

@@ -0,0 +1,190 @@
CREATE OR REPLACE PACKAGE mip_security AS
--PROCEDURE add_user(p_username IN VARCHAR2, p_password IN VARCHAR2);
PROCEDURE login(p_uname IN VARCHAR2
,p_password IN VARCHAR2
,p_session_id IN VARCHAR2
,p_flow_page IN VARCHAR2);
FUNCTION get_hash(p_username IN VARCHAR2
,p_password IN VARCHAR2) RETURN VARCHAR2;
PROCEDURE valid_user(p_username IN VARCHAR2
,p_password IN VARCHAR2);
FUNCTION valid_user(p_username IN VARCHAR2
,p_password IN VARCHAR2) RETURN BOOLEAN;
FUNCTION user_screen(p_username IN VARCHAR2) RETURN BOOLEAN;
FUNCTION admin_screen(p_username IN VARCHAR2) RETURN BOOLEAN;
-- check to see whether the username has a role that allows
-- access to the given page and, optionally, the given item
--
-- absence of the page or item from the access controls table
-- infers that access to the page and item is always allowed
FUNCTION access_allowed(p_username IN VARCHAR2
,p_page_number IN NUMBER
,p_item_name IN VARCHAR2 DEFAULT NULL)
RETURN BOOLEAN;
END mip_security;
/
CREATE OR REPLACE PACKAGE BODY mip_security AS
PROCEDURE login(p_uname IN VARCHAR2
,p_password IN VARCHAR2
,p_session_id IN VARCHAR2
,p_flow_page IN VARCHAR2) IS
BEGIN
wwv_flow_custom_auth_std.login(p_uname => p_uname
,p_password => p_password
,p_session_id => p_session_id
,p_flow_page => p_flow_page || ':' || 1);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END login;
FUNCTION get_hash(p_username IN VARCHAR2
,p_password IN VARCHAR2) RETURN VARCHAR2 AS
BEGIN
RETURN dbms_obfuscation_toolkit.md5(input_string => upper(p_username) || '/' ||
upper(p_password));
END get_hash;
/*
updates
MM - 22-Oct-2007
changed the table to use to be the MIP parties table
*/
PROCEDURE valid_user(p_username IN VARCHAR2
,p_password IN VARCHAR2) AS
l_password_created_on DATE;
BEGIN
SELECT created_on
INTO l_password_created_on
FROM (SELECT pwd.prty_id
,pwd.password_hash
,MAX(pwd.created_on) over(PARTITION BY pwd.prty_id) AS latest_pwd_date
,pwd.created_on
FROM passwords pwd
,parties prty
WHERE prty.username = p_username
AND pwd.prty_id = prty.id) pwd
WHERE pwd.created_on = pwd.latest_pwd_date
AND pwd.password_hash = get_hash(p_username
,p_password);
EXCEPTION
WHEN no_data_found THEN
raise_application_error(-20000
,'Invalid username / password.');
END valid_user;
FUNCTION valid_user(p_username IN VARCHAR2
,p_password IN VARCHAR2) RETURN BOOLEAN AS
BEGIN
valid_user(p_username
,p_password);
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END valid_user;
FUNCTION access_allowed(p_username IN VARCHAR2
,p_page_number IN NUMBER
,p_item_name IN VARCHAR2 DEFAULT NULL)
RETURN BOOLEAN IS
l_access_allowed VARCHAR2(3);
BEGIN
-- check to see whether the username has a role that allows
-- access to the given page and, optionally, the given item
--
-- if null is returned from the query, it implies that there
-- is no access control against the given page and item
IF p_page_number IN (101, 500) THEN
RETURN TRUE;
END IF;
SELECT access_allowed
INTO l_access_allowed
FROM (SELECT accl.page_number
,accl.rt_code
,parl.rt_code
,CASE
WHEN accl.rt_code IS NULL THEN
'YES'
WHEN accl.rt_code = parl.rt_code THEN
'YES'
ELSE
'NO'
END access_allowed
FROM (SELECT prty.username
,rt_code
FROM parties prty
,party_roles parl
WHERE parl.prty_id = prty.id
AND upper(prty.username) = upper(p_username)) parl
,access_controls accl
WHERE accl.rt_code = parl.rt_code(+)
AND accl.page_number = p_page_number
AND (upper(nvl(accl.item
,'NOCONTROL')) =
upper(nvl(p_item_name
,nvl(accl.item
,'NOCONTROL'))))
ORDER BY parl.rt_code)
WHERE rownum < 2;
IF nvl(l_access_allowed
,'YES') = 'YES' THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
EXCEPTION
WHEN no_data_found THEN
raise_application_error(-20000
,'Application Error: Item Name ' ||
p_item_name || ' for page ' || p_page_number ||
' is missing from the ACCESS_CONTROLS table');
END access_allowed;
FUNCTION user_screen(p_username IN VARCHAR2) RETURN BOOLEAN AS
v_dummy VARCHAR2(1);
BEGIN
SELECT '1'
INTO v_dummy
FROM parties au
WHERE upper(username) = upper(p_username);
--AND upper(au.role) IN ('ADMIN', 'USER');
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END user_screen;
FUNCTION admin_screen(p_username IN VARCHAR2) RETURN BOOLEAN AS
v_dummy VARCHAR2(1);
BEGIN
SELECT '1'
INTO v_dummy
FROM parties au
WHERE upper(username) = upper(p_username);
--AND upper(au.role) = 'ADMIN';
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END admin_screen;
END mip_security;
/

View File

@@ -8,8 +8,6 @@ if "%5"=="" goto :usage
sqlplus /nolog @InstallMIP %1 %2 %3 %4 %5
InstallSeed %3/%4@%5
goto :done
:usage

View File

@@ -6,6 +6,6 @@ grant connect, resource to &3 identified by &4;
connect &3/&4@&5
@mip
@@mip
exit

View File

@@ -1,6 +1,6 @@
-- C:\Andy\svn\WEBMIP\Schema\mip.con
--
-- Generated for Oracle 10g on Thu Nov 08 15:09:01 2007 by Server Generator 10.1.2.6.18
-- Generated for Oracle 10g on Mon Nov 12 10:04:33 2007 by Server Generator 10.1.2.6.18
PROMPT Creating Primary Key on 'REGULATORS'
ALTER TABLE REGULATORS
@@ -176,6 +176,13 @@ ALTER TABLE ROLE_TYPES
(CODE))
/
PROMPT Creating Primary Key on 'PASSWORDS'
ALTER TABLE PASSWORDS
ADD (CONSTRAINT PWD_PK PRIMARY KEY
(PRTY_ID
,CREATED_ON))
/
PROMPT Creating Primary Key on 'ASSET_LOCATION_TYPES'
ALTER TABLE ASSET_LOCATION_TYPES
ADD (CONSTRAINT ALTY_PK PRIMARY KEY
@@ -220,6 +227,12 @@ ALTER TABLE ENQUIRY_ROLES
,RT_CODE))
/
PROMPT Creating Primary Key on 'ACCESS_CONTROLS'
ALTER TABLE ACCESS_CONTROLS
ADD (CONSTRAINT ACCL_PK PRIMARY KEY
(ID))
/
PROMPT Creating Primary Key on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT ENQU_PK PRIMARY KEY
@@ -302,20 +315,26 @@ ALTER TABLE PARTY_ROLES
/
PROMPT Creating Unique Key on 'COSTS'
ALTER TABLE COSTS
ADD (CONSTRAINT COST_AIC0_UK UNIQUE
(AICO_CODE))
/
PROMPT Creating Check Constraint on 'METER_SIZE_CODES'
ALTER TABLE METER_SIZE_CODES
ADD (CONSTRAINT AVCON_1194534541_VALID_000 CHECK (VALID_FOR_EXISTING_METER IN ('YES', 'NO')))
ADD (CONSTRAINT AVCON_1194861873_VALID_000 CHECK (VALID_FOR_EXISTING_METER IN ('YES', 'NO')))
/
PROMPT Creating Check Constraint on 'METER_SIZE_CODES'
ALTER TABLE METER_SIZE_CODES
ADD (CONSTRAINT AVCON_1194534541_VALID_001 CHECK (VALID_FOR_NEW_METER IN ('YES', 'NO')))
ADD (CONSTRAINT AVCON_1194861873_VALID_001 CHECK (VALID_FOR_NEW_METER IN ('YES', 'NO')))
/
PROMPT Creating Check Constraint on 'COSTS'
ALTER TABLE COSTS
ADD (CONSTRAINT AVCON_1194534541_COST__000 CHECK (COST_TYPE IN ('COST', 'BACO', 'HOCO', 'MECO', 'MOCO')))
ADD (CONSTRAINT AVCON_1194861873_COST__000 CHECK (COST_TYPE IN ('HOCO', 'BACO', 'COST', 'AICO', 'MOCO', 'MECO')))
/
PROMPT Creating Check Constraint on 'PARTY_RELATIONSHIPS'
@@ -327,89 +346,84 @@ to_parl_rt_code = to_prtp_rt_code))
PROMPT Creating Check Constraint on 'QUOTES'
ALTER TABLE QUOTES
ADD (CONSTRAINT AVCON_1194534541_QUTE__000 CHECK (QUTE_TYPE IN ('QUTE', 'SQ', 'AQ', 'MQ')))
ADD (CONSTRAINT AVCON_1194861873_QUTE__000 CHECK (QUTE_TYPE IN ('QUTE', 'SQ', 'AQ', 'MQ')))
/
PROMPT Creating Check Constraint on 'PARTIES'
ALTER TABLE PARTIES
ADD (CONSTRAINT AVCON_1194534541_STATU_000 CHECK (STATUS IN ('OPEN', 'EXPIRED', 'LOCKED')))
ADD (CONSTRAINT AVCON_1194861873_STATU_000 CHECK (STATUS IN ('OPEN', 'EXPIRED', 'LOCKED')))
/
PROMPT Creating Check Constraint on 'PARTIES'
ALTER TABLE PARTIES
ADD (CONSTRAINT AVCON_1194534541_PRTY__000 CHECK (PRTY_TYPE
ADD (CONSTRAINT AVCON_1194861873_PRTY__000 CHECK (PRTY_TYPE
IN ('PRTY', 'IO', 'EO', 'MKTP', 'PERS', 'MANU', 'NEMP', 'EMP', 'ORG'
)))
/
PROMPT Creating Check Constraint on 'ROLE_TYPES'
ALTER TABLE ROLE_TYPES
ADD (CONSTRAINT AVCON_1194534541_RT_TY_000 CHECK (RT_TYPE IN ('PCMRT', 'PART', 'QURT', 'PRT', 'RT', 'ENRT')))
ADD (CONSTRAINT AVCON_1194861873_RT_TY_000 CHECK (RT_TYPE IN ('ENRT', 'QURT', 'PRT', 'PCMRT', 'PART', 'RT')))
/
PROMPT Creating Check Constraint on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT AVCON_1194534541_HOUSI_000 CHECK (HOUSING_REQUIRED IN ('YES', 'NO')))
ADD (CONSTRAINT AVCON_1194861873_HOUSI_000 CHECK (HOUSING_REQUIRED IN ('YES', 'NO')))
/
PROMPT Creating Check Constraint on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT AVCON_1194534541_BASE__000 CHECK (BASE_REQUIRED IN ('YES', 'NO')))
ADD (CONSTRAINT AVCON_1194861873_BASE__000 CHECK (BASE_REQUIRED IN ('YES', 'NO')))
/
PROMPT Creating Check Constraint on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT AVCON_1194534541_TWIN__000 CHECK (TWIN_STREAM_REQUIRED IN ('YES', 'NO')))
ADD (CONSTRAINT AVCON_1194861873_TWIN__000 CHECK (TWIN_STREAM_REQUIRED IN ('YES', 'NO')))
/
PROMPT Creating Check Constraint on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT AVCON_1194534541_DOWNS_000 CHECK (DOWNSTREAM_BOOSTER_OR_COMPRESS IN ('YES', 'NO')))
ADD (CONSTRAINT AVCON_1194861873_DOWNS_000 CHECK (DOWNSTREAM_BOOSTER_OR_COMPRESS IN ('YES', 'NO')))
/
PROMPT Creating Check Constraint on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT AVCON_1194534541_INDIC_000 CHECK (INDICATIVE_TIME IN ('DY', 'AM', 'PM')))
ADD (CONSTRAINT AVCON_1194861873_INDIC_000 CHECK (INDICATIVE_TIME IN ('DY', 'AM', 'PM')))
/
PROMPT Creating Check Constraint on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT AVCON_1194534541_CONVE_000 CHECK (CONVERTOR_REQUIRED IN ('YES', 'NO')))
ADD (CONSTRAINT AVCON_1194861873_CONVE_000 CHECK (CONVERTOR_REQUIRED IN ('YES', 'NO')))
/
PROMPT Creating Check Constraint on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT AVCON_1194534541_AMR_R_000 CHECK (AMR_REQUIRED IN ('YES', 'NO')))
ADD (CONSTRAINT AVCON_1194861873_AMR_R_000 CHECK (AMR_REQUIRED IN ('YES', 'NO')))
/
PROMPT Creating Check Constraint on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT AVCON_1194534541_EMS_R_000 CHECK (EMS_REQUIRED IN ('YES', 'NO')))
ADD (CONSTRAINT AVCON_1194861873_EMS_R_000 CHECK (EMS_REQUIRED IN ('YES', 'NO')))
/
PROMPT Creating Check Constraint on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT AVCON_1194534541_BYPAS_000 CHECK (BYPASS_REQUIRED IN ('YES', 'NO')))
ADD (CONSTRAINT AVCON_1194861873_LOGGE_000 CHECK (LOGGER_REQUIRED IN ('YES', 'NO')))
/
PROMPT Creating Check Constraint on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT AVCON_1194534541_LOGGE_000 CHECK (LOGGER_REQUIRED IN ('YES', 'NO')))
ADD (CONSTRAINT AVCON_1194861873_LOAD__000 CHECK (LOAD_CONTROL_TYPE IN ('Constant', 'On/Off', 'Modulating')))
/
PROMPT Creating Check Constraint on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT AVCON_1194534541_LOAD__000 CHECK (LOAD_CONTROL_TYPE IN ('Constant', 'On/Off', 'Modulating')))
ADD (CONSTRAINT AVCON_1194861873_EXIST_000 CHECK (EXISTING_METER_OWNER IN ('S', 'T', 'C')))
/
PROMPT Creating Check Constraint on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT AVCON_1194534541_EXIST_000 CHECK (EXISTING_METER_OWNER IN ('S', 'T', 'C')))
/
PROMPT Creating Check Constraint on 'ENQUIRIES'
ALTER TABLE ENQUIRIES
ADD (CONSTRAINT AVCON_1194534541_MARKE_000 CHECK (MARKET_SECTOR_CODE IN ('I', 'D')))
ADD (CONSTRAINT AVCON_1194861873_MARKE_000 CHECK (MARKET_SECTOR_CODE IN ('I', 'D')))
/
@@ -666,6 +680,13 @@ ALTER TABLE QUOTE_ITEMS ADD (CONSTRAINT
(ID))
/
PROMPT Creating Foreign Key on 'PASSWORDS'
ALTER TABLE PASSWORDS ADD (CONSTRAINT
PWD_PRTY_FK FOREIGN KEY
(PRTY_ID) REFERENCES PARTIES
(ID))
/
PROMPT Creating Foreign Key on 'METERS'
ALTER TABLE METERS ADD (CONSTRAINT
METR_DRWG_FK FOREIGN KEY
@@ -722,9 +743,16 @@ ALTER TABLE ENQUIRY_ROLES ADD (CONSTRAINT
(CODE))
/
PROMPT Creating Foreign Key on 'ACCESS_CONTROLS'
ALTER TABLE ACCESS_CONTROLS ADD (CONSTRAINT
ACCL_RT_FK FOREIGN KEY
(RT_CODE) REFERENCES ROLE_TYPES
(CODE))
/
PROMPT Creating Foreign Key on 'ENQUIRIES'
ALTER TABLE ENQUIRIES ADD (CONSTRAINT
ENQU_COMT_CONSUMER_FK FOREIGN KEY
ENQU_COMT_CONS_FK FOREIGN KEY
(CONSUMER_COMT_CODE) REFERENCES CONTACT_MECHANISM_TYPES
(CODE))
/
@@ -752,7 +780,7 @@ ALTER TABLE ENQUIRIES ADD (CONSTRAINT
PROMPT Creating Foreign Key on 'ENQUIRIES'
ALTER TABLE ENQUIRIES ADD (CONSTRAINT
ENQU_COMT_ALT_CONSUMER_FK FOREIGN KEY
ENQU_COMT_ALT_CONS_FK FOREIGN KEY
(ALT_CONSUMER_COMT_CODE) REFERENCES CONTACT_MECHANISM_TYPES
(CODE))
/

View File

@@ -1,6 +1,6 @@
-- C:\Andy\svn\WEBMIP\Schema\mip.ind
--
-- Generated for Oracle 10g on Thu Nov 08 15:09:01 2007 by Server Generator 10.1.2.6.18
-- Generated for Oracle 10g on Mon Nov 12 10:04:33 2007 by Server Generator 10.1.2.6.18
PROMPT Creating Index 'REGU_RETY_FK_I'
@@ -179,6 +179,11 @@ CREATE INDEX QUIT_HOU_FK_I ON QUOTE_ITEMS
(HOU_CODE)
/
PROMPT Creating Index 'PWD_PRTY_FK_I'
CREATE INDEX PWD_PRTY_FK_I ON PASSWORDS
(PRTY_ID)
/
PROMPT Creating Index 'METR_METY_FK_I'
CREATE INDEX METR_METY_FK_I ON METERS
(METY_CODE)
@@ -219,13 +224,18 @@ CREATE INDEX ENRO_ENQU_FK_I ON ENQUIRY_ROLES
(ENQU_CODE)
/
PROMPT Creating Index 'ACCL_RT_FK_I'
CREATE INDEX ACCL_RT_FK_I ON ACCESS_CONTROLS
(RT_CODE)
/
PROMPT Creating Index 'ENQU_METY_FK_I'
CREATE INDEX ENQU_METY_FK_I ON ENQUIRIES
(METY_CODE)
/
PROMPT Creating Index 'ENQU_MESC_REQUIRED_FK_I'
CREATE INDEX ENQU_MESC_REQUIRED_FK_I ON ENQUIRIES
PROMPT Creating Index 'ENQU_MESC_FK_I'
CREATE INDEX ENQU_MESC_FK_I ON ENQUIRIES
(REQUIRED_MESC_CODE)
/
@@ -239,8 +249,8 @@ CREATE INDEX ENQU_SVCP_FK_I ON ENQUIRIES
(EXISTING_SVCP_CODE)
/
PROMPT Creating Index 'ENQU_COMT_CONSUMER_FK_I'
CREATE INDEX ENQU_COMT_CONSUMER_FK_I ON ENQUIRIES
PROMPT Creating Index 'ENQU_COMT_CONS_FK_I'
CREATE INDEX ENQU_COMT_CONS_FK_I ON ENQUIRIES
(CONSUMER_COMT_CODE)
/
@@ -259,13 +269,13 @@ CREATE INDEX ENQU_ALTY_FK_I ON ENQUIRIES
(ALTY_CODE)
/
PROMPT Creating Index 'ENQU_COMT_AGENT_FK_I'
CREATE INDEX ENQU_COMT_AGENT_FK_I ON ENQUIRIES
PROMPT Creating Index 'ENQU_COMT_FK_AGENT_I'
CREATE INDEX ENQU_COMT_FK_AGENT_I ON ENQUIRIES
(AGENT_COMT_CODE)
/
PROMPT Creating Index 'ENQU_COMT_FK_I'
CREATE INDEX ENQU_COMT_FK_I ON ENQUIRIES
PROMPT Creating Index 'ENQU_COMT_ALT_CONS_FK_I'
CREATE INDEX ENQU_COMT_ALT_CONS_FK_I ON ENQUIRIES
(ALT_CONSUMER_COMT_CODE)
/

View File

@@ -1,6 +1,6 @@
-- C:\Andy\svn\WEBMIP\Schema\mip.sql
--
-- Generated for Oracle 10g on Thu Nov 08 15:09:02 2007 by Server Generator 10.1.2.6.18
-- Generated for Oracle 10g on Mon Nov 12 10:04:34 2007 by Server Generator 10.1.2.6.18
SPOOL mip.lst

View File

@@ -1,6 +1,6 @@
-- C:\Andy\svn\WEBMIP\Schema\mip.sqs
--
-- Generated for Oracle 10g on Thu Nov 08 15:09:01 2007 by Server Generator 10.1.2.6.18
-- Generated for Oracle 10g on Mon Nov 12 10:04:33 2007 by Server Generator 10.1.2.6.18
PROMPT Creating Sequence 'FLTR_SEQ'
CREATE SEQUENCE FLTR_SEQ
@@ -30,6 +30,13 @@ CREATE SEQUENCE CNOR_SEQ
NOCYCLE
/
PROMPT Creating Sequence 'ACCL_SEQ'
CREATE SEQUENCE ACCL_SEQ
NOMAXVALUE
NOMINVALUE
NOCYCLE
/
PROMPT Creating Sequence 'QUTE_SEQ'
CREATE SEQUENCE QUTE_SEQ
NOMAXVALUE

View File

@@ -1,6 +1,6 @@
-- C:\Andy\svn\WEBMIP\Schema\mip.tab
--
-- Generated for Oracle 10g on Thu Nov 08 15:09:01 2007 by Server Generator 10.1.2.6.18
-- Generated for Oracle 10g on Mon Nov 12 10:04:33 2007 by Server Generator 10.1.2.6.18
@@ -77,14 +77,16 @@ CREATE TABLE METER_SIZE_CODES
(CODE VARCHAR2(80) NOT NULL
,DESCRIPTION VARCHAR2(80)
,QMAX NUMBER NOT NULL
,VALID_FOR_EXISTING_METER VARCHAR2(240) NOT NULL
,VALID_FOR_NEW_METER VARCHAR2(240) NOT NULL
,VALID_FOR_EXISTING_METER VARCHAR2(3) NOT NULL
,VALID_FOR_NEW_METER VARCHAR2(3) NOT NULL
)
/
PROMPT Creating Table 'COSTS'
CREATE TABLE COSTS
(COST_PRICE NUMBER(*,2)
(AICO_CODE VARCHAR2(80)
,COST_PRICE NUMBER(*,2)
,DESCRIPTION VARCHAR2(80)
,VALID_FROM DATE NOT NULL
,REGI_CODE VARCHAR2(80)
,BAS_CODE VARCHAR2(80)
@@ -229,7 +231,6 @@ CREATE TABLE PARTIES
,GT_7B_CONTRACT_REF VARCHAR2(25)
,ADVERSARIAL_CONTRACT_REF VARCHAR2(25)
,USERNAME VARCHAR2(80)
,PASSWORD_HASH VARCHAR2(255)
,STATUS VARCHAR2(6)
,FIRST_NAME VARCHAR2(80)
,LAST_NAME VARCHAR2(80)
@@ -267,6 +268,15 @@ CREATE TABLE ROLE_TYPES
)
/
PROMPT Creating Table 'PASSWORDS'
CREATE TABLE PASSWORDS
(PRTY_ID NUMBER(*,0) NOT NULL
,PASSWORD_HASH VARCHAR2(255) NOT NULL
,CREATED_ON DATE NOT NULL
,CREATED_BY NUMBER
)
/
PROMPT Creating Table 'ASSET_LOCATION_TYPES'
CREATE TABLE ASSET_LOCATION_TYPES
(CODE VARCHAR2(80) NOT NULL
@@ -338,6 +348,15 @@ CREATE TABLE ENQUIRY_ROLES
)
/
PROMPT Creating Table 'ACCESS_CONTROLS'
CREATE TABLE ACCESS_CONTROLS
(PAGE_NUMBER NUMBER NOT NULL
,RT_CODE VARCHAR2(80)
,ITEM VARCHAR2(80)
,ID NUMBER(*,0) NOT NULL
)
/
PROMPT Creating Table 'ENQUIRIES'
CREATE TABLE ENQUIRIES
(CODE VARCHAR2(80) NOT NULL
@@ -359,9 +378,9 @@ CREATE TABLE ENQUIRIES
,REQUIRED_IP_DETAILS VARCHAR2(250)
,REQUIRED_IP_MBAR NUMBER
,OUTLET_PRESSURE NUMBER
,HOUSING_REQUIRED VARCHAR2(240)
,BASE_REQUIRED VARCHAR2(240)
,TWIN_STREAM_REQUIRED VARCHAR2(240)
,HOUSING_REQUIRED VARCHAR2(3)
,BASE_REQUIRED VARCHAR2(3)
,TWIN_STREAM_REQUIRED VARCHAR2(3)
,QMAX NUMBER
,EXISTING_METER_MODEL VARCHAR2(10)
,OTHER_INFORMATION VARCHAR2(250)
@@ -385,25 +404,25 @@ CREATE TABLE ENQUIRIES
,ACCESS_ADDITIONAL VARCHAR2(210)
,MPRN_ALT VARCHAR2(250)
,ANNUAL_QUANTITY NUMBER
,DOWNSTREAM_BOOSTER_OR_COMPRESS VARCHAR2(240)
,DOWNSTREAM_BOOSTER_OR_COMPRESS VARCHAR2(3)
,INDICATIVE_DATE DATE
,INDICATIVE_TIME VARCHAR2(2) DEFAULT 'DY'
,OTHER_PROJECT_REFERENCE VARCHAR2(50)
,CONVERTOR_REQUIRED VARCHAR2(240)
,AMR_REQUIRED VARCHAR2(240)
,EMS_REQUIRED VARCHAR2(240)
,BYPASS_REQUIRED VARCHAR2(240)
,LOGGER_REQUIRED VARCHAR2(240)
,CONVERTOR_REQUIRED VARCHAR2(3)
,AMR_REQUIRED VARCHAR2(3)
,EMS_REQUIRED VARCHAR2(3)
,BYPASS_REQUIRED VARCHAR2(40)
,LOGGER_REQUIRED VARCHAR2(3)
,QMIN NUMBER
,LOAD_CONTROL_TYPE VARCHAR2(10)
,EXISTING_METER_SERIAL_NO VARCHAR2(14)
,EXISTING_METER_OWNER VARCHAR2(1)
,EXISTING_METER_ASSET_PROVIDER VARCHAR2(210)
,MARKET_SECTOR_CODE VARCHAR2(1) DEFAULT 'I'
,JOB_DESCRIPTION VARCHAR2(500)
,CREATED_BY NUMBER NOT NULL
,UPDATED_BY NUMBER
,UPDATED_ON DATE
,METER_SIZE VARCHAR2(240)
)
/