You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
(31) |
Apr
(21) |
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(9) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <bla...@us...> - 2008-04-16 02:30:08
|
Revision: 37 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=37&view=rev Author: blamonica Date: 2008-04-15 19:30:04 -0700 (Tue, 15 Apr 2008) Log Message: ----------- Check in cruise-control build files and configuration. Not done yet. Added Paths: ----------- trunk/drawbridge/src/cruise/ trunk/drawbridge/src/cruise/config.xml trunk/drawbridge/src/cruise/cruise-build.xml trunk/drawbridge/src/cruise/db.properties Added: trunk/drawbridge/src/cruise/config.xml =================================================================== --- trunk/drawbridge/src/cruise/config.xml (rev 0) +++ trunk/drawbridge/src/cruise/config.xml 2008-04-16 02:30:04 UTC (rev 37) @@ -0,0 +1,3 @@ +<cruisecontrol> + +</cruisecontrol> Added: trunk/drawbridge/src/cruise/cruise-build.xml =================================================================== --- trunk/drawbridge/src/cruise/cruise-build.xml (rev 0) +++ trunk/drawbridge/src/cruise/cruise-build.xml 2008-04-16 02:30:04 UTC (rev 37) @@ -0,0 +1,33 @@ +<project name="drawbridge" default="all" basedir="."> + <property file="./db.properties"/> + + <target name="all" depends="sync,build,reset.database,deploy"/> + + <target name="sync"> + <exec executable="svn"> + <arg value="co"/> + <arg value="https://drawbridge.svn.sourceforge.net/svnroot/drawbridge/trunk/drawbridge"/> + <arg value="checkout/drawbridge"/> + </exec> + </target> + + <target name="build"> + <exec dir="checkout/drawbridge" executable="ant"/> + </target> + + <target name="reset.database"> + <exec dir="/bin" executable="bash"> + <arg value="-c"/> + <arg value="cat ${basedir}/checkout/drawbridge/src/sql/create_drawbridge_schema.sql | /usr/local/mysql/bin/mysql -u${db.user} -p${db.password} drawbridge"/> + </exec> + + <exec dir="/bin" executable="bash"> + <arg value="-c"/> + <arg value="cat ${basedir}/checkout/drawbridge/src/sql/example_data.sql | /usr/local/mysql/bin/mysql -u${db.user} -p${db.password} drawbridge"/> + </exec> + </target> + + <target name="deploy"> + <copy tofile="/opt/tomcat6/webapps/drawbridge.war" file="checkout/drawbridge/target/drawbridge.war"/> + </target> +</project> Added: trunk/drawbridge/src/cruise/db.properties =================================================================== --- trunk/drawbridge/src/cruise/db.properties (rev 0) +++ trunk/drawbridge/src/cruise/db.properties 2008-04-16 02:30:04 UTC (rev 37) @@ -0,0 +1,2 @@ +db.user=drawbridge_user +db.password=drawbridge This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bla...@us...> - 2008-04-16 02:13:54
|
Revision: 36 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=36&view=rev Author: blamonica Date: 2008-04-15 19:13:50 -0700 (Tue, 15 Apr 2008) Log Message: ----------- Add mysql jar to the war for now. Modified Paths: -------------- trunk/drawbridge/build.xml Modified: trunk/drawbridge/build.xml =================================================================== --- trunk/drawbridge/build.xml 2008-04-16 02:02:50 UTC (rev 35) +++ trunk/drawbridge/build.xml 2008-04-16 02:13:50 UTC (rev 36) @@ -155,6 +155,7 @@ <file file="${env.JAR_REPO}/${jar.spring}"/> <file file="${env.JAR_REPO}/${jar.spring.web}"/> <file file="${env.JAR_REPO}/${jar.standard}"/> + <file file="${env.JAR_REPO}/${jar.mysql}"/> </resources> </copy> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bla...@us...> - 2008-04-16 02:02:57
|
Revision: 35 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=35&view=rev Author: blamonica Date: 2008-04-15 19:02:50 -0700 (Tue, 15 Apr 2008) Log Message: ----------- Remove comments so that mysql doesn't throw an error when trying to run these scripts to reset the database. Modified Paths: -------------- trunk/drawbridge/src/sql/create_drawbridge_schema.sql Modified: trunk/drawbridge/src/sql/create_drawbridge_schema.sql =================================================================== --- trunk/drawbridge/src/sql/create_drawbridge_schema.sql 2008-04-02 00:54:58 UTC (rev 34) +++ trunk/drawbridge/src/sql/create_drawbridge_schema.sql 2008-04-16 02:02:50 UTC (rev 35) @@ -128,7 +128,6 @@ CONSTRAINT UNQ_DB_GRAP UNIQUE (GROUP_ID, RUN_AS_ID, PERMISSION_ID) ); ---SYSTEM PERMISSIONS INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (1,'ADD USER','S'); INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (2,'EDIT USER','S'); INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (3,'DELETE USER','S'); @@ -150,13 +149,11 @@ INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (15,'GRANT PERMISSIONS FOR SYSTEM','S'); ---DATABASE PERMISSIONS INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (100,'ADD RUN-AS USER FOR DATABASE','D'); INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (101,'EDIT RUN-AS USER FOR DATABASE','D'); INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (102,'DELETE RUN-AS USER FOR DATABASE','D'); INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (103,'GRANT PERMISSIONS FOR DATABASE','D'); ---RUN-AS PERMISSIONS INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (200,'SUBMIT JOB FOR RUN-AS','R'); INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (201,'REVIEW JOB FOR RUN-AS','R'); INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (202,'APPROVE JOB FOR RUN-AS','R'); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bla...@us...> - 2008-04-01 02:43:36
|
Revision: 33 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=33&view=rev Author: blamonica Date: 2008-03-31 19:43:34 -0700 (Mon, 31 Mar 2008) Log Message: ----------- [ 1917705 ] Need unique DBs on Edit RunAs Page - Remove join="fetch" from our collections. Performing a cartesian product and not doing what it seems to have done in the past. Modified Paths: -------------- trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/Database.hbm.xml trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/RunAsAccount.hbm.xml trunk/drawbridge/src/test/db.script trunk/drawbridge/src/test/net/sf/drawbridge/dao/DatabaseDaoTest.java trunk/drawbridge/src/test/net/sf/drawbridge/dao/RunAsAccountDaoTest.java Modified: trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/Database.hbm.xml =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/Database.hbm.xml 2008-04-01 00:45:06 UTC (rev 32) +++ trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/Database.hbm.xml 2008-04-01 02:43:34 UTC (rev 33) @@ -21,7 +21,7 @@ fetch="join" lazy="false"/> - <set name="accounts" table="DB_RUN_AS" fetch="join" inverse="true" lazy="false"> + <set name="accounts" table="DB_RUN_AS" inverse="true" lazy="false"> <key column="DATABASE_ID"/> <one-to-many class="net.sf.drawbridge.vo.RunAsAccount"/> </set> Modified: trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/RunAsAccount.hbm.xml =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/RunAsAccount.hbm.xml 2008-04-01 00:45:06 UTC (rev 32) +++ trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/RunAsAccount.hbm.xml 2008-04-01 02:43:34 UTC (rev 33) @@ -18,7 +18,6 @@ <many-to-one name="database" column="DATABASE_ID" class="net.sf.drawbridge.vo.Database" - fetch="join" lazy="false" /> </class> Modified: trunk/drawbridge/src/test/db.script =================================================================== --- trunk/drawbridge/src/test/db.script 2008-04-01 00:45:06 UTC (rev 32) +++ trunk/drawbridge/src/test/db.script 2008-04-01 02:43:34 UTC (rev 33) @@ -6,7 +6,7 @@ CREATE MEMORY TABLE DB_USER_GROUP(USER_ID INTEGER NOT NULL,GROUP_ID INTEGER NOT NULL,PRIMARY KEY(USER_ID,GROUP_ID),CONSTRAINT FK_DB_USER_GROUP_DB_USER FOREIGN KEY(USER_ID) REFERENCES PUBLIC.DB_USER(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_USER_GROUP_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE) CREATE MEMORY TABLE DB_DRIVER(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR(32) NOT NULL,CLASS_NAME VARCHAR(128) NOT NULL,CONSTRAINT UNQ_DB_DRIVER UNIQUE(NAME)) CREATE MEMORY TABLE DB_DATABASE(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR(32) NOT NULL,JDBC_URL VARCHAR(128) NOT NULL,DRIVER_ID INTEGER NOT NULL,CONSTRAINT FK_DB_DATABASE_DB_DRIVER FOREIGN KEY(DRIVER_ID) REFERENCES PUBLIC.DB_DRIVER(ID),CONSTRAINT UNQ_DB_DATABASE UNIQUE(NAME)) -CREATE MEMORY TABLE DB_RUN_AS(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,USER_NAME VARCHAR(16) NOT NULL,ENC_PASSWORD VARCHAR(32) NOT NULL,DATABASE_ID INTEGER NOT NULL,CONSTRAINT FK_DB_RUN_AS_DB_DATABASE FOREIGN KEY(DATABASE_ID) REFERENCES PUBLIC.DB_DATABASE(ID),CONSTRAINT UNQ_DB_RUN_AS UNIQUE(USER_NAME,DATABASE_ID)) +CREATE MEMORY TABLE DB_RUN_AS(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 2) NOT NULL PRIMARY KEY,USER_NAME VARCHAR(16) NOT NULL,ENC_PASSWORD VARCHAR(32) NOT NULL,DATABASE_ID INTEGER NOT NULL,CONSTRAINT FK_DB_RUN_AS_DB_DATABASE FOREIGN KEY(DATABASE_ID) REFERENCES PUBLIC.DB_DATABASE(ID),CONSTRAINT UNQ_DB_RUN_AS UNIQUE(USER_NAME,DATABASE_ID)) CREATE MEMORY TABLE DB_JOB(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 2) NOT NULL PRIMARY KEY,NAME VARCHAR(64) NOT NULL,RUN_AS_ID INTEGER NOT NULL,QUERY VARCHAR(1024) NOT NULL,SUBMITTED_BY INTEGER NOT NULL,SUBMITTED_ON TIMESTAMP NOT NULL,REVIEWED_BY INTEGER,REVIEWED_ON TIMESTAMP,APPROVED_BY INTEGER,APPROVED_ON TIMESTAMP,ACTIVE VARCHAR(1) NOT NULL,SCHEDULE VARCHAR(128),CONSTRAINT FK_DB_JOB_DB_RUN_AS FOREIGN KEY(RUN_AS_ID) REFERENCES PUBLIC.DB_RUN_AS(ID),CONSTRAINT FK_DB_JOB_SUBMITTED_BY FOREIGN KEY(SUBMITTED_BY) REFERENCES PUBLIC.DB_USER(ID),CONSTRAINT FK_DB_JOB_REVIEWED_BY FOREIGN KEY(REVIEWED_BY) REFERENCES PUBLIC.DB_USER(ID),CONSTRAINT FK_DB_JOB_APPROVED_BY FOREIGN KEY(APPROVED_BY) REFERENCES PUBLIC.DB_USER(ID),CONSTRAINT UNQ_DB_JOB UNIQUE(NAME),CONSTRAINT CHK_DB_JOB_ACTIVE CHECK((DB_JOB.ACTIVE) IN (('Y'),('N')))) CREATE MEMORY TABLE DB_PERMISSION_LIST(ID INTEGER NOT NULL PRIMARY KEY,NAME VARCHAR(64) NOT NULL,PERMISSION_TYPE VARCHAR(1) NOT NULL,CONSTRAINT UNQ_DB_PERMISSION UNIQUE(NAME,PERMISSION_TYPE),CONSTRAINT CHK_DB_PERMISSION_LIST_PERMISSION_TYPE CHECK((DB_PERMISSION_LIST.PERMISSION_TYPE) IN (('S'),('D'),('R')))) CREATE MEMORY TABLE DB_SYSTEM_PERMISSION(GROUP_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,PRIMARY KEY(GROUP_ID,PERMISSION_ID),CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES PUBLIC.DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE) @@ -16,7 +16,7 @@ ALTER TABLE DB_GROUP ALTER COLUMN ID RESTART WITH 3 ALTER TABLE DB_DRIVER ALTER COLUMN ID RESTART WITH 1 ALTER TABLE DB_DATABASE ALTER COLUMN ID RESTART WITH 1 -ALTER TABLE DB_RUN_AS ALTER COLUMN ID RESTART WITH 1 +ALTER TABLE DB_RUN_AS ALTER COLUMN ID RESTART WITH 2 ALTER TABLE DB_JOB ALTER COLUMN ID RESTART WITH 2 ALTER TABLE DB_DATABASE_PERMISSION ALTER COLUMN ID RESTART WITH 0 SET SCHEMA PUBLIC @@ -35,6 +35,7 @@ INSERT INTO DB_DRIVER VALUES(0,'HSQLDB Driver','org.hsqldb.jdbcDriver') INSERT INTO DB_DATABASE VALUES(0,'HSQLDB In-Memory Database','jdbc:hsqldb:mem:.',0) INSERT INTO DB_RUN_AS VALUES(0,'sa','base64',0) +INSERT INTO DB_RUN_AS VALUES(1,'dev','base64',0) INSERT INTO DB_JOB VALUES(0,'Job 1',0,'select count(*) from dual',0,'2008-03-19 19:00:00.000000',1,'2008-03-20 18:00:00.000000',1,'2008-03-20 18:00:01.000000','Y','schedule') INSERT INTO DB_JOB VALUES(1,'Job 2',0,'select count(*) from dual',0,'2008-03-19 19:00:00.000000',1,'2008-03-20 18:00:00.000000',1,'2008-03-20 18:00:01.000000','Y','schedule') INSERT INTO DB_PERMISSION_LIST VALUES(1,'ADD USER','S') Modified: trunk/drawbridge/src/test/net/sf/drawbridge/dao/DatabaseDaoTest.java =================================================================== --- trunk/drawbridge/src/test/net/sf/drawbridge/dao/DatabaseDaoTest.java 2008-04-01 00:45:06 UTC (rev 32) +++ trunk/drawbridge/src/test/net/sf/drawbridge/dao/DatabaseDaoTest.java 2008-04-01 02:43:34 UTC (rev 33) @@ -45,7 +45,7 @@ assertEquals("name", "HSQLDB In-Memory Database", result.getName()); assertEquals("jdbcUrl", "jdbc:hsqldb:mem:.", result.getJdbcUrl()); assertNotNull("driver", result.getDriver()); - assertEquals("accounts", 1, result.getAccounts().size()); + assertEquals("accounts", 2, result.getAccounts().size()); } public void testShouldCreateNewDatabaseObject() throws Exception { @@ -99,6 +99,20 @@ } finally { txManager.rollback(tx); } - } + + public void testShouldNotHaveDuplicateDatabasesIfThereIsMoreThanOneRunAsAccountForTheDatabase() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + Database existing = target.get(0); + Database db = new Database(null, "temporary db", "jdbc:temp", existing.getDriver()); + target.create(db); + + List<Database> all = target.getAll(); + assertEquals(2, all.size()); + } finally { + txManager.rollback(tx); + } + } + } Modified: trunk/drawbridge/src/test/net/sf/drawbridge/dao/RunAsAccountDaoTest.java =================================================================== --- trunk/drawbridge/src/test/net/sf/drawbridge/dao/RunAsAccountDaoTest.java 2008-04-01 00:45:06 UTC (rev 32) +++ trunk/drawbridge/src/test/net/sf/drawbridge/dao/RunAsAccountDaoTest.java 2008-04-01 02:43:34 UTC (rev 33) @@ -94,10 +94,24 @@ target.create(account); List<RunAsAccount> all = target.getAll(); - assertEquals(2, all.size()); + assertEquals(3, all.size()); } finally { txManager.rollback(tx); } - } + + public void testShouldRetrieveOnlyDistinctRunAsAccountsWhenSpecifyingADatabaseId() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + RunAsAccount existing = target.get(0); + RunAsAccount account = new RunAsAccount(null, "temp_user", "temp_password", existing.getDatabase()); + target.create(account); + + List<RunAsAccount> all = target.getAccountsForDatabase(account.getDatabase().getId()); + assertEquals(3, all.size()); + } finally { + txManager.rollback(tx); + } + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-04-01 00:45:14
|
Revision: 32 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=32&view=rev Author: acresse Date: 2008-03-31 17:45:06 -0700 (Mon, 31 Mar 2008) Log Message: ----------- security - added checks for user admin Modified Paths: -------------- trunk/drawbridge/WebContent/WEB-INF/drawbridge-servlet.xml trunk/drawbridge/WebContent/WEB-INF/jsp/header.jsp trunk/drawbridge/src/canoo/dtd/Project.dtd trunk/drawbridge/src/canoo/tests/addUser.xml trunk/drawbridge/src/canoo/tests/deleteUser.xml trunk/drawbridge/src/canoo/tests/editUser.xml trunk/drawbridge/src/java/net/sf/drawbridge/controller/AbstractDrawbridgeController.java trunk/drawbridge/src/java/net/sf/drawbridge/controller/user/AddOrEditUserSubmitController.java trunk/drawbridge/src/java/net/sf/drawbridge/controller/user/DeleteUserSubmitController.java trunk/drawbridge/src/java/net/sf/drawbridge/domain/DefaultDrawbridgeService.java trunk/drawbridge/src/java/net/sf/drawbridge/domain/DrawbridgeService.java trunk/drawbridge/src/java/net/sf/drawbridge/domain/SecureDrawbridgeService.java trunk/drawbridge/src/java/net/sf/drawbridge/security/DefaultSecurityService.java trunk/drawbridge/src/java/net/sf/drawbridge/security/SecurityService.java trunk/drawbridge/src/java/net/sf/drawbridge/vo/ExecutionContext.java trunk/drawbridge/src/java/net/sf/drawbridge/vo/Permission.java trunk/drawbridge/src/test/net/sf/drawbridge/controller/user/AddOrEditUserSubmitControllerTest.java trunk/drawbridge/src/test/net/sf/drawbridge/controller/user/DeleteUserSubmitControllerTest.java Added Paths: ----------- trunk/drawbridge/src/canoo/includes/doLogin.xml trunk/drawbridge/src/canoo/includes/doLogout.xml trunk/drawbridge/src/java/net/sf/drawbridge/controller/FakeLoginController.java trunk/drawbridge/src/test/net/sf/drawbridge/controller/AbstractControllerTest.java trunk/drawbridge/src/test/net/sf/drawbridge/domain/SecureDrawbridgeServiceTest.java Removed Paths: ------------- trunk/drawbridge/src/canoo/includes/doSomething.xml Modified: trunk/drawbridge/WebContent/WEB-INF/drawbridge-servlet.xml =================================================================== --- trunk/drawbridge/WebContent/WEB-INF/drawbridge-servlet.xml 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/WebContent/WEB-INF/drawbridge-servlet.xml 2008-04-01 00:45:06 UTC (rev 32) @@ -15,6 +15,7 @@ <props> <prop key="/MainMenu.do">mainMenuController</prop> <prop key="/Admin.do">adminController</prop> + <prop key="/FakeLogin.do">fakeLoginController</prop> <prop key="/ManageDatabases.do">manageDatabasesController</prop> <prop key="/AddDatabase.do">addOrEditDatabaseController</prop> @@ -64,6 +65,7 @@ <bean id="mainMenuController" class="net.sf.drawbridge.controller.MainMenuController" parent="abstractController"/> <bean id="adminController" class="net.sf.drawbridge.controller.AdminController" parent="abstractController"/> + <bean id="fakeLoginController" class="net.sf.drawbridge.controller.FakeLoginController" parent="abstractController"/> <bean id="manageDatabasesController" class="net.sf.drawbridge.controller.database.ManageDatabasesController" parent="abstractController"/> <bean id="addOrEditDatabaseController" class="net.sf.drawbridge.controller.database.AddOrEditDatabaseController" parent="abstractController"/> Modified: trunk/drawbridge/WebContent/WEB-INF/jsp/header.jsp =================================================================== --- trunk/drawbridge/WebContent/WEB-INF/jsp/header.jsp 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/WebContent/WEB-INF/jsp/header.jsp 2008-04-01 00:45:06 UTC (rev 32) @@ -28,7 +28,8 @@ <tr height="100" valign="bottom" class="headercell"> <td width="100"><a href="MainMenu.do"><img src="images/drawbridge.png" border="0"></a></td> <td style="font-size: 50" valign="middle">DrawBridge</td> - <td width="250" align="right"> + <td width="500" align="right"> + Welcome <c:out value="${loggedInUser.firstName}" default=""/> ! <a href="MainMenu.do"><img src="images/icons/16x16/go-home.png" border="0">Home</a> | <a href="Admin.do"><img src="images/icons/16x16/preferences-system.png" border="0">Admin</a> </td> Modified: trunk/drawbridge/src/canoo/dtd/Project.dtd =================================================================== --- trunk/drawbridge/src/canoo/dtd/Project.dtd 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/canoo/dtd/Project.dtd 2008-04-01 00:45:06 UTC (rev 32) @@ -5,5 +5,6 @@ Do not edit it else you risk to lose your changes. --> -<!ENTITY doSomething SYSTEM "../includes/doSomething.xml"> +<!ENTITY doLogin SYSTEM "../includes/doLogin.xml"> +<!ENTITY doLogout SYSTEM "../includes/doLogout.xml"> Copied: trunk/drawbridge/src/canoo/includes/doLogin.xml (from rev 31, trunk/drawbridge/src/canoo/includes/doSomething.xml) =================================================================== --- trunk/drawbridge/src/canoo/includes/doLogin.xml (rev 0) +++ trunk/drawbridge/src/canoo/includes/doLogin.xml 2008-04-01 00:45:06 UTC (rev 32) @@ -0,0 +1,11 @@ +<!-- +Example of entity for reuse of code fragments. + +The generated DTD will automatically reference files located in this folder +allowing to use entites just like: + + &doSomething; + +--> + +<invoke url="http://localhost:8080/drawbridge/FakeLogin.do?loggedInUser=-1"/> Added: trunk/drawbridge/src/canoo/includes/doLogout.xml =================================================================== --- trunk/drawbridge/src/canoo/includes/doLogout.xml (rev 0) +++ trunk/drawbridge/src/canoo/includes/doLogout.xml 2008-04-01 00:45:06 UTC (rev 32) @@ -0,0 +1,11 @@ +<!-- +Example of entity for reuse of code fragments. + +The generated DTD will automatically reference files located in this folder +allowing to use entites just like: + + &doSomething; + +--> + +<invoke url="http://localhost:8080/drawbridge/FakeLogin.do"/> Deleted: trunk/drawbridge/src/canoo/includes/doSomething.xml =================================================================== --- trunk/drawbridge/src/canoo/includes/doSomething.xml 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/canoo/includes/doSomething.xml 2008-04-01 00:45:06 UTC (rev 32) @@ -1,13 +0,0 @@ -<!-- -Example of entity for reuse of code fragments. - -The generated DTD will automatically reference files located in this folder -allowing to use entites just like: - - &doSomething; - ---> - -<!-- -some steps here... ---> \ No newline at end of file Modified: trunk/drawbridge/src/canoo/tests/addUser.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/addUser.xml 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/canoo/tests/addUser.xml 2008-04-01 00:45:06 UTC (rev 32) @@ -7,6 +7,7 @@ <target name="test"> <webtest name="add a user"> + &doLogin; <invoke url="http://localhost:8080/drawbridge/ManageUsers.do"/> <clickLink label="create a new user"/> <setInputField name="userName" value="test"/> @@ -15,6 +16,7 @@ <setSelectField name="active" text="Active"/> <clickButton label="Submit"/> <verifyText text="Successfully created user: test"/> + &doLogout; </webtest> </target> Modified: trunk/drawbridge/src/canoo/tests/deleteUser.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/deleteUser.xml 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/canoo/tests/deleteUser.xml 2008-04-01 00:45:06 UTC (rev 32) @@ -7,9 +7,11 @@ <target name="test"> <webtest name="delete user"> + &doLogin; <invoke url="http://localhost:8080/drawbridge/ManageUsers.do"/> <clickLink htmlId="delete-test2"/> <verifyText text="Successfully deleted user."/> + &doLogout; </webtest> </target> Modified: trunk/drawbridge/src/canoo/tests/editUser.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/editUser.xml 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/canoo/tests/editUser.xml 2008-04-01 00:45:06 UTC (rev 32) @@ -7,6 +7,7 @@ <target name="test"> <webtest name="edit user"> + &doLogin; <invoke url="http://localhost:8080/drawbridge/ManageUsers.do"/> <clickLink htmlId="edit-test"/> <setInputField name="userName" value="test2"/> @@ -19,6 +20,7 @@ <verifyText text="Successfully updated user: test2"/> <clickLink htmlId="edit-test2"/> <setSelectField name="assignedGroups" text="devs" description="make sure devs is assigned"/> + &doLogout; </webtest> </target> Modified: trunk/drawbridge/src/java/net/sf/drawbridge/controller/AbstractDrawbridgeController.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/controller/AbstractDrawbridgeController.java 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/java/net/sf/drawbridge/controller/AbstractDrawbridgeController.java 2008-04-01 00:45:06 UTC (rev 32) @@ -21,11 +21,13 @@ import net.sf.drawbridge.domain.DrawbridgeService; import net.sf.drawbridge.vo.ExecutionContext; +import net.sf.drawbridge.vo.User; import org.springframework.web.servlet.mvc.AbstractController; public abstract class AbstractDrawbridgeController extends AbstractController{ + public static final String LOGGED_IN_USER = "loggedInUser"; public static final String MESSAGE_LIST="messageList"; protected DrawbridgeService drawbridgeService; @@ -49,8 +51,23 @@ return value; } + protected Integer getIntegerValueOrNull(Object value){ + if(value == null){ + return null; + } else { + return new Integer(value.toString().trim()); + } + } + protected ExecutionContext getExecutionContext(HttpServletRequest request){ - return null; + ExecutionContext context = new ExecutionContext(); + User user = (User) request.getSession().getAttribute(LOGGED_IN_USER); + if(user != null) { + context.setUserId(user.getId()); + } + context.setDatabaseId(getIntegerValueOrNull(getValueFromRequestOrSession("databaseId",request,false))); + context.setRunAsId(getIntegerValueOrNull(getValueFromRequestOrSession("runAsId",request,false))); + return context; } } Added: trunk/drawbridge/src/java/net/sf/drawbridge/controller/FakeLoginController.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/controller/FakeLoginController.java (rev 0) +++ trunk/drawbridge/src/java/net/sf/drawbridge/controller/FakeLoginController.java 2008-04-01 00:45:06 UTC (rev 32) @@ -0,0 +1,53 @@ +/* + * This file is part of DrawBridge. + * Copyright 2008 Adam Cresse + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation,Inc.,51 Franklin Street,Fifth Floor, Boston, MA 02110-1301, USA. + */ +package net.sf.drawbridge.controller; + +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import net.sf.drawbridge.vo.Status; +import net.sf.drawbridge.vo.StatusMessage; +import net.sf.drawbridge.vo.User; + +import org.springframework.web.servlet.ModelAndView; + +public class FakeLoginController extends AbstractDrawbridgeController { + + protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { + ModelAndView mav = new ModelAndView("mainMenu"); + + User user = null; + List<StatusMessage> messages=new ArrayList<StatusMessage>(); + try{ + Integer userId = new Integer(request.getParameter(LOGGED_IN_USER)); + user = this.drawbridgeService.getUser(userId); + } catch(Exception ex){ + ex.printStackTrace(); + } + request.getSession().setAttribute(LOGGED_IN_USER, user); + messages.add(new StatusMessage(Status.INFO, "Logged in as: "+user, null)); + mav.addObject(MESSAGE_LIST,messages); + + mav.addObject("databaseList", drawbridgeService.listDatabases()); + return mav; + } + +} Modified: trunk/drawbridge/src/java/net/sf/drawbridge/controller/user/AddOrEditUserSubmitController.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/controller/user/AddOrEditUserSubmitController.java 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/java/net/sf/drawbridge/controller/user/AddOrEditUserSubmitController.java 2008-04-01 00:45:06 UTC (rev 32) @@ -60,7 +60,7 @@ request.getParameter("firstName"), request.getParameter("lastName"), new Boolean(request.getParameter("active"))); - drawbridgeService.addUser(user); + drawbridgeService.addUser(user, getExecutionContext(request)); updateUserAssignments(user.getId(), request); messages.add(new StatusMessage(Status.SUCCESS,"Successfully created user: "+userName,null)); } catch(Exception ex){ @@ -78,7 +78,7 @@ request.getParameter("firstName"), request.getParameter("lastName"), new Boolean(request.getParameter("active"))); - drawbridgeService.updateUser(user); + drawbridgeService.updateUser(user, getExecutionContext(request)); updateUserAssignments(user.getId(), request); messages.add(new StatusMessage(Status.SUCCESS,"Successfully updated user: "+userName,null)); } catch(Exception ex){ Modified: trunk/drawbridge/src/java/net/sf/drawbridge/controller/user/DeleteUserSubmitController.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/controller/user/DeleteUserSubmitController.java 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/java/net/sf/drawbridge/controller/user/DeleteUserSubmitController.java 2008-04-01 00:45:06 UTC (rev 32) @@ -41,7 +41,7 @@ String userIdStr = request.getParameter("userId"); try{ Integer userId=new Integer(userIdStr); - drawbridgeService.deleteUser(userId); + drawbridgeService.deleteUser(userId, getExecutionContext(request)); messages.add(new StatusMessage(Status.SUCCESS,"Successfully deleted user.",null)); } catch(Exception ex){ LOG.error("Failed to delete user: "+userIdStr, ex); Modified: trunk/drawbridge/src/java/net/sf/drawbridge/domain/DefaultDrawbridgeService.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/domain/DefaultDrawbridgeService.java 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/java/net/sf/drawbridge/domain/DefaultDrawbridgeService.java 2008-04-01 00:45:06 UTC (rev 32) @@ -32,6 +32,7 @@ import net.sf.drawbridge.exec.QueryParser; import net.sf.drawbridge.vo.Database; import net.sf.drawbridge.vo.Driver; +import net.sf.drawbridge.vo.ExecutionContext; import net.sf.drawbridge.vo.Group; import net.sf.drawbridge.vo.Job; import net.sf.drawbridge.vo.QueryParam; @@ -111,7 +112,7 @@ } - public void addUser(User user) { + public void addUser(User user, ExecutionContext context) { userDao.create(user); } @@ -166,7 +167,7 @@ runAsAccountDao.delete(account); } - public void deleteUser(Integer userId) { + public void deleteUser(Integer userId, ExecutionContext context) { User user = userDao.get(userId); userDao.delete(user); } @@ -280,7 +281,7 @@ runAsAccountDao.update(newRunAsAccount); } - public void updateUser(User newUser) { + public void updateUser(User newUser, ExecutionContext context) { userDao.update(newUser); } Modified: trunk/drawbridge/src/java/net/sf/drawbridge/domain/DrawbridgeService.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/domain/DrawbridgeService.java 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/java/net/sf/drawbridge/domain/DrawbridgeService.java 2008-04-01 00:45:06 UTC (rev 32) @@ -23,6 +23,7 @@ import net.sf.drawbridge.vo.Database; import net.sf.drawbridge.vo.Driver; +import net.sf.drawbridge.vo.ExecutionContext; import net.sf.drawbridge.vo.Group; import net.sf.drawbridge.vo.Job; import net.sf.drawbridge.vo.QueryParam; @@ -34,9 +35,9 @@ //System permission methods public List<User> listUsers(); public User getUser(Integer userId); - public void addUser(User user); - public void updateUser(User newUser); - public void deleteUser(Integer userId); + public void addUser(User user, ExecutionContext context); + public void updateUser(User newUser, ExecutionContext context); + public void deleteUser(Integer userId, ExecutionContext context); public List<Group> listGroups(); public Group getGroup(Integer groupId); Modified: trunk/drawbridge/src/java/net/sf/drawbridge/domain/SecureDrawbridgeService.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/domain/SecureDrawbridgeService.java 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/java/net/sf/drawbridge/domain/SecureDrawbridgeService.java 2008-04-01 00:45:06 UTC (rev 32) @@ -7,8 +7,10 @@ import net.sf.drawbridge.security.SecurityService; import net.sf.drawbridge.vo.Database; import net.sf.drawbridge.vo.Driver; +import net.sf.drawbridge.vo.ExecutionContext; import net.sf.drawbridge.vo.Group; import net.sf.drawbridge.vo.Job; +import net.sf.drawbridge.vo.Permission; import net.sf.drawbridge.vo.QueryParam; import net.sf.drawbridge.vo.RunAsAccount; import net.sf.drawbridge.vo.User; @@ -23,6 +25,28 @@ this.securityService = securityService; } + private boolean checkPermission(ExecutionContext context, Permission permission) { + return securityService.hasPermission(context, permission); + } + + public void addUser(User user, ExecutionContext context) { + if(checkPermission(context, Permission.SYSTEM_USER_ADD)){ + insecureService.addUser(user, context); + } + } + + public void updateUser(User newUser, ExecutionContext context) { + if(checkPermission(context, Permission.SYSTEM_USER_EDIT)){ + insecureService.updateUser(newUser, context); + } + } + + public void deleteUser(Integer userId, ExecutionContext context) { + if(checkPermission(context, Permission.SYSTEM_USER_DELETE)){ + insecureService.deleteUser(userId, context); + } + } + public void activateJob(Long jobId) { insecureService.activateJob(jobId); } @@ -59,10 +83,6 @@ insecureService.addSystemPermissionToGroup(permissionId, groupId); } - public void addUser(User user) { - insecureService.addUser(user); - } - public void addUserToGroup(Integer userId, Integer groupId) { insecureService.addUserToGroup(userId, groupId); } @@ -95,10 +115,6 @@ insecureService.deleteRunAsAccount(runAsId); } - public void deleteUser(Integer userId) { - insecureService.deleteUser(userId); - } - public List<Map<String, Object>> executeJob(Long jobId, List<QueryParam> queryParams) throws Exception { return insecureService.executeJob(jobId, queryParams); } @@ -195,8 +211,4 @@ insecureService.updateRunAsAccount(newRunAsAccount); } - public void updateUser(User newUser) { - insecureService.updateUser(newUser); - } - } Modified: trunk/drawbridge/src/java/net/sf/drawbridge/security/DefaultSecurityService.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/security/DefaultSecurityService.java 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/java/net/sf/drawbridge/security/DefaultSecurityService.java 2008-04-01 00:45:06 UTC (rev 32) @@ -1,19 +1,12 @@ package net.sf.drawbridge.security; +import net.sf.drawbridge.vo.ExecutionContext; import net.sf.drawbridge.vo.Permission; public class DefaultSecurityService implements SecurityService { - public boolean hasDatabasePermission(Integer userId, Integer databaseId, Permission permission) { + public boolean hasPermission(ExecutionContext context, Permission permission) { return true; } - public boolean hasRunAsPermission(Integer userId, Integer runAsId, Permission permission) { - return true; - } - - public boolean hasSystemPermission(Integer userId, Permission permission) { - return true; - } - } Modified: trunk/drawbridge/src/java/net/sf/drawbridge/security/SecurityService.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/security/SecurityService.java 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/java/net/sf/drawbridge/security/SecurityService.java 2008-04-01 00:45:06 UTC (rev 32) @@ -1,13 +1,10 @@ package net.sf.drawbridge.security; +import net.sf.drawbridge.vo.ExecutionContext; import net.sf.drawbridge.vo.Permission; public interface SecurityService { - public boolean hasSystemPermission(Integer userId, Permission permission); + public boolean hasPermission(ExecutionContext context, Permission permission); - public boolean hasDatabasePermission(Integer userId, Integer databaseId, Permission permission); - - public boolean hasRunAsPermission(Integer userId, Integer runAsId, Permission permission); - } Modified: trunk/drawbridge/src/java/net/sf/drawbridge/vo/ExecutionContext.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/vo/ExecutionContext.java 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/java/net/sf/drawbridge/vo/ExecutionContext.java 2008-04-01 00:45:06 UTC (rev 32) @@ -12,6 +12,8 @@ this.runAsId = runAsId; } + public ExecutionContext() {} + public Integer getUserId() { return userId; } @@ -72,5 +74,13 @@ return false; return true; } + + public String toString(){ + return new StringBuilder("ExecutionContext["). + append("userId=").append(userId).append(", "). + append("databaseId=").append(databaseId).append(", "). + append("runAsId=").append(runAsId).append("]").toString(); + } + } Modified: trunk/drawbridge/src/java/net/sf/drawbridge/vo/Permission.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/vo/Permission.java 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/java/net/sf/drawbridge/vo/Permission.java 2008-04-01 00:45:06 UTC (rev 32) @@ -42,6 +42,7 @@ Permission(Integer id, String name, Character type){ this.id=id; this.name=name; + this.type=type; } public Integer getId(){ Added: trunk/drawbridge/src/test/net/sf/drawbridge/controller/AbstractControllerTest.java =================================================================== --- trunk/drawbridge/src/test/net/sf/drawbridge/controller/AbstractControllerTest.java (rev 0) +++ trunk/drawbridge/src/test/net/sf/drawbridge/controller/AbstractControllerTest.java 2008-04-01 00:45:06 UTC (rev 32) @@ -0,0 +1,15 @@ +package net.sf.drawbridge.controller; + +import javax.servlet.http.HttpServletRequest; + +import net.sf.drawbridge.vo.User; + +import org.jmock.MockObjectTestCase; + +public abstract class AbstractControllerTest extends MockObjectTestCase { + + protected void login(HttpServletRequest request){ + request.getSession().setAttribute(AbstractDrawbridgeController.LOGGED_IN_USER, new User(-1, "test","test","test",true)); + } + +} Modified: trunk/drawbridge/src/test/net/sf/drawbridge/controller/user/AddOrEditUserSubmitControllerTest.java =================================================================== --- trunk/drawbridge/src/test/net/sf/drawbridge/controller/user/AddOrEditUserSubmitControllerTest.java 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/test/net/sf/drawbridge/controller/user/AddOrEditUserSubmitControllerTest.java 2008-04-01 00:45:06 UTC (rev 32) @@ -21,9 +21,11 @@ import java.util.HashMap; import java.util.List; +import net.sf.drawbridge.controller.AbstractControllerTest; import net.sf.drawbridge.controller.AbstractDrawbridgeController; import net.sf.drawbridge.controller.user.AddOrEditUserSubmitController; import net.sf.drawbridge.domain.DrawbridgeService; +import net.sf.drawbridge.vo.ExecutionContext; import net.sf.drawbridge.vo.Status; import net.sf.drawbridge.vo.StatusMessage; import net.sf.drawbridge.vo.User; @@ -33,7 +35,7 @@ import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.web.servlet.ModelAndView; -public class AddOrEditUserSubmitControllerTest extends MockObjectTestCase { +public class AddOrEditUserSubmitControllerTest extends AbstractControllerTest { private Mock mockDrawbridgeService=mock(DrawbridgeService.class); private AddOrEditUserSubmitController target; @@ -44,8 +46,10 @@ } public void testShouldAddUserAndReturnSuccessMessage() throws Exception{ + ExecutionContext context=new ExecutionContext(-1, null, null); + User user=new User(null,"userName","firstName","lastName",true); - mockDrawbridgeService.expects(once()).method("addUser").with(eq(user)); + mockDrawbridgeService.expects(once()).method("addUser").with(eq(user), eq(context)); mockDrawbridgeService.expects(once()).method("removeUserFromGroup").with(ANYTHING,eq(1)); mockDrawbridgeService.expects(once()).method("removeUserFromGroup").with(ANYTHING,eq(2)); mockDrawbridgeService.expects(once()).method("addUserToGroup").with(ANYTHING,eq(3)); @@ -59,6 +63,7 @@ mockRequest.setParameter("active", "true"); mockRequest.setParameter("availableGroups", new String[]{"1","2"}); mockRequest.setParameter("assignedGroups", new String[]{"3","4"}); + login(mockRequest); ModelAndView mav=target.handleRequestInternal(mockRequest, null); assertEquals("manageUsersRedirectView",mav.getViewName()); @@ -71,8 +76,9 @@ } public void testShouldEditUserAndReturnSuccessMessage() throws Exception{ + ExecutionContext context=new ExecutionContext(-1, null, null); User user=new User(1,"userName","firstName","lastName",true); - mockDrawbridgeService.expects(once()).method("updateUser").with(eq(user)); + mockDrawbridgeService.expects(once()).method("updateUser").with(eq(user), eq(context)); mockDrawbridgeService.expects(once()).method("removeUserFromGroup").with(eq(1),eq(1)); mockDrawbridgeService.expects(once()).method("removeUserFromGroup").with(eq(1),eq(2)); mockDrawbridgeService.expects(once()).method("addUserToGroup").with(eq(1),eq(3)); @@ -86,6 +92,7 @@ mockRequest.setParameter("active", "true"); mockRequest.setParameter("availableGroups", new String[]{"1","2"}); mockRequest.setParameter("assignedGroups", new String[]{"3","4"}); + login(mockRequest); ModelAndView mav=target.handleRequestInternal(mockRequest, null); assertEquals("manageUsersRedirectView",mav.getViewName()); @@ -98,9 +105,10 @@ } public void testShouldAddUserAndReturnFailureMessageOnException() throws Exception{ + ExecutionContext context=new ExecutionContext(-1, null, null); User user=new User(null,"userName","firstName","lastName",true); RuntimeException ex=new RuntimeException("The Spanish Inquisition"); - mockDrawbridgeService.expects(once()).method("addUser").with(eq(user)).will(throwException(ex)); + mockDrawbridgeService.expects(once()).method("addUser").with(eq(user), eq(context)).will(throwException(ex)); MockHttpServletRequest mockRequest=new MockHttpServletRequest(); //mockRequest.setParameter("userId", "1"); @@ -110,6 +118,7 @@ mockRequest.setParameter("active", "true"); mockRequest.setParameter("availableGroups", new String[]{"1","2"}); mockRequest.setParameter("assignedGroups", new String[]{"3","4"}); + login(mockRequest); ModelAndView mav=target.handleRequestInternal(mockRequest, null); assertEquals("manageUsersRedirectView",mav.getViewName()); @@ -122,9 +131,10 @@ } public void testShouldEditUserAndReturnFailureMessageOnException() throws Exception{ + ExecutionContext context=new ExecutionContext(-1, null, null); User user=new User(1,"userName","firstName","lastName",true); RuntimeException ex=new RuntimeException("The Spanish Inquisition"); - mockDrawbridgeService.expects(once()).method("updateUser").with(eq(user)).will(throwException(ex)); + mockDrawbridgeService.expects(once()).method("updateUser").with(eq(user), eq(context)).will(throwException(ex)); MockHttpServletRequest mockRequest=new MockHttpServletRequest(); mockRequest.setParameter("userId", "1"); @@ -134,6 +144,7 @@ mockRequest.setParameter("active", "true"); mockRequest.setParameter("availableGroups", new String[]{"1","2"}); mockRequest.setParameter("assignedGroups", new String[]{"3","4"}); + login(mockRequest); ModelAndView mav=target.handleRequestInternal(mockRequest, null); assertEquals("manageUsersRedirectView",mav.getViewName()); Modified: trunk/drawbridge/src/test/net/sf/drawbridge/controller/user/DeleteUserSubmitControllerTest.java =================================================================== --- trunk/drawbridge/src/test/net/sf/drawbridge/controller/user/DeleteUserSubmitControllerTest.java 2008-03-31 02:50:40 UTC (rev 31) +++ trunk/drawbridge/src/test/net/sf/drawbridge/controller/user/DeleteUserSubmitControllerTest.java 2008-04-01 00:45:06 UTC (rev 32) @@ -21,18 +21,19 @@ import java.util.HashMap; import java.util.List; +import net.sf.drawbridge.controller.AbstractControllerTest; import net.sf.drawbridge.controller.AbstractDrawbridgeController; -import net.sf.drawbridge.controller.user.DeleteUserSubmitController; import net.sf.drawbridge.domain.DrawbridgeService; +import net.sf.drawbridge.vo.ExecutionContext; import net.sf.drawbridge.vo.Status; import net.sf.drawbridge.vo.StatusMessage; +import net.sf.drawbridge.vo.User; import org.jmock.Mock; -import org.jmock.MockObjectTestCase; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.web.servlet.ModelAndView; -public class DeleteUserSubmitControllerTest extends MockObjectTestCase { +public class DeleteUserSubmitControllerTest extends AbstractControllerTest { private Mock mockDrawbridgeService=mock(DrawbridgeService.class); private DeleteUserSubmitController target; @@ -43,10 +44,12 @@ } public void testShouldDeleteUserAndReturnSuccessMessage() throws Exception{ - mockDrawbridgeService.expects(once()).method("deleteUser").with(eq(1)); + ExecutionContext context=new ExecutionContext(-1, null, null); + mockDrawbridgeService.expects(once()).method("deleteUser").with(eq(1), eq(context)); MockHttpServletRequest mockRequest=new MockHttpServletRequest(); mockRequest.setParameter("userId", "1"); + login(mockRequest); ModelAndView mav=target.handleRequestInternal(mockRequest, null); assertEquals("manageUsersRedirectView",mav.getViewName()); @@ -59,11 +62,13 @@ } public void testShouldDeleteUserAndReturnFailureMessageOnException() throws Exception{ + ExecutionContext context=new ExecutionContext(-1, null, null); RuntimeException ex=new RuntimeException("The Spanish Inquisition"); - mockDrawbridgeService.expects(once()).method("deleteUser").with(eq(1)).will(throwException(ex)); + mockDrawbridgeService.expects(once()).method("deleteUser").with(eq(1), eq(context)).will(throwException(ex)); MockHttpServletRequest mockRequest=new MockHttpServletRequest(); mockRequest.setParameter("userId", "1"); + login(mockRequest); ModelAndView mav=target.handleRequestInternal(mockRequest, null); assertEquals("manageUsersRedirectView",mav.getViewName()); Added: trunk/drawbridge/src/test/net/sf/drawbridge/domain/SecureDrawbridgeServiceTest.java =================================================================== --- trunk/drawbridge/src/test/net/sf/drawbridge/domain/SecureDrawbridgeServiceTest.java (rev 0) +++ trunk/drawbridge/src/test/net/sf/drawbridge/domain/SecureDrawbridgeServiceTest.java 2008-04-01 00:45:06 UTC (rev 32) @@ -0,0 +1,216 @@ +package net.sf.drawbridge.domain; + +import net.sf.drawbridge.security.SecurityService; +import net.sf.drawbridge.vo.ExecutionContext; +import net.sf.drawbridge.vo.Permission; +import net.sf.drawbridge.vo.User; + +import org.jmock.Mock; +import org.jmock.MockObjectTestCase; + +public class SecureDrawbridgeServiceTest extends MockObjectTestCase { + + private Mock mockInsecureService=mock(DrawbridgeService.class); + private Mock mockSecurityService=mock(SecurityService.class); + private SecureDrawbridgeService target=new SecureDrawbridgeService((DrawbridgeService)mockInsecureService.proxy(),(SecurityService) mockSecurityService.proxy()); + + private static User user=new User(null, "test", "test", "test", true); + private static ExecutionContext context=new ExecutionContext(1,1,1); + + public void testCheckPermissionsForAddUser() { + mockSecurityService.expects(once()).method("hasPermission").with(eq(context),eq(Permission.SYSTEM_USER_ADD)).will(returnValue(true)); + mockInsecureService.expects(once()).method("addUser").with(eq(user),eq(context)); + target.addUser(user, context); + + mockSecurityService.expects(once()).method("hasPermission").with(eq(context),eq(Permission.SYSTEM_USER_ADD)).will(returnValue(false)); + mockInsecureService.expects(never()).method("addUser").with(eq(user),eq(context)); + target.addUser(user, context); + } + + public void testCheckPermissionsForUpdateUser() { + mockSecurityService.expects(once()).method("hasPermission").with(eq(context),eq(Permission.SYSTEM_USER_EDIT)).will(returnValue(true)); + mockInsecureService.expects(once()).method("updateUser").with(eq(user),eq(context)); + target.updateUser(user, context); + + mockSecurityService.expects(once()).method("hasPermission").with(eq(context),eq(Permission.SYSTEM_USER_EDIT)).will(returnValue(false)); + mockInsecureService.expects(never()).method("updateUser").with(eq(user),eq(context)); + target.updateUser(user, context); + } + + public void testCheckPermissionsForDeleteUser() { + mockSecurityService.expects(once()).method("hasPermission").with(eq(context),eq(Permission.SYSTEM_USER_DELETE)).will(returnValue(true)); + mockInsecureService.expects(once()).method("deleteUser").with(eq(1),eq(context)); + target.deleteUser(1, context); + + mockSecurityService.expects(once()).method("hasPermission").with(eq(context),eq(Permission.SYSTEM_USER_DELETE)).will(returnValue(false)); + mockInsecureService.expects(never()).method("deleteUser").with(eq(1),eq(context)); + target.deleteUser(1, context); + } + + /* + public void testShouldHavePermissionsToActivateJob() { + ExecutionContext context=new ExecutionContext(1,1,1); + target.activateJob(jobId, context); + insecureService.activateJob(jobId); + } + public void addDatabase(Database database) { + insecureService.addDatabase(database); + } + + public void addDatabasePermissionToGroup(Integer permissionId, Integer groupId, Integer databaseId) { + insecureService.addDatabasePermissionToGroup(permissionId, groupId, databaseId); + } + + public void addDriver(Driver driver) { + insecureService.addDriver(driver); + } + + public void addGroup(Group group) { + insecureService.addGroup(group); + } + + public void addJob(Job job) { + insecureService.addJob(job); + } + + public void addRunAsAccount(RunAsAccount runAsAccount) { + insecureService.addRunAsAccount(runAsAccount); + } + + public void addRunAsPermissionToGroup(Integer permissionId, Integer groupId, Integer runAsId) { + insecureService.addRunAsPermissionToGroup(permissionId, groupId, runAsId); + } + + public void addSystemPermissionToGroup(Integer permissionId, Integer groupId) { + insecureService.addSystemPermissionToGroup(permissionId, groupId); + } + + public void addUserToGroup(Integer userId, Integer groupId) { + insecureService.addUserToGroup(userId, groupId); + } + + public void approveJob(Long jobId, User approvedBy) { + insecureService.approveJob(jobId, approvedBy); + } + + public void deactivateJob(Long jobId) { + insecureService.deactivateJob(jobId); + } + + public void deleteDatabase(Integer databaseId) { + insecureService.deleteDatabase(databaseId); + } + + public void deleteDriver(Integer driverId) { + insecureService.deleteDriver(driverId); + } + + public void deleteGroup(Integer groupId) { + insecureService.deleteGroup(groupId); + } + + public void deleteJob(Long jobId) { + insecureService.deleteJob(jobId); + } + + public void deleteRunAsAccount(Integer runAsId) { + insecureService.deleteRunAsAccount(runAsId); + } + + public List<Map<String, Object>> executeJob(Long jobId, List<QueryParam> queryParams) throws Exception { + return insecureService.executeJob(jobId, queryParams); + } + + public Database getDatabase(Integer databaseId) { + return insecureService.getDatabase(databaseId); + } + + public Driver getDriver(Integer driverId) { + return insecureService.getDriver(driverId); + } + + public Group getGroup(Integer groupId) { + return insecureService.getGroup(groupId); + } + + public Job getJob(Long jobId) { + return insecureService.getJob(jobId); + } + + public String getPreparedStatementQuery(String query) { + return insecureService.getPreparedStatementQuery(query); + } + + public List<QueryParam> getQueryParams(String query, boolean returnDuplicates) { + return insecureService.getQueryParams(query, returnDuplicates); + } + + public RunAsAccount getRunAsAccount(Integer runAsId) { + return insecureService.getRunAsAccount(runAsId); + } + + public User getUser(Integer userId) { + return insecureService.getUser(userId); + } + + public List<Database> listDatabases() { + return insecureService.listDatabases(); + } + + public List<Driver> listDrivers() { + return insecureService.listDrivers(); + } + + public List<Group> listGroups() { + return insecureService.listGroups(); + } + + public Set<Group> listGroupsForUser(Integer userId) { + return insecureService.listGroupsForUser(userId); + } + + public List<Job> listJobs(Integer databaseId) { + return insecureService.listJobs(databaseId); + } + + public List<RunAsAccount> listRunAsAccounts(Integer databaseId) { + return insecureService.listRunAsAccounts(databaseId); + } + + public List<User> listUsers() { + return insecureService.listUsers(); + } + + public Set<User> listUsersForGroup(Integer groupId) { + return insecureService.listUsersForGroup(groupId); + } + + public void removeUserFromGroup(Integer userId, Integer groupId) { + insecureService.removeUserFromGroup(userId, groupId); + } + + public void reviewJob(Long jobId, User reviewedBy) { + insecureService.reviewJob(jobId, reviewedBy); + } + + public void updateDatabase(Database newDatabase) { + insecureService.updateDatabase(newDatabase); + } + + public void updateDriver(Driver newDriver) { + insecureService.updateDriver(newDriver); + } + + public void updateGroup(Group newGroup) { + insecureService.updateGroup(newGroup); + } + + public void updateJob(Job newJob) { + insecureService.updateJob(newJob); + } + + public void updateRunAsAccount(RunAsAccount newRunAsAccount) { + insecureService.updateRunAsAccount(newRunAsAccount); + } +*/ +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-03-31 02:50:43
|
Revision: 31 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=31&view=rev Author: acresse Date: 2008-03-30 19:50:40 -0700 (Sun, 30 Mar 2008) Log Message: ----------- doc cleanup Modified Paths: -------------- trunk/drawbridge/documentation/todo.txt Removed Paths: ------------- trunk/drawbridge/documentation/known_bugs.txt Deleted: trunk/drawbridge/documentation/known_bugs.txt =================================================================== Modified: trunk/drawbridge/documentation/todo.txt =================================================================== --- trunk/drawbridge/documentation/todo.txt 2008-03-31 01:54:50 UTC (rev 30) +++ trunk/drawbridge/documentation/todo.txt 2008-03-31 02:50:40 UTC (rev 31) @@ -1,11 +1 @@ -form validation on all add/edit -//ajax add new driver on newDatabase page -//bread crumb on all pages -move style logic for li icons to css in header.jsp add collapsed exception to message display -audit everything -add view jobs needing my review/approval -add automated web ui testing -jobs are always submitted as user 0 -validate params based on type, provide calendars for dates and times -exec may do updates not rs \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-03-31 01:54:53
|
Revision: 30 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=30&view=rev Author: acresse Date: 2008-03-30 18:54:50 -0700 (Sun, 30 Mar 2008) Log Message: ----------- make webtest work on other machines and add target to master build Modified Paths: -------------- trunk/drawbridge/build.xml trunk/drawbridge/src/canoo/build.xml Modified: trunk/drawbridge/build.xml =================================================================== --- trunk/drawbridge/build.xml 2008-03-29 04:21:35 UTC (rev 29) +++ trunk/drawbridge/build.xml 2008-03-31 01:54:50 UTC (rev 30) @@ -164,5 +164,9 @@ </war> </target> + + <target name="webtest"> + <ant dir="src/canoo" antfile="build.xml"/> + </target> </project> \ No newline at end of file Modified: trunk/drawbridge/src/canoo/build.xml =================================================================== --- trunk/drawbridge/src/canoo/build.xml 2008-03-29 04:21:35 UTC (rev 29) +++ trunk/drawbridge/src/canoo/build.xml 2008-03-31 01:54:50 UTC (rev 30) @@ -6,8 +6,10 @@ <project name="example" default="wt.full"> - <property name="webtest.home" value="/Users/adam/Java/canoo"/> + <property environment="env"/> + <property name="webtest.home" value="${env.WEBTEST_HOME}"/> + <import file="definitions.xml" description="Import custom definitions (if any)"/> <import file="${webtest.home}/webtest.xml" description="Import all functionalities for a full build"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-03-29 04:21:38
|
Revision: 29 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=29&view=rev Author: acresse Date: 2008-03-28 21:21:35 -0700 (Fri, 28 Mar 2008) Log Message: ----------- add webtests for user and group management Modified Paths: -------------- trunk/drawbridge/WebContent/WEB-INF/jsp/group/manage.jsp trunk/drawbridge/WebContent/WEB-INF/jsp/user/manage.jsp trunk/drawbridge/src/canoo/tests/allTests.xml Added Paths: ----------- trunk/drawbridge/src/canoo/tests/addGroup.xml trunk/drawbridge/src/canoo/tests/addUser.xml trunk/drawbridge/src/canoo/tests/deleteGroup.xml trunk/drawbridge/src/canoo/tests/deleteUser.xml trunk/drawbridge/src/canoo/tests/editGroup.xml trunk/drawbridge/src/canoo/tests/editUser.xml Modified: trunk/drawbridge/WebContent/WEB-INF/jsp/group/manage.jsp =================================================================== --- trunk/drawbridge/WebContent/WEB-INF/jsp/group/manage.jsp 2008-03-29 03:21:50 UTC (rev 28) +++ trunk/drawbridge/WebContent/WEB-INF/jsp/group/manage.jsp 2008-03-29 04:21:35 UTC (rev 29) @@ -26,8 +26,8 @@ <display:table name="groupList" id="row" requestURI="ManageGroups.do" class="displaytable"> <display:column property="groupName" title="Group Name" sortable="true"/> <display:column title="Action" style="text-align: center;"> - <a href="EditGroup.do?groupId=<c:out value="${row.id}"/>"><img src="images/icons/22x22/accessories-text-editor.png" title="Edit" border="0"></a> - <a href="DeleteGroupSubmit.do?groupId=<c:out value="${row.id}"/>" onClick="return confirmDelete('group','<c:out value="${row.groupName}"/>')"><img src="images/icons/22x22/user-trash-full.png" title="Delete" border="0"></a> + <a href="EditGroup.do?groupId=<c:out value="${row.id}"/>" id="edit-${row.groupName}"><img src="images/icons/22x22/accessories-text-editor.png" title="Edit" border="0"></a> + <a href="DeleteGroupSubmit.do?groupId=<c:out value="${row.id}"/>" id="delete-${row.groupName}" onClick="return confirmDelete('group','<c:out value="${row.groupName}"/>')"><img src="images/icons/22x22/user-trash-full.png" title="Delete" border="0"></a> </display:column> </display:table> Modified: trunk/drawbridge/WebContent/WEB-INF/jsp/user/manage.jsp =================================================================== --- trunk/drawbridge/WebContent/WEB-INF/jsp/user/manage.jsp 2008-03-29 03:21:50 UTC (rev 28) +++ trunk/drawbridge/WebContent/WEB-INF/jsp/user/manage.jsp 2008-03-29 04:21:35 UTC (rev 29) @@ -29,8 +29,8 @@ <display:column property="firstName" title="First Name" sortable="true"/> <display:column property="active" title="Active" sortable="true"/> <display:column title="Action" style="text-align: center;"> - <a href="EditUser.do?userId=<c:out value="${row.id}"/>"><img src="images/icons/22x22/accessories-text-editor.png" title="Edit" border="0"></a> - <a href="DeleteUserSubmit.do?userId=<c:out value="${row.id}"/>" onClick="return confirmDelete('user','<c:out value="${row.userName}"/>')"><img src="images/icons/22x22/user-trash-full.png" title="Delete" border="0"></a> + <a href="EditUser.do?userId=<c:out value="${row.id}"/>" id="edit-${row.userName}"><img src="images/icons/22x22/accessories-text-editor.png" title="Edit" border="0"></a> + <a href="DeleteUserSubmit.do?userId=<c:out value="${row.id}"/>" id="delete-${row.userName}" onClick="return confirmDelete('user','<c:out value="${row.userName}"/>')"><img src="images/icons/22x22/user-trash-full.png" title="Delete" border="0"></a> </display:column> </display:table> Added: trunk/drawbridge/src/canoo/tests/addGroup.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/addGroup.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/addGroup.xml 2008-03-29 04:21:35 UTC (rev 29) @@ -0,0 +1,18 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="add a group"> + <invoke url="http://localhost:8080/drawbridge/ManageGroups.do"/> + <clickLink label="create a new group"/> + <setInputField name="groupName" value="test"/> + <clickButton label="Submit"/> + <verifyText text="Successfully created group: test"/> + </webtest> + + </target> +</project> Added: trunk/drawbridge/src/canoo/tests/addUser.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/addUser.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/addUser.xml 2008-03-29 04:21:35 UTC (rev 29) @@ -0,0 +1,21 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="add a user"> + <invoke url="http://localhost:8080/drawbridge/ManageUsers.do"/> + <clickLink label="create a new user"/> + <setInputField name="userName" value="test"/> + <setInputField name="firstName" value="test"/> + <setInputField name="lastName" value="test"/> + <setSelectField name="active" text="Active"/> + <clickButton label="Submit"/> + <verifyText text="Successfully created user: test"/> + </webtest> + + </target> +</project> Modified: trunk/drawbridge/src/canoo/tests/allTests.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/allTests.xml 2008-03-29 03:21:50 UTC (rev 28) +++ trunk/drawbridge/src/canoo/tests/allTests.xml 2008-03-29 04:21:35 UTC (rev 29) @@ -11,5 +11,11 @@ <ant antfile="addRunAs.xml"/> <ant antfile="editRunAs.xml"/> <ant antfile="deleteRunAs.xml"/> + <ant antfile="addUser.xml"/> + <ant antfile="editUser.xml"/> + <ant antfile="deleteUser.xml"/> + <ant antfile="addGroup.xml"/> + <ant antfile="editGroup.xml"/> + <ant antfile="deleteGroup.xml"/> </target> </project> Added: trunk/drawbridge/src/canoo/tests/deleteGroup.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/deleteGroup.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/deleteGroup.xml 2008-03-29 04:21:35 UTC (rev 29) @@ -0,0 +1,16 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="delete group"> + <invoke url="http://localhost:8080/drawbridge/ManageGroups.do"/> + <clickLink htmlId="delete-test2"/> + <verifyText text="Successfully deleted group."/> + </webtest> + + </target> +</project> Added: trunk/drawbridge/src/canoo/tests/deleteUser.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/deleteUser.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/deleteUser.xml 2008-03-29 04:21:35 UTC (rev 29) @@ -0,0 +1,16 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="delete user"> + <invoke url="http://localhost:8080/drawbridge/ManageUsers.do"/> + <clickLink htmlId="delete-test2"/> + <verifyText text="Successfully deleted user."/> + </webtest> + + </target> +</project> Added: trunk/drawbridge/src/canoo/tests/editGroup.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/editGroup.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/editGroup.xml 2008-03-29 04:21:35 UTC (rev 29) @@ -0,0 +1,25 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="edit group"> + <invoke url="http://localhost:8080/drawbridge/ManageGroups.do"/> + <clickLink htmlId="edit-test"/> + <setInputField name="groupName" value="test2"/> + <setSelectField name="availableUsers" text="ben"/> + <clickButton label=">>"/> + <setSelectField name="availableUsers" text="adam"/> + <clickButton label=">>"/> + <clickButton label="Submit"/> + <verifyText text="Successfully updated group: test2"/> + <clickLink htmlId="edit-test2"/> + <setSelectField name="assignedUsers" text="adam" description="make sure adam is assigned"/> + <setSelectField name="assignedUsers" text="ben" description="make sure ben is assigned"/> + </webtest> + + </target> +</project> Added: trunk/drawbridge/src/canoo/tests/editUser.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/editUser.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/editUser.xml 2008-03-29 04:21:35 UTC (rev 29) @@ -0,0 +1,25 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="edit user"> + <invoke url="http://localhost:8080/drawbridge/ManageUsers.do"/> + <clickLink htmlId="edit-test"/> + <setInputField name="userName" value="test2"/> + <setInputField name="firstName" value="test3"/> + <setInputField name="lastName" value="test4"/> + <setSelectField name="active" text="Inactive"/> + <setSelectField name="availableGroups" text="devs"/> + <clickButton label=">>"/> + <clickButton label="Submit"/> + <verifyText text="Successfully updated user: test2"/> + <clickLink htmlId="edit-test2"/> + <setSelectField name="assignedGroups" text="devs" description="make sure devs is assigned"/> + </webtest> + + </target> +</project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-03-29 03:21:53
|
Revision: 28 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=28&view=rev Author: acresse Date: 2008-03-28 20:21:50 -0700 (Fri, 28 Mar 2008) Log Message: ----------- runAs webtests and remove examples Modified Paths: -------------- trunk/drawbridge/WebContent/WEB-INF/jsp/runAs/manage.jsp trunk/drawbridge/src/canoo/definitions.xml trunk/drawbridge/src/canoo/tests/allTests.xml Added Paths: ----------- trunk/drawbridge/src/canoo/tests/addRunAs.xml trunk/drawbridge/src/canoo/tests/deleteRunAs.xml trunk/drawbridge/src/canoo/tests/editRunAs.xml Removed Paths: ------------- trunk/drawbridge/src/canoo/definitions/fillParticipantData.xml trunk/drawbridge/src/canoo/definitions/googleOnWebTest.xml trunk/drawbridge/src/canoo/tests/googleWebTest.xml trunk/drawbridge/src/canoo/tests/googleWebTestSteps.xml trunk/drawbridge/src/canoo/tests/webTestConference.xml Property Changed: ---------------- trunk/drawbridge/src/canoo/ Modified: trunk/drawbridge/WebContent/WEB-INF/jsp/runAs/manage.jsp =================================================================== --- trunk/drawbridge/WebContent/WEB-INF/jsp/runAs/manage.jsp 2008-03-29 03:00:42 UTC (rev 27) +++ trunk/drawbridge/WebContent/WEB-INF/jsp/runAs/manage.jsp 2008-03-29 03:21:50 UTC (rev 28) @@ -27,8 +27,8 @@ <display:column property="userName" title="User Name" sortable="true"/> <display:column title="Database" sortable="true"><c:out value="${row.database.name}"/></display:column> <display:column title="Action" style="text-align: center;"> - <a href="EditRunAsAccount.do?runAsId=<c:out value="${row.id}"/>"><img src="images/icons/22x22/accessories-text-editor.png" title="Edit" border="0"></a> - <a href="DeleteRunAsAccountSubmit.do?runAsId=<c:out value="${row.id}"/>" onClick="return confirmDelete('run-as account','<c:out value="${row.userName}"/>')"><img src="images/icons/22x22/user-trash-full.png" title="Delete" border="0"></a> + <a href="EditRunAsAccount.do?runAsId=<c:out value="${row.id}"/>" id="edit-${row.userName}"><img src="images/icons/22x22/accessories-text-editor.png" title="Edit" border="0"></a> + <a href="DeleteRunAsAccountSubmit.do?runAsId=<c:out value="${row.id}"/>" id="delete-${row.userName}" onClick="return confirmDelete('run-as account','<c:out value="${row.userName}"/>')"><img src="images/icons/22x22/user-trash-full.png" title="Delete" border="0"></a> </display:column> </display:table> Property changes on: trunk/drawbridge/src/canoo ___________________________________________________________________ Name: svn:ignore + results Deleted: trunk/drawbridge/src/canoo/definitions/fillParticipantData.xml =================================================================== --- trunk/drawbridge/src/canoo/definitions/fillParticipantData.xml 2008-03-29 03:00:42 UTC (rev 27) +++ trunk/drawbridge/src/canoo/definitions/fillParticipantData.xml 2008-03-29 03:21:50 UTC (rev 28) @@ -1,24 +0,0 @@ -<!-- -Like all files of this folder, this content will be executed in target wt.defineMacros -and therefore made be available for the tests (here the macro <fillParticipantData .../>) ---> -<macrodef name="fillParticipantData" description="fill the conference formular for one person"> - <attribute name="firstName"/> - <attribute name="lastName"/> - <attribute name="index" default="1" description="the index in the sequence"/> - - <sequential> - <verifyText text="Please enter information for participant @{index}" - description="Verify that we are on the right screen"/> - <setInputField forLabel="Last name" value="@{lastName}"/> - <setInputField forLabel="First name" value="@{firstName}"/> - <setInputField forLabel="Street" value="Main street, 123"/> - <setInputField forLabel="Zip" value="12345"/> - <setInputField forLabel="City" value="Basel"/> - <setSelectField forLabel="Country" text="Switzerland"/> - <clickButton label="Confirm"/> - <not description="verify that we're not on the formular screen for this participant anymore"> - <verifyText text="Please enter information for participant @{index}"/> - </not> - </sequential> -</macrodef> Deleted: trunk/drawbridge/src/canoo/definitions/googleOnWebTest.xml =================================================================== --- trunk/drawbridge/src/canoo/definitions/googleOnWebTest.xml 2008-03-29 03:00:42 UTC (rev 27) +++ trunk/drawbridge/src/canoo/definitions/googleOnWebTest.xml 2008-03-29 03:21:50 UTC (rev 28) @@ -1,15 +0,0 @@ -<!-- -Like all files of this folder, this content will be executed in target wt.defineMacros -and therefore made be available for the tests (here the macro <googleOnWebTest .../>) ---> -<macrodef name="googleOnWebTest" description="advanced Google search on webtest.canoo.com"> - <attribute name="search"/> - - <sequential> - <invoke description="Go to Google (in English)" url="http://www.google.com/ncr"/> - <clickLink label="Advanced Search"/> - <setInputField description="Set the search value" name="as_q" value="@{search}"/> - <setInputField description="Restrict search to Webtest's website" name="as_sitesearch" value="webtest.canoo.com"/> - <clickButton label="Google Search"/> - </sequential> -</macrodef> \ No newline at end of file Modified: trunk/drawbridge/src/canoo/definitions.xml =================================================================== --- trunk/drawbridge/src/canoo/definitions.xml 2008-03-29 03:00:42 UTC (rev 27) +++ trunk/drawbridge/src/canoo/definitions.xml 2008-03-29 03:21:50 UTC (rev 28) @@ -7,8 +7,6 @@ <!DOCTYPE project SYSTEM "dtd/Project.dtd" [ - <!ENTITY definitions__fillParticipantData__xml SYSTEM "definitions/fillParticipantData.xml"> - <!ENTITY definitions__googleOnWebTest__xml SYSTEM "definitions/googleOnWebTest.xml"> ] > @@ -20,8 +18,6 @@ <property name="macroDefined" value="true"/> <echo message="Defining project macros and custom steps (if any)"/> - &definitions__fillParticipantData__xml; - &definitions__googleOnWebTest__xml; </target> Added: trunk/drawbridge/src/canoo/tests/addRunAs.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/addRunAs.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/addRunAs.xml 2008-03-29 03:21:50 UTC (rev 28) @@ -0,0 +1,20 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="add a run-as account"> + <invoke url="http://localhost:8080/drawbridge/ManageRunAsAccounts.do"/> + <clickLink label="create a new run-as account"/> + <setInputField name="userName" value="test"/> + <setInputField name="password" value="test"/> + <setSelectField name="databaseId" text="local mysql"/> + <clickButton label="Submit"/> + <verifyText text="Successfully created run-as account: test"/> + </webtest> + + </target> +</project> Modified: trunk/drawbridge/src/canoo/tests/allTests.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/allTests.xml 2008-03-29 03:00:42 UTC (rev 27) +++ trunk/drawbridge/src/canoo/tests/allTests.xml 2008-03-29 03:21:50 UTC (rev 28) @@ -8,5 +8,8 @@ <ant antfile="addDatabase.xml"/> <ant antfile="editDatabase.xml"/> <ant antfile="deleteDatabase.xml"/> + <ant antfile="addRunAs.xml"/> + <ant antfile="editRunAs.xml"/> + <ant antfile="deleteRunAs.xml"/> </target> </project> Added: trunk/drawbridge/src/canoo/tests/deleteRunAs.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/deleteRunAs.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/deleteRunAs.xml 2008-03-29 03:21:50 UTC (rev 28) @@ -0,0 +1,16 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="delete run-as account"> + <invoke url="http://localhost:8080/drawbridge/ManageRunAsAccounts.do"/> + <clickLink htmlId="delete-test2"/> + <verifyText text="Successfully deleted run-as account."/> + </webtest> + + </target> +</project> Added: trunk/drawbridge/src/canoo/tests/editRunAs.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/editRunAs.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/editRunAs.xml 2008-03-29 03:21:50 UTC (rev 28) @@ -0,0 +1,20 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="edit run-as account"> + <invoke url="http://localhost:8080/drawbridge/ManageRunAsAccounts.do"/> + <clickLink htmlId="edit-test"/> + <setInputField name="userName" value="test2"/> + <setInputField name="password" value="test3"/> + <setSelectField name="databaseId" text="In memory"/> + <clickButton label="Submit"/> + <verifyText text="Successfully updated run-as account: test2"/> + </webtest> + + </target> +</project> Deleted: trunk/drawbridge/src/canoo/tests/googleWebTest.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/googleWebTest.xml 2008-03-29 03:00:42 UTC (rev 27) +++ trunk/drawbridge/src/canoo/tests/googleWebTest.xml 2008-03-29 03:21:50 UTC (rev 28) @@ -1,18 +0,0 @@ -<?xml version="1.0"?> - -<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> - -<project default="test"> - - <target name="test"> - - <webtest name="check that WebTest is Google's top 'WebTest' result"> - <invoke url="http://www.google.com/ncr" description="Go to Google (in English)"/> - <verifyTitle text="Google" /> - <setInputField name="q" value="WebTest" /> - <clickButton label="I'm Feeling Lucky" /> - <verifyTitle text="Canoo WebTest" /> - </webtest> - - </target> -</project> Deleted: trunk/drawbridge/src/canoo/tests/googleWebTestSteps.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/googleWebTestSteps.xml 2008-03-29 03:00:42 UTC (rev 27) +++ trunk/drawbridge/src/canoo/tests/googleWebTestSteps.xml 2008-03-29 03:21:50 UTC (rev 28) @@ -1,31 +0,0 @@ -<?xml version="1.0"?> - -<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> - -<project default="test"> - - <import file="../definitions.xml"/> - - <target name="test" depends="wt.defineMacros"> - - <webtest name="Search some WebTest steps using Google restricted to webtest.canoo.com"> - <group description="search for clickLink"> - <googleOnWebTest search="clickLink"/> - <verifyXPath xpath="//a[@class='l']" text="Core Step: clickLink" - description="Verify that clickLink's documentation is the first result"/> - </group> - - <group description="search for setFileField"> - <googleOnWebTest search="setFileField"/> - <verifyXPath xpath="//a[@class='l']" text="Core Step: setFileField" - description="Verify that setFileField's documentation is the first result"/> - </group> - - <group description="search for notExistingStep"> - <googleOnWebTest search="notExistingStep"/> - <verifyText text="Your search .* did not match any documents." regex="true"/> - </group> - </webtest> - - </target> -</project> Deleted: trunk/drawbridge/src/canoo/tests/webTestConference.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/webTestConference.xml 2008-03-29 03:00:42 UTC (rev 27) +++ trunk/drawbridge/src/canoo/tests/webTestConference.xml 2008-03-29 03:21:50 UTC (rev 28) @@ -1,32 +0,0 @@ -<?xml version="1.0"?> - -<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> - -<project default="test"> - - <import file="../definitions.xml"/> - - <target name="test" depends="wt.defineMacros"> - - <webtest name="[should fail!] Example of WebTest usage in TDD for a not yet existing website"> - <invoke url="http://conference.webtest.canoo.com" description="Go to the conference site"/> - <verifyTitle text="WebTest Conference" /> - <verifyText text="The most effective way to test your web application" /> - - <clickLink label="Register..."/> - - <group description="Register WebTest committers for the conference (aren't they already speakers?)"> - <setInputField forLabel="Number of participant" value="4" /> - <clickButton label="continue" /> - <fillParticipantData firstName="Denis" lastName="Antonioli"/> - <fillParticipantData firstName="Dierk" lastName="König" index="2"/> - <fillParticipantData firstName="Marc" lastName="Guillemot" index="3"/> - <fillParticipantData firstName="Paul" lastName="King" index="4"/> - - <clickLink label="Complete registration"/> - <verifyText text="Registration completed" /> - </group> - </webtest> - - </target> -</project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-03-29 03:00:46
|
Revision: 27 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=27&view=rev Author: acresse Date: 2008-03-28 20:00:42 -0700 (Fri, 28 Mar 2008) Log Message: ----------- add real webtests Modified Paths: -------------- trunk/drawbridge/WebContent/WEB-INF/jsp/database/manage.jsp trunk/drawbridge/WebContent/WEB-INF/jsp/driver/manage.jsp trunk/drawbridge/src/canoo/tests/allTests.xml Added Paths: ----------- trunk/drawbridge/src/canoo/tests/addDatabase.xml trunk/drawbridge/src/canoo/tests/addDriver.xml trunk/drawbridge/src/canoo/tests/deleteDatabase.xml trunk/drawbridge/src/canoo/tests/deleteDriver.xml trunk/drawbridge/src/canoo/tests/editDatabase.xml trunk/drawbridge/src/canoo/tests/editDriver.xml Modified: trunk/drawbridge/WebContent/WEB-INF/jsp/database/manage.jsp =================================================================== --- trunk/drawbridge/WebContent/WEB-INF/jsp/database/manage.jsp 2008-03-29 02:12:32 UTC (rev 26) +++ trunk/drawbridge/WebContent/WEB-INF/jsp/database/manage.jsp 2008-03-29 03:00:42 UTC (rev 27) @@ -28,8 +28,8 @@ <display:column property="jdbcUrl" title="Jdbc Url" sortable="true"/> <display:column title="Driver" sortable="true"><c:out value="${row.driver.name}"/></display:column> <display:column title="Action" style="text-align: center;"> - <a href="EditDatabase.do?databaseId=<c:out value="${row.id}"/>"><img src="images/icons/22x22/accessories-text-editor.png" title="Edit" border="0"></a> - <a href="DeleteDatabaseSubmit.do?databaseId=<c:out value="${row.id}"/>" onClick="return confirmDelete('database','<c:out value="${row.name}"/>')"><img src="images/icons/22x22/user-trash-full.png" title="Delete" border="0"></a> + <a href="EditDatabase.do?databaseId=<c:out value="${row.id}"/>" id="edit-${row.name}"><img src="images/icons/22x22/accessories-text-editor.png" title="Edit" border="0"></a> + <a href="DeleteDatabaseSubmit.do?databaseId=<c:out value="${row.id}"/>" id="delete-${row.name}" onClick="return confirmDelete('database','<c:out value="${row.name}"/>')"><img src="images/icons/22x22/user-trash-full.png" title="Delete" border="0"></a> </display:column> </display:table> Modified: trunk/drawbridge/WebContent/WEB-INF/jsp/driver/manage.jsp =================================================================== --- trunk/drawbridge/WebContent/WEB-INF/jsp/driver/manage.jsp 2008-03-29 02:12:32 UTC (rev 26) +++ trunk/drawbridge/WebContent/WEB-INF/jsp/driver/manage.jsp 2008-03-29 03:00:42 UTC (rev 27) @@ -27,8 +27,8 @@ <display:column property="name" title="Driver Name" sortable="true"/> <display:column property="className" title="Driver Class" sortable="true"/> <display:column title="Action" style="text-align: center;"> - <a href="EditDriver.do?driverId=<c:out value="${row.id}"/>"><img src="images/icons/22x22/accessories-text-editor.png" title="Edit" border="0"></a> - <a href="DeleteDriverSubmit.do?driverId=<c:out value="${row.id}"/>" onClick="return confirmDelete('driver','<c:out value="${row.name}"/>')"><img src="images/icons/22x22/user-trash-full.png" title="Delete" border="0"></a> + <a href="EditDriver.do?driverId=<c:out value="${row.id}"/>" id="edit-${row.name}"><img src="images/icons/22x22/accessories-text-editor.png" title="Edit" border="0"></a> + <a href="DeleteDriverSubmit.do?driverId=<c:out value="${row.id}"/>" id="delete-${row.name}" onClick="return confirmDelete('driver','<c:out value="${row.name}"/>')"><img src="images/icons/22x22/user-trash-full.png" title="Delete" border="0"></a> </display:column> </display:table> Added: trunk/drawbridge/src/canoo/tests/addDatabase.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/addDatabase.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/addDatabase.xml 2008-03-29 03:00:42 UTC (rev 27) @@ -0,0 +1,20 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="add a database"> + <invoke url="http://localhost:8080/drawbridge/ManageDatabases.do"/> + <clickLink label="create a new database"/> + <setInputField name="name" value="test"/> + <setInputField name="jdbcUrl" value="test"/> + <setSelectField name="driverId" text="MySQL"/> + <clickButton label="Submit"/> + <verifyText text="Successfully created database: test"/> + </webtest> + + </target> +</project> Added: trunk/drawbridge/src/canoo/tests/addDriver.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/addDriver.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/addDriver.xml 2008-03-29 03:00:42 UTC (rev 27) @@ -0,0 +1,19 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="add a driver"> + <invoke url="http://localhost:8080/drawbridge/ManageDrivers.do"/> + <clickLink label="create a new driver"/> + <setInputField name="name" value="test"/> + <setInputField name="className" value="test"/> + <clickButton label="Submit"/> + <verifyText text="Successfully created driver: test"/> + </webtest> + + </target> +</project> Modified: trunk/drawbridge/src/canoo/tests/allTests.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/allTests.xml 2008-03-29 02:12:32 UTC (rev 26) +++ trunk/drawbridge/src/canoo/tests/allTests.xml 2008-03-29 03:00:42 UTC (rev 27) @@ -2,8 +2,11 @@ <project default="test"> <target name="test" description="runs all the tests"> - <ant antfile="googleWebTest.xml"/> - <ant antfile="googleWebTestSteps.xml"/> - <ant antfile="webTestConference.xml"/> + <ant antfile="addDriver.xml"/> + <ant antfile="editDriver.xml"/> + <ant antfile="deleteDriver.xml"/> + <ant antfile="addDatabase.xml"/> + <ant antfile="editDatabase.xml"/> + <ant antfile="deleteDatabase.xml"/> </target> </project> Added: trunk/drawbridge/src/canoo/tests/deleteDatabase.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/deleteDatabase.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/deleteDatabase.xml 2008-03-29 03:00:42 UTC (rev 27) @@ -0,0 +1,16 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="delete database"> + <invoke url="http://localhost:8080/drawbridge/ManageDatabases.do"/> + <clickLink htmlId="delete-test2"/> + <verifyText text="Successfully deleted database."/> + </webtest> + + </target> +</project> Added: trunk/drawbridge/src/canoo/tests/deleteDriver.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/deleteDriver.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/deleteDriver.xml 2008-03-29 03:00:42 UTC (rev 27) @@ -0,0 +1,16 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="delete driver"> + <invoke url="http://localhost:8080/drawbridge/ManageDrivers.do"/> + <clickLink htmlId="delete-test2"/> + <verifyText text="Successfully deleted driver."/> + </webtest> + + </target> +</project> Added: trunk/drawbridge/src/canoo/tests/editDatabase.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/editDatabase.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/editDatabase.xml 2008-03-29 03:00:42 UTC (rev 27) @@ -0,0 +1,20 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="edit database"> + <invoke url="http://localhost:8080/drawbridge/ManageDatabases.do"/> + <clickLink htmlId="edit-test"/> + <setInputField name="name" value="test2"/> + <setInputField name="jdbcUrl" value="test3"/> + <setSelectField name="driverId" text="Hsqldb"/> + <clickButton label="Submit"/> + <verifyText text="Successfully updated database: test"/> + </webtest> + + </target> +</project> Added: trunk/drawbridge/src/canoo/tests/editDriver.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/editDriver.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/editDriver.xml 2008-03-29 03:00:42 UTC (rev 27) @@ -0,0 +1,19 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="edit driver"> + <invoke url="http://localhost:8080/drawbridge/ManageDrivers.do"/> + <clickLink htmlId="edit-test"/> + <setInputField name="name" value="test2"/> + <setInputField name="className" value="test3"/> + <clickButton label="Submit"/> + <verifyText text="Successfully updated driver: test"/> + </webtest> + + </target> +</project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-03-29 02:12:35
|
Revision: 26 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=26&view=rev Author: acresse Date: 2008-03-28 19:12:32 -0700 (Fri, 28 Mar 2008) Log Message: ----------- setup canoo webtest Modified Paths: -------------- trunk/drawbridge/.settings/org.eclipse.wst.common.component Added Paths: ----------- trunk/drawbridge/src/canoo/ trunk/drawbridge/src/canoo/build.xml trunk/drawbridge/src/canoo/definitions/ trunk/drawbridge/src/canoo/definitions/fillParticipantData.xml trunk/drawbridge/src/canoo/definitions/googleOnWebTest.xml trunk/drawbridge/src/canoo/definitions.xml trunk/drawbridge/src/canoo/dtd/ trunk/drawbridge/src/canoo/dtd/Project.dtd trunk/drawbridge/src/canoo/includes/ trunk/drawbridge/src/canoo/includes/doSomething.xml trunk/drawbridge/src/canoo/tests/ trunk/drawbridge/src/canoo/tests/allTests.xml trunk/drawbridge/src/canoo/tests/googleWebTest.xml trunk/drawbridge/src/canoo/tests/googleWebTestSteps.xml trunk/drawbridge/src/canoo/tests/webTestConference.xml Modified: trunk/drawbridge/.settings/org.eclipse.wst.common.component =================================================================== --- trunk/drawbridge/.settings/org.eclipse.wst.common.component 2008-03-29 00:46:39 UTC (rev 25) +++ trunk/drawbridge/.settings/org.eclipse.wst.common.component 2008-03-29 02:12:32 UTC (rev 26) @@ -6,6 +6,7 @@ <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/dummy"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/xsd"/> +<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/webtest"/> <property name="java-output-path" value="build/classes"/> <property name="context-root" value="drawbridge"/> </wb-module> Added: trunk/drawbridge/src/canoo/build.xml =================================================================== --- trunk/drawbridge/src/canoo/build.xml (rev 0) +++ trunk/drawbridge/src/canoo/build.xml 2008-03-29 02:12:32 UTC (rev 26) @@ -0,0 +1,22 @@ +<?xml version="1.0"?> + +<!-- +This is a (nearly) empty WebTest project containing just a few examples for a quick start +--> + +<project name="example" default="wt.full"> + + <property name="webtest.home" value="/Users/adam/Java/canoo"/> + + <import file="definitions.xml" description="Import custom definitions (if any)"/> + <import file="${webtest.home}/webtest.xml" description="Import all functionalities for a full build"/> + + <property name="wt.testInWork" value="tests/allTests.xml"/> + +<!-- + Activate this if you are behind a proxy and want to test a server outside your local network + See http://ant.apache.org/manual/OptionalTasks/setproxy.html + <setproxy proxyhost="myProxy" proxyport="1234"/> +--> + +</project> Added: trunk/drawbridge/src/canoo/definitions/fillParticipantData.xml =================================================================== --- trunk/drawbridge/src/canoo/definitions/fillParticipantData.xml (rev 0) +++ trunk/drawbridge/src/canoo/definitions/fillParticipantData.xml 2008-03-29 02:12:32 UTC (rev 26) @@ -0,0 +1,24 @@ +<!-- +Like all files of this folder, this content will be executed in target wt.defineMacros +and therefore made be available for the tests (here the macro <fillParticipantData .../>) +--> +<macrodef name="fillParticipantData" description="fill the conference formular for one person"> + <attribute name="firstName"/> + <attribute name="lastName"/> + <attribute name="index" default="1" description="the index in the sequence"/> + + <sequential> + <verifyText text="Please enter information for participant @{index}" + description="Verify that we are on the right screen"/> + <setInputField forLabel="Last name" value="@{lastName}"/> + <setInputField forLabel="First name" value="@{firstName}"/> + <setInputField forLabel="Street" value="Main street, 123"/> + <setInputField forLabel="Zip" value="12345"/> + <setInputField forLabel="City" value="Basel"/> + <setSelectField forLabel="Country" text="Switzerland"/> + <clickButton label="Confirm"/> + <not description="verify that we're not on the formular screen for this participant anymore"> + <verifyText text="Please enter information for participant @{index}"/> + </not> + </sequential> +</macrodef> Added: trunk/drawbridge/src/canoo/definitions/googleOnWebTest.xml =================================================================== --- trunk/drawbridge/src/canoo/definitions/googleOnWebTest.xml (rev 0) +++ trunk/drawbridge/src/canoo/definitions/googleOnWebTest.xml 2008-03-29 02:12:32 UTC (rev 26) @@ -0,0 +1,15 @@ +<!-- +Like all files of this folder, this content will be executed in target wt.defineMacros +and therefore made be available for the tests (here the macro <googleOnWebTest .../>) +--> +<macrodef name="googleOnWebTest" description="advanced Google search on webtest.canoo.com"> + <attribute name="search"/> + + <sequential> + <invoke description="Go to Google (in English)" url="http://www.google.com/ncr"/> + <clickLink label="Advanced Search"/> + <setInputField description="Set the search value" name="as_q" value="@{search}"/> + <setInputField description="Restrict search to Webtest's website" name="as_sitesearch" value="webtest.canoo.com"/> + <clickButton label="Google Search"/> + </sequential> +</macrodef> \ No newline at end of file Added: trunk/drawbridge/src/canoo/definitions.xml =================================================================== --- trunk/drawbridge/src/canoo/definitions.xml (rev 0) +++ trunk/drawbridge/src/canoo/definitions.xml 2008-03-29 02:12:32 UTC (rev 26) @@ -0,0 +1,33 @@ +<?xml version="1.0"?> + +<!-- +This file is generated automatically from the information contained in the folder definitions. +Do not edit it else you risk to lose your changes. +--> + +<!DOCTYPE project SYSTEM "dtd/Project.dtd" +[ + <!ENTITY definitions__fillParticipantData__xml SYSTEM "definitions/fillParticipantData.xml"> + <!ENTITY definitions__googleOnWebTest__xml SYSTEM "definitions/googleOnWebTest.xml"> + +] +> + +<project name="WebTest-projectDefinitions" basedir="." default="wt.nothing"> + + <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> + <target name="wt.defineMacros" description="Defines macros and project specific Steps" unless="macroDefined"> + <property name="macroDefined" value="true"/> + <echo message="Defining project macros and custom steps (if any)"/> + + &definitions__fillParticipantData__xml; + &definitions__googleOnWebTest__xml; + + </target> + + <target name="wt.nothing"> + + </target> + + +</project> Added: trunk/drawbridge/src/canoo/dtd/Project.dtd =================================================================== --- trunk/drawbridge/src/canoo/dtd/Project.dtd (rev 0) +++ trunk/drawbridge/src/canoo/dtd/Project.dtd 2008-03-29 02:12:32 UTC (rev 26) @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> + +<!-- +This file is generated automatically from the information contained in the folder includes. +Do not edit it else you risk to lose your changes. +--> + +<!ENTITY doSomething SYSTEM "../includes/doSomething.xml"> + Added: trunk/drawbridge/src/canoo/includes/doSomething.xml =================================================================== --- trunk/drawbridge/src/canoo/includes/doSomething.xml (rev 0) +++ trunk/drawbridge/src/canoo/includes/doSomething.xml 2008-03-29 02:12:32 UTC (rev 26) @@ -0,0 +1,13 @@ +<!-- +Example of entity for reuse of code fragments. + +The generated DTD will automatically reference files located in this folder +allowing to use entites just like: + + &doSomething; + +--> + +<!-- +some steps here... +--> \ No newline at end of file Added: trunk/drawbridge/src/canoo/tests/allTests.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/allTests.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/allTests.xml 2008-03-29 02:12:32 UTC (rev 26) @@ -0,0 +1,9 @@ +<?xml version="1.0"?> + +<project default="test"> + <target name="test" description="runs all the tests"> + <ant antfile="googleWebTest.xml"/> + <ant antfile="googleWebTestSteps.xml"/> + <ant antfile="webTestConference.xml"/> + </target> +</project> Added: trunk/drawbridge/src/canoo/tests/googleWebTest.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/googleWebTest.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/googleWebTest.xml 2008-03-29 02:12:32 UTC (rev 26) @@ -0,0 +1,18 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <target name="test"> + + <webtest name="check that WebTest is Google's top 'WebTest' result"> + <invoke url="http://www.google.com/ncr" description="Go to Google (in English)"/> + <verifyTitle text="Google" /> + <setInputField name="q" value="WebTest" /> + <clickButton label="I'm Feeling Lucky" /> + <verifyTitle text="Canoo WebTest" /> + </webtest> + + </target> +</project> Added: trunk/drawbridge/src/canoo/tests/googleWebTestSteps.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/googleWebTestSteps.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/googleWebTestSteps.xml 2008-03-29 02:12:32 UTC (rev 26) @@ -0,0 +1,31 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <import file="../definitions.xml"/> + + <target name="test" depends="wt.defineMacros"> + + <webtest name="Search some WebTest steps using Google restricted to webtest.canoo.com"> + <group description="search for clickLink"> + <googleOnWebTest search="clickLink"/> + <verifyXPath xpath="//a[@class='l']" text="Core Step: clickLink" + description="Verify that clickLink's documentation is the first result"/> + </group> + + <group description="search for setFileField"> + <googleOnWebTest search="setFileField"/> + <verifyXPath xpath="//a[@class='l']" text="Core Step: setFileField" + description="Verify that setFileField's documentation is the first result"/> + </group> + + <group description="search for notExistingStep"> + <googleOnWebTest search="notExistingStep"/> + <verifyText text="Your search .* did not match any documents." regex="true"/> + </group> + </webtest> + + </target> +</project> Added: trunk/drawbridge/src/canoo/tests/webTestConference.xml =================================================================== --- trunk/drawbridge/src/canoo/tests/webTestConference.xml (rev 0) +++ trunk/drawbridge/src/canoo/tests/webTestConference.xml 2008-03-29 02:12:32 UTC (rev 26) @@ -0,0 +1,32 @@ +<?xml version="1.0"?> + +<!DOCTYPE project SYSTEM "../dtd/Project.dtd"> + +<project default="test"> + + <import file="../definitions.xml"/> + + <target name="test" depends="wt.defineMacros"> + + <webtest name="[should fail!] Example of WebTest usage in TDD for a not yet existing website"> + <invoke url="http://conference.webtest.canoo.com" description="Go to the conference site"/> + <verifyTitle text="WebTest Conference" /> + <verifyText text="The most effective way to test your web application" /> + + <clickLink label="Register..."/> + + <group description="Register WebTest committers for the conference (aren't they already speakers?)"> + <setInputField forLabel="Number of participant" value="4" /> + <clickButton label="continue" /> + <fillParticipantData firstName="Denis" lastName="Antonioli"/> + <fillParticipantData firstName="Dierk" lastName="König" index="2"/> + <fillParticipantData firstName="Marc" lastName="Guillemot" index="3"/> + <fillParticipantData firstName="Paul" lastName="King" index="4"/> + + <clickLink label="Complete registration"/> + <verifyText text="Registration completed" /> + </group> + </webtest> + + </target> +</project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-03-29 00:46:42
|
Revision: 25 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=25&view=rev Author: acresse Date: 2008-03-28 17:46:39 -0700 (Fri, 28 Mar 2008) Log Message: ----------- initial security framework Modified Paths: -------------- trunk/drawbridge/.classpath trunk/drawbridge/WebContent/WEB-INF/drawbridge-servlet.xml trunk/drawbridge/src/java/drawbridge-core-spring.xml trunk/drawbridge/src/java/drawbridge-env-spring.xml trunk/drawbridge/src/java/net/sf/drawbridge/controller/AbstractDrawbridgeController.java trunk/drawbridge/src/java/net/sf/drawbridge/dao/drawbridge-dao-spring.xml trunk/drawbridge/src/sql/create_drawbridge_schema.sql trunk/drawbridge/src/sql/example_data.sql trunk/drawbridge/src/test/db.script trunk/drawbridge/src/test/drawbridge-test-spring.xml Added Paths: ----------- trunk/drawbridge/src/java/net/sf/drawbridge/domain/SecureDrawbridgeService.java trunk/drawbridge/src/java/net/sf/drawbridge/security/ trunk/drawbridge/src/java/net/sf/drawbridge/security/DefaultSecurityService.java trunk/drawbridge/src/java/net/sf/drawbridge/security/SecurityService.java trunk/drawbridge/src/java/net/sf/drawbridge/vo/ExecutionContext.java trunk/drawbridge/src/java/net/sf/drawbridge/vo/Permission.java trunk/drawbridge/src/test/net/sf/drawbridge/domain/ trunk/drawbridge/src/test/net/sf/drawbridge/domain/DefaultDrawbridgeServiceTest.java Property Changed: ---------------- trunk/drawbridge/ Property changes on: trunk/drawbridge ___________________________________________________________________ Name: svn:ignore - target + target eclipse-target Modified: trunk/drawbridge/.classpath =================================================================== --- trunk/drawbridge/.classpath 2008-03-28 02:54:40 UTC (rev 24) +++ trunk/drawbridge/.classpath 2008-03-29 00:46:39 UTC (rev 25) @@ -3,10 +3,6 @@ <classpathentry kind="src" path="src/java"/> <classpathentry kind="src" path="src/test"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> - <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0"/> - <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> - <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> - <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/> <classpathentry kind="var" path="JAR_REPO/asm/asm.jar"/> <classpathentry kind="var" path="JAR_REPO/asm/asm-attrs.jar"/> <classpathentry kind="var" path="JAR_REPO/cglib/cglib-2.1.3.jar"/> Modified: trunk/drawbridge/WebContent/WEB-INF/drawbridge-servlet.xml =================================================================== --- trunk/drawbridge/WebContent/WEB-INF/drawbridge-servlet.xml 2008-03-28 02:54:40 UTC (rev 24) +++ trunk/drawbridge/WebContent/WEB-INF/drawbridge-servlet.xml 2008-03-29 00:46:39 UTC (rev 25) @@ -59,7 +59,7 @@ </bean> <bean id="abstractController" class="net.sf.drawbridge.controller.AbstractDrawbridgeController" abstract="true"> - <property name="drawbridgeService" ref="drawbridgeService"/> + <property name="drawbridgeService" ref="DrawbridgeService"/> </bean> <bean id="mainMenuController" class="net.sf.drawbridge.controller.MainMenuController" parent="abstractController"/> Modified: trunk/drawbridge/src/java/drawbridge-core-spring.xml =================================================================== --- trunk/drawbridge/src/java/drawbridge-core-spring.xml 2008-03-28 02:54:40 UTC (rev 24) +++ trunk/drawbridge/src/java/drawbridge-core-spring.xml 2008-03-29 00:46:39 UTC (rev 25) @@ -3,15 +3,13 @@ <beans> <import resource="net/sf/drawbridge/dao/drawbridge-dao-spring.xml"/> + + <bean id="DrawbridgeService" class="net.sf.drawbridge.domain.SecureDrawbridgeService"> + <constructor-arg ref="DefaultDrawbridgeService"/> + <constructor-arg ref="SecurityService"/> + </bean> - <!-- - <bean id="drawbridgeService" class="net.sf.drawbridge.domain.DummyDrawbridgeService"> - <constructor-arg ref="queryParser"/> - <constructor-arg ref="jobExecuter"/> - </bean> - --> - - <bean id="drawbridgeService" class="net.sf.drawbridge.domain.DefaultDrawbridgeService"> + <bean id="DefaultDrawbridgeService" class="net.sf.drawbridge.domain.DefaultDrawbridgeService"> <constructor-arg ref="UserDao"/> <constructor-arg ref="GroupDao"/> <constructor-arg ref="RunAsAccountDao"/> @@ -22,7 +20,9 @@ <constructor-arg ref="JobExecuter"/> </bean> - <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> + <bean id="SecurityService" class="net.sf.drawbridge.security.DefaultSecurityService"/> + + <bean id="Scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="autoStartup" value="true"/> <property name="globalJobListeners"> <list></list> @@ -30,16 +30,16 @@ <property name="overwriteExistingJobs" value="true"/> </bean> - <bean id="scheduleLoader" class="net.sf.drawbridge.sched.QuartzDrawbridgeScheduleLoader"> - <constructor-arg ref="scheduler"/> + <bean id="ScheduleLoader" class="net.sf.drawbridge.sched.QuartzDrawbridgeScheduleLoader"> + <constructor-arg ref="Scheduler"/> </bean> <bean id="QueryParser" class="net.sf.drawbridge.exec.DefaultQueryParser"/> <bean id="JobExecuter" class="net.sf.drawbridge.exec.DefaultJobExecuter"/> - <bean id="encryptionUtil" class="net.sf.drawbridge.util.AESEncryptionUtil"> + <bean id="EncryptionUtil" class="net.sf.drawbridge.util.AESEncryptionUtil"> <constructor-arg value="1234567890abcdef"/> </bean> - + </beans> Modified: trunk/drawbridge/src/java/drawbridge-env-spring.xml =================================================================== --- trunk/drawbridge/src/java/drawbridge-env-spring.xml 2008-03-28 02:54:40 UTC (rev 24) +++ trunk/drawbridge/src/java/drawbridge-env-spring.xml 2008-03-29 00:46:39 UTC (rev 25) @@ -2,7 +2,7 @@ <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> - <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> + <bean id="DataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:/comp/env/jdbc/DrawbridgeDataSource"/> </bean> </beans> Modified: trunk/drawbridge/src/java/net/sf/drawbridge/controller/AbstractDrawbridgeController.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/controller/AbstractDrawbridgeController.java 2008-03-28 02:54:40 UTC (rev 24) +++ trunk/drawbridge/src/java/net/sf/drawbridge/controller/AbstractDrawbridgeController.java 2008-03-29 00:46:39 UTC (rev 25) @@ -20,6 +20,7 @@ import javax.servlet.http.HttpServletRequest; import net.sf.drawbridge.domain.DrawbridgeService; +import net.sf.drawbridge.vo.ExecutionContext; import org.springframework.web.servlet.mvc.AbstractController; @@ -47,5 +48,9 @@ } return value; } + + protected ExecutionContext getExecutionContext(HttpServletRequest request){ + return null; + } } Modified: trunk/drawbridge/src/java/net/sf/drawbridge/dao/drawbridge-dao-spring.xml =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/dao/drawbridge-dao-spring.xml 2008-03-28 02:54:40 UTC (rev 24) +++ trunk/drawbridge/src/java/net/sf/drawbridge/dao/drawbridge-dao-spring.xml 2008-03-29 00:46:39 UTC (rev 25) @@ -19,12 +19,12 @@ <prop key="hibernate.show_sql">${drawbridge.hibernate.show_sql}</prop> </props> </property> - <property name="dataSource" ref="dataSource"/> + <property name="dataSource" ref="DataSource"/> </bean> <bean id="TxManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="SessionFactory"/> - <property name="dataSource" ref="dataSource"/> + <property name="dataSource" ref="DataSource"/> </bean> <bean id="AbstractDao" abstract="true"> Added: trunk/drawbridge/src/java/net/sf/drawbridge/domain/SecureDrawbridgeService.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/domain/SecureDrawbridgeService.java (rev 0) +++ trunk/drawbridge/src/java/net/sf/drawbridge/domain/SecureDrawbridgeService.java 2008-03-29 00:46:39 UTC (rev 25) @@ -0,0 +1,202 @@ +package net.sf.drawbridge.domain; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +import net.sf.drawbridge.security.SecurityService; +import net.sf.drawbridge.vo.Database; +import net.sf.drawbridge.vo.Driver; +import net.sf.drawbridge.vo.Group; +import net.sf.drawbridge.vo.Job; +import net.sf.drawbridge.vo.QueryParam; +import net.sf.drawbridge.vo.RunAsAccount; +import net.sf.drawbridge.vo.User; + +public class SecureDrawbridgeService implements DrawbridgeService { + + private DrawbridgeService insecureService; + private SecurityService securityService; + + public SecureDrawbridgeService(DrawbridgeService insecureService, SecurityService securityService){ + this.insecureService = insecureService; + this.securityService = securityService; + } + + public void activateJob(Long jobId) { + insecureService.activateJob(jobId); + } + + public void addDatabase(Database database) { + insecureService.addDatabase(database); + } + + public void addDatabasePermissionToGroup(Integer permissionId, Integer groupId, Integer databaseId) { + insecureService.addDatabasePermissionToGroup(permissionId, groupId, databaseId); + } + + public void addDriver(Driver driver) { + insecureService.addDriver(driver); + } + + public void addGroup(Group group) { + insecureService.addGroup(group); + } + + public void addJob(Job job) { + insecureService.addJob(job); + } + + public void addRunAsAccount(RunAsAccount runAsAccount) { + insecureService.addRunAsAccount(runAsAccount); + } + + public void addRunAsPermissionToGroup(Integer permissionId, Integer groupId, Integer runAsId) { + insecureService.addRunAsPermissionToGroup(permissionId, groupId, runAsId); + } + + public void addSystemPermissionToGroup(Integer permissionId, Integer groupId) { + insecureService.addSystemPermissionToGroup(permissionId, groupId); + } + + public void addUser(User user) { + insecureService.addUser(user); + } + + public void addUserToGroup(Integer userId, Integer groupId) { + insecureService.addUserToGroup(userId, groupId); + } + + public void approveJob(Long jobId, User approvedBy) { + insecureService.approveJob(jobId, approvedBy); + } + + public void deactivateJob(Long jobId) { + insecureService.deactivateJob(jobId); + } + + public void deleteDatabase(Integer databaseId) { + insecureService.deleteDatabase(databaseId); + } + + public void deleteDriver(Integer driverId) { + insecureService.deleteDriver(driverId); + } + + public void deleteGroup(Integer groupId) { + insecureService.deleteGroup(groupId); + } + + public void deleteJob(Long jobId) { + insecureService.deleteJob(jobId); + } + + public void deleteRunAsAccount(Integer runAsId) { + insecureService.deleteRunAsAccount(runAsId); + } + + public void deleteUser(Integer userId) { + insecureService.deleteUser(userId); + } + + public List<Map<String, Object>> executeJob(Long jobId, List<QueryParam> queryParams) throws Exception { + return insecureService.executeJob(jobId, queryParams); + } + + public Database getDatabase(Integer databaseId) { + return insecureService.getDatabase(databaseId); + } + + public Driver getDriver(Integer driverId) { + return insecureService.getDriver(driverId); + } + + public Group getGroup(Integer groupId) { + return insecureService.getGroup(groupId); + } + + public Job getJob(Long jobId) { + return insecureService.getJob(jobId); + } + + public String getPreparedStatementQuery(String query) { + return insecureService.getPreparedStatementQuery(query); + } + + public List<QueryParam> getQueryParams(String query, boolean returnDuplicates) { + return insecureService.getQueryParams(query, returnDuplicates); + } + + public RunAsAccount getRunAsAccount(Integer runAsId) { + return insecureService.getRunAsAccount(runAsId); + } + + public User getUser(Integer userId) { + return insecureService.getUser(userId); + } + + public List<Database> listDatabases() { + return insecureService.listDatabases(); + } + + public List<Driver> listDrivers() { + return insecureService.listDrivers(); + } + + public List<Group> listGroups() { + return insecureService.listGroups(); + } + + public Set<Group> listGroupsForUser(Integer userId) { + return insecureService.listGroupsForUser(userId); + } + + public List<Job> listJobs(Integer databaseId) { + return insecureService.listJobs(databaseId); + } + + public List<RunAsAccount> listRunAsAccounts(Integer databaseId) { + return insecureService.listRunAsAccounts(databaseId); + } + + public List<User> listUsers() { + return insecureService.listUsers(); + } + + public Set<User> listUsersForGroup(Integer groupId) { + return insecureService.listUsersForGroup(groupId); + } + + public void removeUserFromGroup(Integer userId, Integer groupId) { + insecureService.removeUserFromGroup(userId, groupId); + } + + public void reviewJob(Long jobId, User reviewedBy) { + insecureService.reviewJob(jobId, reviewedBy); + } + + public void updateDatabase(Database newDatabase) { + insecureService.updateDatabase(newDatabase); + } + + public void updateDriver(Driver newDriver) { + insecureService.updateDriver(newDriver); + } + + public void updateGroup(Group newGroup) { + insecureService.updateGroup(newGroup); + } + + public void updateJob(Job newJob) { + insecureService.updateJob(newJob); + } + + public void updateRunAsAccount(RunAsAccount newRunAsAccount) { + insecureService.updateRunAsAccount(newRunAsAccount); + } + + public void updateUser(User newUser) { + insecureService.updateUser(newUser); + } + +} Added: trunk/drawbridge/src/java/net/sf/drawbridge/security/DefaultSecurityService.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/security/DefaultSecurityService.java (rev 0) +++ trunk/drawbridge/src/java/net/sf/drawbridge/security/DefaultSecurityService.java 2008-03-29 00:46:39 UTC (rev 25) @@ -0,0 +1,19 @@ +package net.sf.drawbridge.security; + +import net.sf.drawbridge.vo.Permission; + +public class DefaultSecurityService implements SecurityService { + + public boolean hasDatabasePermission(Integer userId, Integer databaseId, Permission permission) { + return true; + } + + public boolean hasRunAsPermission(Integer userId, Integer runAsId, Permission permission) { + return true; + } + + public boolean hasSystemPermission(Integer userId, Permission permission) { + return true; + } + +} Added: trunk/drawbridge/src/java/net/sf/drawbridge/security/SecurityService.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/security/SecurityService.java (rev 0) +++ trunk/drawbridge/src/java/net/sf/drawbridge/security/SecurityService.java 2008-03-29 00:46:39 UTC (rev 25) @@ -0,0 +1,13 @@ +package net.sf.drawbridge.security; + +import net.sf.drawbridge.vo.Permission; + +public interface SecurityService { + + public boolean hasSystemPermission(Integer userId, Permission permission); + + public boolean hasDatabasePermission(Integer userId, Integer databaseId, Permission permission); + + public boolean hasRunAsPermission(Integer userId, Integer runAsId, Permission permission); + +} Added: trunk/drawbridge/src/java/net/sf/drawbridge/vo/ExecutionContext.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/vo/ExecutionContext.java (rev 0) +++ trunk/drawbridge/src/java/net/sf/drawbridge/vo/ExecutionContext.java 2008-03-29 00:46:39 UTC (rev 25) @@ -0,0 +1,76 @@ +package net.sf.drawbridge.vo; + +public class ExecutionContext { + + private Integer userId; + private Integer databaseId; + private Integer runAsId; + + public ExecutionContext(Integer userId, Integer databaseId, Integer runAsId) { + this.userId = userId; + this.databaseId = databaseId; + this.runAsId = runAsId; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + public Integer getDatabaseId() { + return databaseId; + } + + public void setDatabaseId(Integer databaseId) { + this.databaseId = databaseId; + } + + public Integer getRunAsId() { + return runAsId; + } + + public void setRunAsId(Integer runAsId) { + this.runAsId = runAsId; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((databaseId == null) ? 0 : databaseId.hashCode()); + result = prime * result + ((runAsId == null) ? 0 : runAsId.hashCode()); + result = prime * result + ((userId == null) ? 0 : userId.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final ExecutionContext other = (ExecutionContext) obj; + if (databaseId == null) { + if (other.databaseId != null) + return false; + } else if (!databaseId.equals(other.databaseId)) + return false; + if (runAsId == null) { + if (other.runAsId != null) + return false; + } else if (!runAsId.equals(other.runAsId)) + return false; + if (userId == null) { + if (other.userId != null) + return false; + } else if (!userId.equals(other.userId)) + return false; + return true; + } + +} Added: trunk/drawbridge/src/java/net/sf/drawbridge/vo/Permission.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/vo/Permission.java (rev 0) +++ trunk/drawbridge/src/java/net/sf/drawbridge/vo/Permission.java 2008-03-29 00:46:39 UTC (rev 25) @@ -0,0 +1,66 @@ +package net.sf.drawbridge.vo; + +public enum Permission { + + SYSTEM_USER_ADD(1,"ADD USER",'S'), + SYSTEM_USER_EDIT(2,"EDIT USER",'S'), + SYSTEM_USER_DELETE(3,"DELETE USER",'S'), + SYSTEM_GROUP_ADD(4,"ADD GROUP",'S'), + SYSTEM_GROUP_EDIT(5,"EDIT GROUP",'S'), + SYSTEM_GROUP_DELETE(6,"DELETE GROUP",'S'), + SYSTEM_USER_GROUP_ADD(7,"ADD USER TO GROUP",'S'), + SYSTEM_USER_GROUP_DELETE(8,"REMOVE USER FROM GROUP",'S'), + SYSTEM_DRIVER_ADD(9,"ADD DRIVER",'S'), + SYSTEM_DRIVER_EDIT(10,"EDIT DRIVER",'S'), + SYSTEM_DRIVER_DELETE(11,"DELETE DRIVER",'S'), + SYSTEM_DATABASE_ADD(12,"ADD DATABASE",'S'), + SYSTEM_DATABASE_EDIT(13,"EDIT DATABASE",'S'), + SYSTEM_DATABASE_DELETE(14,"DELETE DATABASE",'S'), + SYSTEM_GRANT(15,"GRANT PERMISSIONS FOR SYSTEM",'S'), + + DATABASE_RUNAS_ADD(100,"ADD RUN-AS USER FOR DATABASE",'D'), + DATABASE_RUNAS_EDIT(101,"EDIT RUN-AS USER FOR DATABASE",'D'), + DATABASE_RUNAS_DELETE(102,"DELETE RUN-AS USER FOR DATABASE",'D'), + DATABASE_GRANT(103,"GRANT PERMISSIONS FOR DATABASE",'D'), + + RUNAS_JOB_SUBMIT(200,"SUBMIT JOB FOR RUN-AS",'R'), + RUNAS_JOB_REVIEW(201,"REVIEW JOB FOR RUN-AS",'R'), + RUNAS_JOB_APPROVE(202,"APPROVE JOB FOR RUN-AS",'R'), + RUNAS_JOB_DELETE_UNAPPROVED(203,"DELETE UNAPPROVED JOB FOR RUN-AS",'R'), + RUNAS_JOB_DELETE_APPROVED(204,"DELETE APPROVED JOB FOR RUN-AS",'R'), + RUNAS_JOB_DEACTIVATE(205,"DEACTIVATE APPROVED JOB FOR RUN-AS",'R'), + RUNAS_JOB_ACTIVATE(206,"ACTIVATE APPROVED JOB FOR RUN-AS",'R'), + RUNAS_JOB_RUN(207,"RUN APPROVED JOB FOR RUN-AS",'R'), + RUNAS_JOB_NO_REVIEW_NEEDED(208,"DOES NOT REQUIRE REVIEW FOR RUN-AS",'R'), + RUNAS_JOB_NO_APPROVAL_NEEDED(209,"DOES NOT REQUIRE APPROVAL FOR RUN-AS",'R'), + RUNAS_GRANT(210,"GRANT PERMISSIONS FOR RUN-AS",'R'); + + private Integer id; + private String name; + private Character type; + + Permission(Integer id, String name, Character type){ + this.id=id; + this.name=name; + } + + public Integer getId(){ + return id; + } + + public String getName(){ + return name; + } + + public Character getType(){ + return type; + } + + public String toString(){ + return new StringBuilder("Permission["). + append(id).append(", "). + append(name).append(", ") + .append(type).append("]").toString(); + } + +} Modified: trunk/drawbridge/src/sql/create_drawbridge_schema.sql =================================================================== --- trunk/drawbridge/src/sql/create_drawbridge_schema.sql 2008-03-28 02:54:40 UTC (rev 24) +++ trunk/drawbridge/src/sql/create_drawbridge_schema.sql 2008-03-29 00:46:39 UTC (rev 25) @@ -86,7 +86,7 @@ ); CREATE TABLE DB_PERMISSION_LIST( - ID INTEGER NOT NULL AUTO_INCREMENT, + ID INTEGER NOT NULL, NAME VARCHAR(64) NOT NULL, PERMISSION_TYPE VARCHAR(1) NOT NULL, PRIMARY KEY (ID), @@ -129,43 +129,44 @@ ); --SYSTEM PERMISSIONS -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ADD USER','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('EDIT USER','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE USER','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (1,'ADD USER','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (2,'EDIT USER','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (3,'DELETE USER','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ADD GROUP','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('EDIT GROUP','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE GROUP','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (4,'ADD GROUP','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (5,'EDIT GROUP','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (6,'DELETE GROUP','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ADD USER TO GROUP','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('REMOVE USER FROM GROUP','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (7,'ADD USER TO GROUP','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (8,'REMOVE USER FROM GROUP','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ADD DRIVER','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('EDIT DRIVER','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE DRIVER','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (9,'ADD DRIVER','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (10,'EDIT DRIVER','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (11,'DELETE DRIVER','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ADD DATABASE','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('EDIT DATABASE','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE DATABASE','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (12,'ADD DATABASE','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (13,'EDIT DATABASE','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (14,'DELETE DATABASE','S'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('GRANT PERMISSIONS FOR SYSTEM','S'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (15,'GRANT PERMISSIONS FOR SYSTEM','S'); --DATABASE PERMISSIONS -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ADD RUN-AS USER FOR DATABASE','D'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('EDIT RUN-AS USER FOR DATABASE','D'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE RUN-AS USER FOR DATABASE','D'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('GRANT PERMISSIONS FOR DATABASE','D'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (100,'ADD RUN-AS USER FOR DATABASE','D'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (101,'EDIT RUN-AS USER FOR DATABASE','D'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (102,'DELETE RUN-AS USER FOR DATABASE','D'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (103,'GRANT PERMISSIONS FOR DATABASE','D'); --RUN-AS PERMISSIONS -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('SUBMIT JOB FOR RUN-AS','R'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('REVIEW JOB FOR RUN-AS','R'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('APPROVE JOB FOR RUN-AS','R'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE UNAPPROVED JOB FOR RUN-AS','R'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE APPROVED JOB FOR RUN-AS','R'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DEACTIVATE APPROVED JOB FOR RUN-AS','R'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ACTIVATE APPROVED JOB FOR RUN-AS','R'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('RUN APPROVED JOB FOR RUN-AS','R'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DOES NOT REQUIRE REVIEW FOR RUN-AS','R'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DOES NOT REQUIRE APPROVAL FOR RUN-AS','R'); -INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('GRANT PERMISSIONS FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (200,'SUBMIT JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (201,'REVIEW JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (202,'APPROVE JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (203,'DELETE UNAPPROVED JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (204,'DELETE APPROVED JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (205,'DEACTIVATE APPROVED JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (206,'ACTIVATE APPROVED JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (207,'RUN APPROVED JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (208,'DOES NOT REQUIRE REVIEW FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (209,'DOES NOT REQUIRE APPROVAL FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (ID, NAME, PERMISSION_TYPE) VALUES (210,'GRANT PERMISSIONS FOR RUN-AS','R'); +COMMIT; \ No newline at end of file Modified: trunk/drawbridge/src/sql/example_data.sql =================================================================== --- trunk/drawbridge/src/sql/example_data.sql 2008-03-28 02:54:40 UTC (rev 24) +++ trunk/drawbridge/src/sql/example_data.sql 2008-03-29 00:46:39 UTC (rev 25) @@ -14,4 +14,6 @@ INSERT INTO DB_USER_GROUP (USER_ID,GROUP_ID) VALUES (-1,-1); -INSERT INTO DB_JOB (ID,NAME,RUN_AS_ID,QUERY,SUBMITTED_BY,SUBMITTED_ON,REVIEWED_BY,REVIEWED_ON,APPROVED_BY,APPROVED_ON,ACTIVE,SCHEDULE) VALUES (-1,'all jobs',-2,'SELECT * FROM DB_JOB',-1,{d '2008-03-19'},null,null,null,null,'Y',null); \ No newline at end of file +INSERT INTO DB_JOB (ID,NAME,RUN_AS_ID,QUERY,SUBMITTED_BY,SUBMITTED_ON,REVIEWED_BY,REVIEWED_ON,APPROVED_BY,APPROVED_ON,ACTIVE,SCHEDULE) VALUES (-1,'all jobs',-2,'SELECT * FROM DB_JOB',-1,{d '2008-03-19'},null,null,null,null,'Y',null); + +COMMIT; \ No newline at end of file Modified: trunk/drawbridge/src/test/db.script =================================================================== --- trunk/drawbridge/src/test/db.script 2008-03-28 02:54:40 UTC (rev 24) +++ trunk/drawbridge/src/test/db.script 2008-03-29 00:46:39 UTC (rev 25) @@ -8,7 +8,7 @@ CREATE MEMORY TABLE DB_DATABASE(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR(32) NOT NULL,JDBC_URL VARCHAR(128) NOT NULL,DRIVER_ID INTEGER NOT NULL,CONSTRAINT FK_DB_DATABASE_DB_DRIVER FOREIGN KEY(DRIVER_ID) REFERENCES PUBLIC.DB_DRIVER(ID),CONSTRAINT UNQ_DB_DATABASE UNIQUE(NAME)) CREATE MEMORY TABLE DB_RUN_AS(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,USER_NAME VARCHAR(16) NOT NULL,ENC_PASSWORD VARCHAR(32) NOT NULL,DATABASE_ID INTEGER NOT NULL,CONSTRAINT FK_DB_RUN_AS_DB_DATABASE FOREIGN KEY(DATABASE_ID) REFERENCES PUBLIC.DB_DATABASE(ID),CONSTRAINT UNQ_DB_RUN_AS UNIQUE(USER_NAME,DATABASE_ID)) CREATE MEMORY TABLE DB_JOB(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 2) NOT NULL PRIMARY KEY,NAME VARCHAR(64) NOT NULL,RUN_AS_ID INTEGER NOT NULL,QUERY VARCHAR(1024) NOT NULL,SUBMITTED_BY INTEGER NOT NULL,SUBMITTED_ON TIMESTAMP NOT NULL,REVIEWED_BY INTEGER,REVIEWED_ON TIMESTAMP,APPROVED_BY INTEGER,APPROVED_ON TIMESTAMP,ACTIVE VARCHAR(1) NOT NULL,SCHEDULE VARCHAR(128),CONSTRAINT FK_DB_JOB_DB_RUN_AS FOREIGN KEY(RUN_AS_ID) REFERENCES PUBLIC.DB_RUN_AS(ID),CONSTRAINT FK_DB_JOB_SUBMITTED_BY FOREIGN KEY(SUBMITTED_BY) REFERENCES PUBLIC.DB_USER(ID),CONSTRAINT FK_DB_JOB_REVIEWED_BY FOREIGN KEY(REVIEWED_BY) REFERENCES PUBLIC.DB_USER(ID),CONSTRAINT FK_DB_JOB_APPROVED_BY FOREIGN KEY(APPROVED_BY) REFERENCES PUBLIC.DB_USER(ID),CONSTRAINT UNQ_DB_JOB UNIQUE(NAME),CONSTRAINT CHK_DB_JOB_ACTIVE CHECK((DB_JOB.ACTIVE) IN (('Y'),('N')))) -CREATE MEMORY TABLE DB_PERMISSION_LIST(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 30) NOT NULL PRIMARY KEY,NAME VARCHAR(64) NOT NULL,PERMISSION_TYPE VARCHAR(1) NOT NULL,CONSTRAINT UNQ_DB_PERMISSION UNIQUE(NAME,PERMISSION_TYPE),CONSTRAINT CHK_DB_PERMISSION_LIST_PERMISSION_TYPE CHECK((DB_PERMISSION_LIST.PERMISSION_TYPE) IN (('S'),('D'),('R')))) +CREATE MEMORY TABLE DB_PERMISSION_LIST(ID INTEGER NOT NULL PRIMARY KEY,NAME VARCHAR(64) NOT NULL,PERMISSION_TYPE VARCHAR(1) NOT NULL,CONSTRAINT UNQ_DB_PERMISSION UNIQUE(NAME,PERMISSION_TYPE),CONSTRAINT CHK_DB_PERMISSION_LIST_PERMISSION_TYPE CHECK((DB_PERMISSION_LIST.PERMISSION_TYPE) IN (('S'),('D'),('R')))) CREATE MEMORY TABLE DB_SYSTEM_PERMISSION(GROUP_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,PRIMARY KEY(GROUP_ID,PERMISSION_ID),CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES PUBLIC.DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE) CREATE MEMORY TABLE DB_DATABASE_PERMISSION(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,GROUP_ID INTEGER NOT NULL,DATABASE_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_DATABASE FOREIGN KEY(DATABASE_ID) REFERENCES PUBLIC.DB_DATABASE(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES PUBLIC.DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT UNQ_DB_GRAP UNIQUE(GROUP_ID,DATABASE_ID,PERMISSION_ID)) CREATE MEMORY TABLE DB_RUN_AS_PERMISSION(GROUP_ID INTEGER NOT NULL,RUN_AS_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,PRIMARY KEY(GROUP_ID,RUN_AS_ID,PERMISSION_ID),CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_RUN_AS FOREIGN KEY(RUN_AS_ID) REFERENCES PUBLIC.DB_RUN_AS(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES PUBLIC.DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE) @@ -18,7 +18,6 @@ ALTER TABLE DB_DATABASE ALTER COLUMN ID RESTART WITH 1 ALTER TABLE DB_RUN_AS ALTER COLUMN ID RESTART WITH 1 ALTER TABLE DB_JOB ALTER COLUMN ID RESTART WITH 2 -ALTER TABLE DB_PERMISSION_LIST ALTER COLUMN ID RESTART WITH 30 ALTER TABLE DB_DATABASE_PERMISSION ALTER COLUMN ID RESTART WITH 0 SET SCHEMA PUBLIC GRANT DBA TO SA @@ -38,33 +37,33 @@ INSERT INTO DB_RUN_AS VALUES(0,'sa','base64',0) INSERT INTO DB_JOB VALUES(0,'Job 1',0,'select count(*) from dual',0,'2008-03-19 19:00:00.000000',1,'2008-03-20 18:00:00.000000',1,'2008-03-20 18:00:01.000000','Y','schedule') INSERT INTO DB_JOB VALUES(1,'Job 2',0,'select count(*) from dual',0,'2008-03-19 19:00:00.000000',1,'2008-03-20 18:00:00.000000',1,'2008-03-20 18:00:01.000000','Y','schedule') -INSERT INTO DB_PERMISSION_LIST VALUES(0,'ADD USER','S') -INSERT INTO DB_PERMISSION_LIST VALUES(1,'EDIT USER','S') -INSERT INTO DB_PERMISSION_LIST VALUES(2,'DELETE USER','S') -INSERT INTO DB_PERMISSION_LIST VALUES(3,'ADD GROUP','S') -INSERT INTO DB_PERMISSION_LIST VALUES(4,'EDIT GROUP','S') -INSERT INTO DB_PERMISSION_LIST VALUES(5,'DELETE GROUP','S') -INSERT INTO DB_PERMISSION_LIST VALUES(6,'ADD USER TO GROUP','S') -INSERT INTO DB_PERMISSION_LIST VALUES(7,'REMOVE USER FROM GROUP','S') -INSERT INTO DB_PERMISSION_LIST VALUES(8,'ADD DRIVER','S') -INSERT INTO DB_PERMISSION_LIST VALUES(9,'EDIT DRIVER','S') -INSERT INTO DB_PERMISSION_LIST VALUES(10,'DELETE DRIVER','S') -INSERT INTO DB_PERMISSION_LIST VALUES(11,'ADD DATABASE','S') -INSERT INTO DB_PERMISSION_LIST VALUES(12,'EDIT DATABASE','S') -INSERT INTO DB_PERMISSION_LIST VALUES(13,'DELETE DATABASE','S') -INSERT INTO DB_PERMISSION_LIST VALUES(14,'GRANT PERMISSIONS FOR SYSTEM','S') -INSERT INTO DB_PERMISSION_LIST VALUES(15,'ADD RUN-AS USER FOR DATABASE','D') -INSERT INTO DB_PERMISSION_LIST VALUES(16,'EDIT RUN-AS USER FOR DATABASE','D') -INSERT INTO DB_PERMISSION_LIST VALUES(17,'DELETE RUN-AS USER FOR DATABASE','D') -INSERT INTO DB_PERMISSION_LIST VALUES(18,'GRANT PERMISSIONS FOR DATABASE','D') -INSERT INTO DB_PERMISSION_LIST VALUES(19,'SUBMIT JOB FOR RUN-AS','R') -INSERT INTO DB_PERMISSION_LIST VALUES(20,'REVIEW JOB FOR RUN-AS','R') -INSERT INTO DB_PERMISSION_LIST VALUES(21,'APPROVE JOB FOR RUN-AS','R') -INSERT INTO DB_PERMISSION_LIST VALUES(22,'DELETE UNAPPROVED JOB FOR RUN-AS','R') -INSERT INTO DB_PERMISSION_LIST VALUES(23,'DELETE APPROVED JOB FOR RUN-AS','R') -INSERT INTO DB_PERMISSION_LIST VALUES(24,'DEACTIVATE APPROVED JOB FOR RUN-AS','R') -INSERT INTO DB_PERMISSION_LIST VALUES(25,'ACTIVATE APPROVED JOB FOR RUN-AS','R') -INSERT INTO DB_PERMISSION_LIST VALUES(26,'RUN APPROVED JOB FOR RUN-AS','R') -INSERT INTO DB_PERMISSION_LIST VALUES(27,'DOES NOT REQUIRE REVIEW FOR RUN-AS','R') -INSERT INTO DB_PERMISSION_LIST VALUES(28,'DOES NOT REQUIRE APPROVAL FOR RUN-AS','R') -INSERT INTO DB_PERMISSION_LIST VALUES(29,'GRANT PERMISSIONS FOR RUN-AS','R') +INSERT INTO DB_PERMISSION_LIST VALUES(1,'ADD USER','S') +INSERT INTO DB_PERMISSION_LIST VALUES(2,'EDIT USER','S') +INSERT INTO DB_PERMISSION_LIST VALUES(3,'DELETE USER','S') +INSERT INTO DB_PERMISSION_LIST VALUES(4,'ADD GROUP','S') +INSERT INTO DB_PERMISSION_LIST VALUES(5,'EDIT GROUP','S') +INSERT INTO DB_PERMISSION_LIST VALUES(6,'DELETE GROUP','S') +INSERT INTO DB_PERMISSION_LIST VALUES(7,'ADD USER TO GROUP','S') +INSERT INTO DB_PERMISSION_LIST VALUES(8,'REMOVE USER FROM GROUP','S') +INSERT INTO DB_PERMISSION_LIST VALUES(9,'ADD DRIVER','S') +INSERT INTO DB_PERMISSION_LIST VALUES(10,'EDIT DRIVER','S') +INSERT INTO DB_PERMISSION_LIST VALUES(11,'DELETE DRIVER','S') +INSERT INTO DB_PERMISSION_LIST VALUES(12,'ADD DATABASE','S') +INSERT INTO DB_PERMISSION_LIST VALUES(13,'EDIT DATABASE','S') +INSERT INTO DB_PERMISSION_LIST VALUES(14,'DELETE DATABASE','S') +INSERT INTO DB_PERMISSION_LIST VALUES(15,'GRANT PERMISSIONS FOR SYSTEM','S') +INSERT INTO DB_PERMISSION_LIST VALUES(100,'ADD RUN-AS USER FOR DATABASE','D') +INSERT INTO DB_PERMISSION_LIST VALUES(101,'EDIT RUN-AS USER FOR DATABASE','D') +INSERT INTO DB_PERMISSION_LIST VALUES(102,'DELETE RUN-AS USER FOR DATABASE','D') +INSERT INTO DB_PERMISSION_LIST VALUES(103,'GRANT PERMISSIONS FOR DATABASE','D') +INSERT INTO DB_PERMISSION_LIST VALUES(200,'SUBMIT JOB FOR RUN-AS','R') +INSERT INTO DB_PERMISSION_LIST VALUES(201,'REVIEW JOB FOR RUN-AS','R') +INSERT INTO DB_PERMISSION_LIST VALUES(202,'APPROVE JOB FOR RUN-AS','R') +INSERT INTO DB_PERMISSION_LIST VALUES(203,'DELETE UNAPPROVED JOB FOR RUN-AS','R') +INSERT INTO DB_PERMISSION_LIST VALUES(204,'DELETE APPROVED JOB FOR RUN-AS','R') +INSERT INTO DB_PERMISSION_LIST VALUES(205,'DEACTIVATE APPROVED JOB FOR RUN-AS','R') +INSERT INTO DB_PERMISSION_LIST VALUES(206,'ACTIVATE APPROVED JOB FOR RUN-AS','R') +INSERT INTO DB_PERMISSION_LIST VALUES(207,'RUN APPROVED JOB FOR RUN-AS','R') +INSERT INTO DB_PERMISSION_LIST VALUES(208,'DOES NOT REQUIRE REVIEW FOR RUN-AS','R') +INSERT INTO DB_PERMISSION_LIST VALUES(209,'DOES NOT REQUIRE APPROVAL FOR RUN-AS','R') +INSERT INTO DB_PERMISSION_LIST VALUES(210,'GRANT PERMISSIONS FOR RUN-AS','R') Modified: trunk/drawbridge/src/test/drawbridge-test-spring.xml =================================================================== --- trunk/drawbridge/src/test/drawbridge-test-spring.xml 2008-03-28 02:54:40 UTC (rev 24) +++ trunk/drawbridge/src/test/drawbridge-test-spring.xml 2008-03-29 00:46:39 UTC (rev 25) @@ -7,7 +7,7 @@ <property name="location" value="classpath:drawbridge.properties"/> </bean> - <bean id="dataSource" class="org.springframework.jdbc.datasource.SingleConnectionDataSource"> + <bean id="DataSource" class="org.springframework.jdbc.datasource.SingleConnectionDataSource"> <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> <property name="url" value="jdbc:hsqldb:src/test/db"/> <property name="username" value="sa"/> Added: trunk/drawbridge/src/test/net/sf/drawbridge/domain/DefaultDrawbridgeServiceTest.java =================================================================== --- trunk/drawbridge/src/test/net/sf/drawbridge/domain/DefaultDrawbridgeServiceTest.java (rev 0) +++ trunk/drawbridge/src/test/net/sf/drawbridge/domain/DefaultDrawbridgeServiceTest.java 2008-03-29 00:46:39 UTC (rev 25) @@ -0,0 +1,9 @@ +package net.sf.drawbridge.domain; + +import org.jmock.MockObjectTestCase; + +public class DefaultDrawbridgeServiceTest extends MockObjectTestCase { + + public void testWhatTheyActuallyMeanByUnitTest(){} + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bla...@us...> - 2008-03-28 02:54:43
|
Revision: 24 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=24&view=rev Author: blamonica Date: 2008-03-27 19:54:40 -0700 (Thu, 27 Mar 2008) Log Message: ----------- BUG 1921805 - Deleting a group abandons records in db_user_group Iterate through the users before deleting the group and remove that group from them. Not especially efficient but since this will happen so infrequently I will go with ease over efficiency. Modified Paths: -------------- trunk/drawbridge/src/java/net/sf/drawbridge/domain/DefaultDrawbridgeService.java Modified: trunk/drawbridge/src/java/net/sf/drawbridge/domain/DefaultDrawbridgeService.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/domain/DefaultDrawbridgeService.java 2008-03-28 01:54:01 UTC (rev 23) +++ trunk/drawbridge/src/java/net/sf/drawbridge/domain/DefaultDrawbridgeService.java 2008-03-28 02:54:40 UTC (rev 24) @@ -149,6 +149,10 @@ public void deleteGroup(Integer groupId) { Group group = groupDao.get(groupId); + for (User user : group.getUsers()) { + user.getGroups().remove(group); + userDao.update(user); + } groupDao.delete(group); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bla...@us...> - 2008-03-28 01:54:06
|
Revision: 23 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=23&view=rev Author: blamonica Date: 2008-03-27 18:54:01 -0700 (Thu, 27 Mar 2008) Log Message: ----------- Remove dummy impl. Make all SQL uppercase in order to deal with case-sensitivity in MySQL on my mac. Modified Paths: -------------- trunk/drawbridge/.classpath trunk/drawbridge/src/sql/create_drawbridge_schema.sql trunk/drawbridge/src/sql/example_data.sql Removed Paths: ------------- trunk/drawbridge/src/dummy/ Modified: trunk/drawbridge/.classpath =================================================================== --- trunk/drawbridge/.classpath 2008-03-26 02:10:26 UTC (rev 22) +++ trunk/drawbridge/.classpath 2008-03-28 01:54:01 UTC (rev 23) @@ -2,7 +2,6 @@ <classpath> <classpathentry kind="src" path="src/java"/> <classpathentry kind="src" path="src/test"/> - <classpathentry kind="src" path="src/dummy"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> Modified: trunk/drawbridge/src/sql/create_drawbridge_schema.sql =================================================================== --- trunk/drawbridge/src/sql/create_drawbridge_schema.sql 2008-03-26 02:10:26 UTC (rev 22) +++ trunk/drawbridge/src/sql/create_drawbridge_schema.sql 2008-03-28 01:54:01 UTC (rev 23) @@ -1,171 +1,171 @@ -drop table db_user; -drop table db_group; -drop table db_user_group; -drop table db_driver; -drop table db_database; -drop table db_run_as; -drop table db_job; -drop table db_permission_list; -drop table db_system_permission; -drop table db_database_permission; -drop table db_run_as_permission; +DROP TABLE DB_USER; +DROP TABLE DB_GROUP; +DROP TABLE DB_USER_GROUP; +DROP TABLE DB_DRIVER; +DROP TABLE DB_DATABASE; +DROP TABLE DB_RUN_AS; +DROP TABLE DB_JOB; +DROP TABLE DB_PERMISSION_LIST; +DROP TABLE DB_SYSTEM_PERMISSION; +DROP TABLE DB_DATABASE_PERMISSION; +DROP TABLE DB_RUN_AS_PERMISSION; -create table db_user( - id INTEGER NOT NULL AUTO_INCREMENT, - user_name varchar(16) NOT NULL, - first_name varchar(32) NOT NULL, - last_name varchar(32) NOT NULL, - active varchar(1) NOT NULL DEFAULT 'Y', - PRIMARY KEY (id), - CONSTRAINT unq_db_user UNIQUE (user_name) +CREATE TABLE DB_USER( + ID INTEGER NOT NULL AUTO_INCREMENT, + USER_NAME VARCHAR(16) NOT NULL, + FIRST_NAME VARCHAR(32) NOT NULL, + LAST_NAME VARCHAR(32) NOT NULL, + ACTIVE VARCHAR(1) NOT NULL DEFAULT 'Y', + PRIMARY KEY (ID), + CONSTRAINT UNQ_DB_USER UNIQUE (USER_NAME) ); -create table db_group( - id INTEGER NOT NULL AUTO_INCREMENT, - group_name varchar(16) NOT NULL, - PRIMARY KEY (id), - CONSTRAINT unq_db_group UNIQUE (group_name) +CREATE TABLE DB_GROUP( + ID INTEGER NOT NULL AUTO_INCREMENT, + GROUP_NAME VARCHAR(16) NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT UNQ_DB_GROUP UNIQUE (GROUP_NAME) ); -create table db_user_group( - user_id INTEGER NOT NULL, - group_id INTEGER NOT NULL, - PRIMARY KEY (user_id, group_id), - CONSTRAINT fk_db_user_group_db_user FOREIGN KEY fk_db_user_group_db_user (user_id) REFERENCES db_user (id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT fk_db_user_group_db_group FOREIGN KEY fk_db_user_group_db_group (group_id) REFERENCES db_group (id) ON DELETE CASCADE ON UPDATE CASCADE +CREATE TABLE DB_USER_GROUP( + USER_ID INTEGER NOT NULL, + GROUP_ID INTEGER NOT NULL, + PRIMARY KEY (USER_ID, GROUP_ID), + CONSTRAINT FK_DB_USER_GROUP_DB_USER FOREIGN KEY FK_DB_USER_GROUP_DB_USER (USER_ID) REFERENCES DB_USER (ID) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT FK_DB_USER_GROUP_DB_GROUP FOREIGN KEY FK_DB_USER_GROUP_DB_GROUP (GROUP_ID) REFERENCES DB_GROUP (ID) ON DELETE CASCADE ON UPDATE CASCADE ); -create table db_driver( - id INTEGER NOT NULL AUTO_INCREMENT, - name varchar(32) NOT NULL, - class_name varchar(128) NOT NULL, - PRIMARY KEY (id), - CONSTRAINT unq_db_driver UNIQUE (name) +CREATE TABLE DB_DRIVER( + ID INTEGER NOT NULL AUTO_INCREMENT, + NAME VARCHAR(32) NOT NULL, + CLASS_NAME VARCHAR(128) NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT UNQ_DB_DRIVER UNIQUE (NAME) ); -create table db_database( - id INTEGER NOT NULL AUTO_INCREMENT, - name varchar(32) NOT NULL, - jdbc_url varchar(128) NOT NULL, - driver_id INTEGER NOT NULL, - PRIMARY KEY (id), - CONSTRAINT fk_db_database_db_driver FOREIGN KEY fk_db_database_db_driver (driver_id) REFERENCES db_driver (id), - CONSTRAINT unq_db_database UNIQUE (name) +CREATE TABLE DB_DATABASE( + ID INTEGER NOT NULL AUTO_INCREMENT, + NAME VARCHAR(32) NOT NULL, + JDBC_URL VARCHAR(128) NOT NULL, + DRIVER_ID INTEGER NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_DB_DATABASE_DB_DRIVER FOREIGN KEY FK_DB_DATABASE_DB_DRIVER (DRIVER_ID) REFERENCES DB_DRIVER (ID), + CONSTRAINT UNQ_DB_DATABASE UNIQUE (NAME) ); -create table db_run_as( - id INTEGER NOT NULL AUTO_INCREMENT, - user_name varchar(16) NOT NULL, - enc_password varchar(32) NOT NULL, - database_id INTEGER NOT NULL, - PRIMARY KEY (id), - CONSTRAINT fk_db_run_as_db_database FOREIGN KEY fk_db_run_as_db_database (database_id) REFERENCES db_database (id), - CONSTRAINT unq_db_run_as UNIQUE (user_name, database_id) +CREATE TABLE DB_RUN_AS( + ID INTEGER NOT NULL AUTO_INCREMENT, + USER_NAME VARCHAR(16) NOT NULL, + ENC_PASSWORD VARCHAR(32) NOT NULL, + DATABASE_ID INTEGER NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_DB_RUN_AS_DB_DATABASE FOREIGN KEY FK_DB_RUN_AS_DB_DATABASE (DATABASE_ID) REFERENCES DB_DATABASE (ID), + CONSTRAINT UNQ_DB_RUN_AS UNIQUE (USER_NAME, DATABASE_ID) ); -create table db_job( - id INTEGER NOT NULL AUTO_INCREMENT, - name varchar(64) NOT NULL, - run_as_id INTEGER NOT NULL, - query varchar(1024) NOT NULL, - submitted_by INTEGER NOT NULL, - submitted_on TIMESTAMP NOT NULL, - reviewed_by INTEGER, - reviewed_on TIMESTAMP, - approved_by INTEGER, - approved_on TIMESTAMP, - active varchar(1) NOT NULL, - schedule varchar(128), - PRIMARY KEY (id), - CONSTRAINT fk_db_job_db_run_as FOREIGN KEY fk_db_job_db_run_as (run_as_id) REFERENCES db_run_as (id), - CONSTRAINT fk_db_job_submitted_by FOREIGN KEY fk_db_job_submitted_by (submitted_by) REFERENCES db_user (id), - CONSTRAINT fk_db_job_reviewed_by FOREIGN KEY fk_db_job_reviewed_by (reviewed_by) REFERENCES db_user (id), - CONSTRAINT fk_db_job_approved_by FOREIGN KEY fk_db_job_approved_by (approved_by) REFERENCES db_user (id), - CONSTRAINT unq_db_job UNIQUE (name), - CONSTRAINT chk_db_job_active CHECK active in ('Y','N') +CREATE TABLE DB_JOB( + ID INTEGER NOT NULL AUTO_INCREMENT, + NAME VARCHAR(64) NOT NULL, + RUN_AS_ID INTEGER NOT NULL, + QUERY VARCHAR(1024) NOT NULL, + SUBMITTED_BY INTEGER NOT NULL, + SUBMITTED_ON TIMESTAMP NOT NULL, + REVIEWED_BY INTEGER, + REVIEWED_ON TIMESTAMP, + APPROVED_BY INTEGER, + APPROVED_ON TIMESTAMP, + ACTIVE VARCHAR(1) NOT NULL, + SCHEDULE VARCHAR(128), + PRIMARY KEY (ID), + CONSTRAINT FK_DB_JOB_DB_RUN_AS FOREIGN KEY FK_DB_JOB_DB_RUN_AS (RUN_AS_ID) REFERENCES DB_RUN_AS (ID), + CONSTRAINT FK_DB_JOB_SUBMITTED_BY FOREIGN KEY FK_DB_JOB_SUBMITTED_BY (SUBMITTED_BY) REFERENCES DB_USER (ID), + CONSTRAINT FK_DB_JOB_REVIEWED_BY FOREIGN KEY FK_DB_JOB_REVIEWED_BY (REVIEWED_BY) REFERENCES DB_USER (ID), + CONSTRAINT FK_DB_JOB_APPROVED_BY FOREIGN KEY FK_DB_JOB_APPROVED_BY (APPROVED_BY) REFERENCES DB_USER (ID), + CONSTRAINT UNQ_DB_JOB UNIQUE (NAME), + CONSTRAINT CHK_DB_JOB_ACTIVE CHECK ACTIVE IN ('Y','N') ); -create table db_permission_list( - id INTEGER NOT NULL AUTO_INCREMENT, - name varchar(64) NOT NULL, - permission_type varchar(1) NOT NULL, - PRIMARY KEY (id), - CONSTRAINT unq_db_permission UNIQUE (name, permission_type), - CONSTRAINT chk_db_permission_list_permission_type CHECK permission_type in ('S','D','R') +CREATE TABLE DB_PERMISSION_LIST( + ID INTEGER NOT NULL AUTO_INCREMENT, + NAME VARCHAR(64) NOT NULL, + PERMISSION_TYPE VARCHAR(1) NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT UNQ_DB_PERMISSION UNIQUE (NAME, PERMISSION_TYPE), + CONSTRAINT CHK_DB_PERMISSION_LIST_PERMISSION_TYPE CHECK PERMISSION_TYPE IN ('S','D','R') ); -create table db_system_permission( - id INTEGER NOT NULL AUTO_INCREMENT, - group_id INTEGER NOT NULL, - permission_id INTEGER NOT NULL, - PRIMARY KEY (id), - CONSTRAINT fk_db_system_permission_db_group FOREIGN KEY fk_db_system_permission_db_group (group_id) REFERENCES db_group (id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT fk_db_system_permission_db_permission_list FOREIGN KEY fk_db_system_permission_db_permission_list (permission_id) REFERENCES db_permission_list (id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT unq_db_system_permission UNIQUE (group_id, permission_id) +CREATE TABLE DB_SYSTEM_PERMISSION( + ID INTEGER NOT NULL AUTO_INCREMENT, + GROUP_ID INTEGER NOT NULL, + PERMISSION_ID INTEGER NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_GROUP FOREIGN KEY FK_DB_SYSTEM_PERMISSION_DB_GROUP (GROUP_ID) REFERENCES DB_GROUP (ID) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY FK_DB_SYSTEM_PERMISSION_DB_PERMISSION_LIST (PERMISSION_ID) REFERENCES DB_PERMISSION_LIST (ID) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT UNQ_DB_SYSTEM_PERMISSION UNIQUE (GROUP_ID, PERMISSION_ID) ); -create table db_database_permission( - id INTEGER NOT NULL AUTO_INCREMENT, - group_id INTEGER NOT NULL, - database_id INTEGER NOT NULL, - permission_id INTEGER NOT NULL, - PRIMARY KEY (id), - CONSTRAINT fk_db_database_permission_db_group FOREIGN KEY fk_db_database_permission_db_group (group_id) REFERENCES db_group (id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT fk_db_database_permission_db_database FOREIGN KEY fk_db_database_permission_db_database (database_id) REFERENCES db_database (id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT fk_db_database_permission_db_permission_list FOREIGN KEY fk_db_database_permission_db_permission_list (permission_id) REFERENCES db_permission_list (id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT unq_db_grap UNIQUE (group_id, database_id, permission_id) +CREATE TABLE DB_DATABASE_PERMISSION( + ID INTEGER NOT NULL AUTO_INCREMENT, + GROUP_ID INTEGER NOT NULL, + DATABASE_ID INTEGER NOT NULL, + PERMISSION_ID INTEGER NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_GROUP FOREIGN KEY FK_DB_DATABASE_PERMISSION_DB_GROUP (GROUP_ID) REFERENCES DB_GROUP (ID) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_DATABASE FOREIGN KEY FK_DB_DATABASE_PERMISSION_DB_DATABASE (DATABASE_ID) REFERENCES DB_DATABASE (ID) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY FK_DB_DATABASE_PERMISSION_DB_PERMISSION_LIST (PERMISSION_ID) REFERENCES DB_PERMISSION_LIST (ID) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT UNQ_DB_GRAP UNIQUE (GROUP_ID, DATABASE_ID, PERMISSION_ID) ); -create table db_run_as_permission( - id INTEGER NOT NULL AUTO_INCREMENT, - group_id INTEGER NOT NULL, - run_as_id INTEGER NOT NULL, - permission_id INTEGER NOT NULL, - PRIMARY KEY (id), - CONSTRAINT fk_db_run_as_permission_db_group FOREIGN KEY fk_db_run_as_permission_db_group (group_id) REFERENCES db_group (id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT fk_db_run_as_permission_db_run_as FOREIGN KEY fk_db_run_as_permission_db_run_as (run_as_id) REFERENCES db_run_as (id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT fk_db_run_as_permission_db_permission_list FOREIGN KEY fk_db_run_as_permission_db_permission_list (permission_id) REFERENCES db_permission_list (id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT unq_db_grap UNIQUE (group_id, run_as_id, permission_id) +CREATE TABLE DB_RUN_AS_PERMISSION( + ID INTEGER NOT NULL AUTO_INCREMENT, + GROUP_ID INTEGER NOT NULL, + RUN_AS_ID INTEGER NOT NULL, + PERMISSION_ID INTEGER NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_GROUP FOREIGN KEY FK_DB_RUN_AS_PERMISSION_DB_GROUP (GROUP_ID) REFERENCES DB_GROUP (ID) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_RUN_AS FOREIGN KEY FK_DB_RUN_AS_PERMISSION_DB_RUN_AS (RUN_AS_ID) REFERENCES DB_RUN_AS (ID) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY FK_DB_RUN_AS_PERMISSION_DB_PERMISSION_LIST (PERMISSION_ID) REFERENCES DB_PERMISSION_LIST (ID) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT UNQ_DB_GRAP UNIQUE (GROUP_ID, RUN_AS_ID, PERMISSION_ID) ); ---system permissions -insert into db_permission_list (name, permission_type) values ('ADD USER','S'); -insert into db_permission_list (name, permission_type) values ('EDIT USER','S'); -insert into db_permission_list (name, permission_type) values ('DELETE USER','S'); +--SYSTEM PERMISSIONS +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ADD USER','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('EDIT USER','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE USER','S'); -insert into db_permission_list (name, permission_type) values ('ADD GROUP','S'); -insert into db_permission_list (name, permission_type) values ('EDIT GROUP','S'); -insert into db_permission_list (name, permission_type) values ('DELETE GROUP','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ADD GROUP','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('EDIT GROUP','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE GROUP','S'); -insert into db_permission_list (name, permission_type) values ('ADD USER TO GROUP','S'); -insert into db_permission_list (name, permission_type) values ('REMOVE USER FROM GROUP','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ADD USER TO GROUP','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('REMOVE USER FROM GROUP','S'); -insert into db_permission_list (name, permission_type) values ('ADD DRIVER','S'); -insert into db_permission_list (name, permission_type) values ('EDIT DRIVER','S'); -insert into db_permission_list (name, permission_type) values ('DELETE DRIVER','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ADD DRIVER','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('EDIT DRIVER','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE DRIVER','S'); -insert into db_permission_list (name, permission_type) values ('ADD DATABASE','S'); -insert into db_permission_list (name, permission_type) values ('EDIT DATABASE','S'); -insert into db_permission_list (name, permission_type) values ('DELETE DATABASE','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ADD DATABASE','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('EDIT DATABASE','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE DATABASE','S'); -insert into db_permission_list (name, permission_type) values ('GRANT PERMISSIONS FOR SYSTEM','S'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('GRANT PERMISSIONS FOR SYSTEM','S'); ---database permissions -insert into db_permission_list (name, permission_type) values ('ADD RUN-AS USER FOR DATABASE','D'); -insert into db_permission_list (name, permission_type) values ('EDIT RUN-AS USER FOR DATABASE','D'); -insert into db_permission_list (name, permission_type) values ('DELETE RUN-AS USER FOR DATABASE','D'); -insert into db_permission_list (name, permission_type) values ('GRANT PERMISSIONS FOR DATABASE','D'); +--DATABASE PERMISSIONS +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ADD RUN-AS USER FOR DATABASE','D'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('EDIT RUN-AS USER FOR DATABASE','D'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE RUN-AS USER FOR DATABASE','D'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('GRANT PERMISSIONS FOR DATABASE','D'); ---run-as permissions -insert into db_permission_list (name, permission_type) values ('SUBMIT JOB FOR RUN-AS','R'); -insert into db_permission_list (name, permission_type) values ('REVIEW JOB FOR RUN-AS','R'); -insert into db_permission_list (name, permission_type) values ('APPROVE JOB FOR RUN-AS','R'); -insert into db_permission_list (name, permission_type) values ('DELETE UNAPPROVED JOB FOR RUN-AS','R'); -insert into db_permission_list (name, permission_type) values ('DELETE APPROVED JOB FOR RUN-AS','R'); -insert into db_permission_list (name, permission_type) values ('DEACTIVATE APPROVED JOB FOR RUN-AS','R'); -insert into db_permission_list (name, permission_type) values ('ACTIVATE APPROVED JOB FOR RUN-AS','R'); -insert into db_permission_list (name, permission_type) values ('RUN APPROVED JOB FOR RUN-AS','R'); -insert into db_permission_list (name, permission_type) values ('DOES NOT REQUIRE REVIEW FOR RUN-AS','R'); -insert into db_permission_list (name, permission_type) values ('DOES NOT REQUIRE APPROVAL FOR RUN-AS','R'); -insert into db_permission_list (name, permission_type) values ('GRANT PERMISSIONS FOR RUN-AS','R'); +--RUN-AS PERMISSIONS +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('SUBMIT JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('REVIEW JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('APPROVE JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE UNAPPROVED JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DELETE APPROVED JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DEACTIVATE APPROVED JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('ACTIVATE APPROVED JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('RUN APPROVED JOB FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DOES NOT REQUIRE REVIEW FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('DOES NOT REQUIRE APPROVAL FOR RUN-AS','R'); +INSERT INTO DB_PERMISSION_LIST (NAME, PERMISSION_TYPE) VALUES ('GRANT PERMISSIONS FOR RUN-AS','R'); Modified: trunk/drawbridge/src/sql/example_data.sql =================================================================== --- trunk/drawbridge/src/sql/example_data.sql 2008-03-26 02:10:26 UTC (rev 22) +++ trunk/drawbridge/src/sql/example_data.sql 2008-03-28 01:54:01 UTC (rev 23) @@ -1,17 +1,17 @@ -INSERT INTO db_driver (id,name,class_name) VALUES (-1,'Hsqldb','org.hsqldb.jdbcDriver'); -INSERT INTO db_driver (id,name,class_name) VALUES (-2,'MySQL','com.mysql.jdbc.Driver'); +INSERT INTO DB_DRIVER (ID,NAME,CLASS_NAME) VALUES (-1,'Hsqldb','org.hsqldb.jdbcDriver'); +INSERT INTO DB_DRIVER (ID,NAME,CLASS_NAME) VALUES (-2,'MySQL','com.mysql.jdbc.Driver'); -INSERT INTO db_database (id,name,jdbc_url,driver_id) VALUES (-1,'In memory','jdbc:hsqldb:.',-1); -INSERT INTO db_database (id,name,jdbc_url,driver_id) VALUES (-2,'local mysql','jdbc:mysql://localhost:3306/drawbridge',-2); +INSERT INTO DB_DATABASE (ID,NAME,JDBC_URL,DRIVER_ID) VALUES (-1,'In memory','jdbc:hsqldb:.',-1); +INSERT INTO DB_DATABASE (ID,NAME,JDBC_URL,DRIVER_ID) VALUES (-2,'local mysql','jdbc:mysql://localhost:3306/drawbridge',-2); -INSERT INTO db_run_as (id,user_name,enc_password,database_id) VALUES (-1,'sa','',-1); -INSERT INTO db_run_as (id,user_name,enc_password,database_id) VALUES (-2,'drawbridge_user','drawbridge',-2); +INSERT INTO DB_RUN_AS (ID,USER_NAME,ENC_PASSWORD,DATABASE_ID) VALUES (-1,'sa','',-1); +INSERT INTO DB_RUN_AS (ID,USER_NAME,ENC_PASSWORD,DATABASE_ID) VALUES (-2,'drawbridge_user','drawbridge',-2); -INSERT INTO db_user (id,user_name,first_name,last_name,active) VALUES (-1,'adam','Adam','Cresse','Y'); -INSERT INTO db_user (id,user_name,first_name,last_name,active) VALUES (-2,'ben','Ben','La Monica','Y'); +INSERT INTO DB_USER (ID,USER_NAME,FIRST_NAME,LAST_NAME,ACTIVE) VALUES (-1,'adam','Adam','Cresse','Y'); +INSERT INTO DB_USER (ID,USER_NAME,FIRST_NAME,LAST_NAME,ACTIVE) VALUES (-2,'ben','Ben','La Monica','Y'); -INSERT INTO db_group (id,group_name) VALUES (-1,'devs'); +INSERT INTO DB_GROUP (ID,GROUP_NAME) VALUES (-1,'devs'); -INSERT INTO db_user_group (user_id,group_id) VALUES (-1,-1); +INSERT INTO DB_USER_GROUP (USER_ID,GROUP_ID) VALUES (-1,-1); -INSERT INTO db_job (id,name,run_as_id,query,submitted_by,submitted_on,reviewed_by,reviewed_on,approved_by,approved_on,active,schedule) VALUES (-1,'all jobs',-2,'select * from db_job',-1,{d '2008-03-19'},null,null,null,null,'Y',null); \ No newline at end of file +INSERT INTO DB_JOB (ID,NAME,RUN_AS_ID,QUERY,SUBMITTED_BY,SUBMITTED_ON,REVIEWED_BY,REVIEWED_ON,APPROVED_BY,APPROVED_ON,ACTIVE,SCHEDULE) VALUES (-1,'all jobs',-2,'SELECT * FROM DB_JOB',-1,{d '2008-03-19'},null,null,null,null,'Y',null); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bla...@us...> - 2008-03-26 02:10:28
|
Revision: 22 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=22&view=rev Author: blamonica Date: 2008-03-25 19:10:26 -0700 (Tue, 25 Mar 2008) Log Message: ----------- Enable downloading of the dependencies. Modified Paths: -------------- trunk/drawbridge/build.xml Modified: trunk/drawbridge/build.xml =================================================================== --- trunk/drawbridge/build.xml 2008-03-26 02:02:16 UTC (rev 21) +++ trunk/drawbridge/build.xml 2008-03-26 02:10:26 UTC (rev 22) @@ -16,7 +16,7 @@ <delete dir="target"/> </target> - <target name="get.dependencies" if="${env.LOCAL_DEPLOY}"> + <target name="get.dependencies" unless="${env.LOCAL_DEPLOY}"> <get-dependency dep="${jar.asm.attrs}"/> <get-dependency dep="${jar.asm}"/> <get-dependency dep="${jar.cglib}"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bla...@us...> - 2008-03-26 02:02:27
|
Revision: 21 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=21&view=rev Author: blamonica Date: 2008-03-25 19:02:16 -0700 (Tue, 25 Mar 2008) Log Message: ----------- JAR_REPO done. Generate JAR and WAR files. Please set the JAR_REPO environment variable now and run package and it will fill in your LIB directory. Modified Paths: -------------- trunk/drawbridge/.classpath trunk/drawbridge/build.xml trunk/drawbridge/src/java/drawbridge-core-spring.xml trunk/drawbridge/src/test/net/sf/drawbridge/controller/job/AddOrEditJobSubmitControllerTest.java Added Paths: ----------- trunk/drawbridge/master.dependencies.properties Modified: trunk/drawbridge/.classpath =================================================================== --- trunk/drawbridge/.classpath 2008-03-21 01:10:45 UTC (rev 20) +++ trunk/drawbridge/.classpath 2008-03-26 02:02:16 UTC (rev 21) @@ -8,7 +8,28 @@ <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/> - <classpathentry kind="var" path="JAR_REPO/misc/jmock-1.0.1.jar"/> - <classpathentry kind="var" path="JAR_REPO/spring-framework-2.5.1/dist/modules/spring-test.jar"/> - <classpathentry kind="output" path="target/classes"/> + <classpathentry kind="var" path="JAR_REPO/asm/asm.jar"/> + <classpathentry kind="var" path="JAR_REPO/asm/asm-attrs.jar"/> + <classpathentry kind="var" path="JAR_REPO/cglib/cglib-2.1.3.jar"/> + <classpathentry kind="var" path="JAR_REPO/commons/commons-beanutils.jar"/> + <classpathentry kind="var" path="JAR_REPO/commons/commons-codec.jar"/> + <classpathentry kind="var" path="JAR_REPO/commons/commons-collections.jar"/> + <classpathentry kind="var" path="JAR_REPO/commons/commons-lang.jar"/> + <classpathentry kind="var" path="JAR_REPO/commons/commons-logging.jar"/> + <classpathentry kind="var" path="JAR_REPO/displaytag/displaytag-1.1.1.jar"/> + <classpathentry kind="var" path="JAR_REPO/dom4j/dom4j-1.6.1.jar"/> + <classpathentry kind="var" path="JAR_REPO/hibernate/hibernate-3.2.6.jar"/> + <classpathentry kind="var" path="JAR_REPO/hsqldb/hsqldb-1.9.0-beta.jar"/> + <classpathentry kind="var" path="JAR_REPO/jmock/jmock-1.0.1.jar"/> + <classpathentry kind="var" path="JAR_REPO/jstl/jstl.jar"/> + <classpathentry kind="var" path="JAR_REPO/jta/jta.jar"/> + <classpathentry kind="var" path="JAR_REPO/junit/junit-4.4.jar"/> + <classpathentry kind="var" path="JAR_REPO/mysql/mysql-connector-java-5.1.5-bin.jar"/> + <classpathentry kind="var" path="JAR_REPO/quartz/quartz-all-1.6.0.jar"/> + <classpathentry kind="var" path="JAR_REPO/servlet/servlet-api.jar"/> + <classpathentry kind="var" path="JAR_REPO/spring/spring-2.5.2.jar"/> + <classpathentry kind="var" path="JAR_REPO/standard/standard.jar"/> + <classpathentry kind="var" path="JAR_REPO/spring/spring-webmvc-2.5.2.jar"/> + <classpathentry kind="var" path="JAR_REPO/spring/spring-test-2.5.2.jar"/> + <classpathentry kind="output" path="eclipse-target/classes"/> </classpath> Modified: trunk/drawbridge/build.xml =================================================================== --- trunk/drawbridge/build.xml 2008-03-21 01:10:45 UTC (rev 20) +++ trunk/drawbridge/build.xml 2008-03-26 02:02:16 UTC (rev 21) @@ -1,38 +1,92 @@ <project name="Drawbridge" default="all"> - - <property name="LIB_DIR" value="WebContent/WEB-INF/lib"/> - <property name="SERVLET_DIR" value="/opt/tomcat6/lib"/> + <taskdef resource="net/sf/antcontrib/antcontrib.properties"/> + + <property file="master.dependencies.properties"/> + <target name="all" depends="clean,compile,unit-test,package"/> + <property environment="env"/> + + <target name="set.jar_repo.property" unless="${env.JAR_REPO}"> + <fail message="JAR_REPO environment variable not set!"/> + </target> + <target name="clean"> <delete dir="target"/> </target> + <target name="get.dependencies" if="${env.LOCAL_DEPLOY}"> + <get-dependency dep="${jar.asm.attrs}"/> + <get-dependency dep="${jar.asm}"/> + <get-dependency dep="${jar.cglib}"/> + <get-dependency dep="${jar.commons.beanutils}"/> + <get-dependency dep="${jar.commons.codec}"/> + <get-dependency dep="${jar.commons.collections}"/> + <get-dependency dep="${jar.commons.lang}"/> + <get-dependency dep="${jar.commons.logging}"/> + <get-dependency dep="${jar.displaytag}"/> + <get-dependency dep="${jar.dom4j}"/> + <get-dependency dep="${jar.hibernate}"/> + <get-dependency dep="${jar.hsqldb}"/> + <get-dependency dep="${jar.jmock}"/> + <get-dependency dep="${jar.jstl}"/> + <get-dependency dep="${jar.jta}"/> + <get-dependency dep="${jar.junit}"/> + <get-dependency dep="${jar.mysql}"/> + <get-dependency dep="${jar.quartz}"/> + <get-dependency dep="${jar.servlet}"/> + <get-dependency dep="${jar.spring}"/> + <get-dependency dep="${jar.spring.web}"/> + <get-dependency dep="${jar.spring.test}"/> + <get-dependency dep="${jar.standard}"/> + </target> + + <macrodef name="get-dependency"> + <attribute name="dep"/> + <sequential> + <if> + <available file="${env.JAR_REPO}/@{dep}"/> + <then> + </then> + <else> + <mkdir dir="${env.JAR_REPO}/@{dep}"/> + <delete dir="${env.JAR_REPO}/@{dep}"/> + </else> + </if> + <get dest="${env.JAR_REPO}/@{dep}" src="http://www.pojo.us/drawbridge/@{dep}" usetimestamp="true" verbose="off"/> + </sequential> + </macrodef> + <path id="classpath.compile"> - <pathelement path="${SERVLET_DIR}/servlet-api.jar"/> - <pathelement path="${LIB_DIR}/commons-beanutils.jar"/> - <pathelement path="${LIB_DIR}/commons-collections.jar"/> - <pathelement path="${LIB_DIR}/commons-lang.jar"/> - <pathelement path="${LIB_DIR}/commons-logging.jar"/> - <pathelement path="${LIB_DIR}/displaytag-1.1.1.jar"/> - <pathelement path="${LIB_DIR}/dwr.jar"/> - <pathelement path="${LIB_DIR}/jstl.jar"/> - <pathelement path="${LIB_DIR}/jta.jar"/> - <pathelement path="${LIB_DIR}/quartz-all-1.6.0.jar"/> - <pathelement path="${LIB_DIR}/spring-webmvc.jar"/> - <pathelement path="${LIB_DIR}/spring.jar"/> - <pathelement path="${LIB_DIR}/standard.jar"/> + <pathelement path="${env.JAR_REPO}/${jar.asm.attrs}"/> + <pathelement path="${env.JAR_REPO}/${jar.asm}"/> + <pathelement path="${env.JAR_REPO}/${jar.cglib}"/> + <pathelement path="${env.JAR_REPO}/${jar.commons.beanutils}"/> + <pathelement path="${env.JAR_REPO}/${jar.commons.codec}"/> + <pathelement path="${env.JAR_REPO}/${jar.commons.collections}"/> + <pathelement path="${env.JAR_REPO}/${jar.commons.lang}"/> + <pathelement path="${env.JAR_REPO}/${jar.commons.logging}"/> + <pathelement path="${env.JAR_REPO}/${jar.displaytag}"/> + <pathelement path="${env.JAR_REPO}/${jar.dom4j}"/> + <pathelement path="${env.JAR_REPO}/${jar.hibernate}"/> + <pathelement path="${env.JAR_REPO}/${jar.jstl}"/> + <pathelement path="${env.JAR_REPO}/${jar.jta}"/> + <pathelement path="${env.JAR_REPO}/${jar.quartz}"/> + <pathelement path="${env.JAR_REPO}/${jar.servlet}"/> + <pathelement path="${env.JAR_REPO}/${jar.spring}"/> + <pathelement path="${env.JAR_REPO}/${jar.spring.web}"/> + <pathelement path="${env.JAR_REPO}/${jar.standard}"/> </path> <path id="classpath.unit-test"> - <pathelement path="${LIB_DIR}/junit-4.4.jar"/> - <pathelement path="${LIB_DIR}/jmock-1.0.1.jar"/> - <pathelement path="${LIB_DIR}/spring-test.jar"/> - <pathelement path="${LIB_DIR}/hsqldb.jar"/> + <pathelement path="${env.JAR_REPO}/${jar.hsqldb}"/> + <pathelement path="${env.JAR_REPO}/${jar.jmock}"/> + <pathelement path="${env.JAR_REPO}/${jar.junit}"/> + <pathelement path="${env.JAR_REPO}/${jar.spring.test}"/> </path> - <target name="compile"> + <target name="compile" depends="get.dependencies"> <mkdir dir="target"/> <mkdir dir="target/classes"/> <javac destdir="target/classes" srcdir="src/java" includes="**/*.java"> @@ -40,6 +94,10 @@ <path refid="classpath.compile"/> </classpath> </javac> + + <copy todir="target/classes"> + <fileset dir="src/java" includes="**/*"/> + </copy> </target> <target name="unit-test" depends="compile"> @@ -52,6 +110,10 @@ </classpath> </javac> + <copy todir="target/test-classes"> + <fileset dir="src/test" includes="**/*" excludes="**/*.java"/> + </copy> + <junit showoutput="false" haltonfailure="true" haltonerror="true" fork="false"> <batchtest> <fileset dir="target/test-classes" includes="**/*Test.class" excludes="**/Abstract*"/> @@ -66,6 +128,41 @@ </junit> </target> - <target name="package" depends="compile"/> + <target name="package" depends="compile"> + <jar jarfile="target/drawbridge.jar" compress="true"> + <fileset dir="target/classes" includes="**/*"/> + <fileset dir="target/classes" includes="**/*.xml"/> + <fileset dir="src/java" includes="**/*.java"/> + </jar> + <copy flatten="true" failonerror="true" overwrite="true" todir="${basedir}/WebContent/WEB-INF/lib"> + <resources> + <file file="${env.JAR_REPO}/${jar.asm.attrs}"/> + <file file="${env.JAR_REPO}/${jar.asm}"/> + <file file="${env.JAR_REPO}/${jar.cglib}"/> + <file file="${env.JAR_REPO}/${jar.commons.beanutils}"/> + <file file="${env.JAR_REPO}/${jar.commons.codec}"/> + <file file="${env.JAR_REPO}/${jar.commons.collections}"/> + <file file="${env.JAR_REPO}/${jar.commons.lang}"/> + <file file="${env.JAR_REPO}/${jar.commons.logging}"/> + <file file="${env.JAR_REPO}/${jar.displaytag}"/> + <file file="${env.JAR_REPO}/${jar.dom4j}"/> + <file file="${env.JAR_REPO}/${jar.hibernate}"/> + <file file="${env.JAR_REPO}/${jar.jstl}"/> + <file file="${env.JAR_REPO}/${jar.jta}"/> + <file file="${env.JAR_REPO}/${jar.quartz}"/> + <file file="${env.JAR_REPO}/${jar.servlet}"/> + <file file="${env.JAR_REPO}/${jar.spring}"/> + <file file="${env.JAR_REPO}/${jar.spring.web}"/> + <file file="${env.JAR_REPO}/${jar.standard}"/> + </resources> + </copy> + + <war warfile="target/drawbridge.war" webxml="WebContent/WEB-INF/web.xml" compress="true"> + <zipfileset dir="WebContent" includes="**/*" /> + <zipfileset file="target/drawbridge.jar" prefix="WEB-INF/lib"/> + </war> + + </target> + </project> \ No newline at end of file Added: trunk/drawbridge/master.dependencies.properties =================================================================== --- trunk/drawbridge/master.dependencies.properties (rev 0) +++ trunk/drawbridge/master.dependencies.properties 2008-03-26 02:02:16 UTC (rev 21) @@ -0,0 +1,24 @@ +jar.asm.attrs=asm/asm-attrs.jar +jar.asm=asm/asm.jar +jar.cglib=cglib/cglib-2.1.3.jar +jar.commons.beanutils=commons/commons-beanutils.jar +jar.commons.codec=commons/commons-codec.jar +jar.commons.collections=commons/commons-collections.jar +jar.commons.lang=commons/commons-lang.jar +jar.commons.logging=commons/commons-logging.jar +jar.displaytag=displaytag/displaytag-1.1.1.jar +jar.dom4j=dom4j/dom4j-1.6.1.jar +jar.dwr=dwr/dwr-2.0.3.jar +jar.hibernate=hibernate/hibernate-3.2.6.jar +jar.hsqldb=hsqldb/hsqldb-1.9.0-beta.jar +jar.jmock=jmock/jmock-1.0.1.jar +jar.jstl=jstl/jstl.jar +jar.jta=jta/jta.jar +jar.junit=junit/junit-4.4.jar +jar.mysql=mysql/mysql-connector-java-5.1.5-bin.jar +jar.quartz=quartz/quartz-all-1.6.0.jar +jar.servlet=servlet/servlet-api.jar +jar.spring=spring/spring-2.5.2.jar +jar.spring.web=spring/spring-webmvc-2.5.2.jar +jar.spring.test=spring/spring-test-2.5.2.jar +jar.standard=standard/standard.jar \ No newline at end of file Modified: trunk/drawbridge/src/java/drawbridge-core-spring.xml =================================================================== --- trunk/drawbridge/src/java/drawbridge-core-spring.xml 2008-03-21 01:10:45 UTC (rev 20) +++ trunk/drawbridge/src/java/drawbridge-core-spring.xml 2008-03-26 02:02:16 UTC (rev 21) @@ -22,18 +22,6 @@ <constructor-arg ref="JobExecuter"/> </bean> - <bean id="dummyDatabase" class="net.sf.drawbridge.domain.DummyDatabase"> - <property name="dataSource"> - <bean class="org.springframework.jdbc.datasource.SingleConnectionDataSource"> - <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> - <property name="url" value="jdbc:hsqldb:."/> - <property name="username" value="sa"/> - <property name="password" value=""/> - <property name="suppressClose" value="true"/> - </bean> - </property> - </bean> - <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="autoStartup" value="true"/> <property name="globalJobListeners"> Modified: trunk/drawbridge/src/test/net/sf/drawbridge/controller/job/AddOrEditJobSubmitControllerTest.java =================================================================== --- trunk/drawbridge/src/test/net/sf/drawbridge/controller/job/AddOrEditJobSubmitControllerTest.java 2008-03-21 01:10:45 UTC (rev 20) +++ trunk/drawbridge/src/test/net/sf/drawbridge/controller/job/AddOrEditJobSubmitControllerTest.java 2008-03-26 02:02:16 UTC (rev 21) @@ -56,7 +56,7 @@ Job job=new Job(null,"name",account,"query",null,null,null,null,null,null,true,"schedule"); mockDrawbridgeService.expects(once()).method("addJob").with(new JobConstraint(job)); mockDrawbridgeService.expects(once()).method("getRunAsAccount").with(eq(1)).will(returnValue(account)); - mockDrawbridgeService.expects(once()).method("getUser").with(eq(new Integer(0))).will(returnValue(user)); + mockDrawbridgeService.expects(once()).method("getUser").with(eq(new Integer(-1))).will(returnValue(user)); MockHttpServletRequest mockRequest=new MockHttpServletRequest(); //mockRequest.setParameter("jobId", "1"); mockRequest.setParameter("name", "name"); @@ -80,7 +80,7 @@ Job job=new Job(1L,"name",account,"query",null,null,null,null,null,null,true,"schedule"); mockDrawbridgeService.expects(once()).method("updateJob").with(new JobConstraint(job)); mockDrawbridgeService.expects(once()).method("getRunAsAccount").with(eq(1)).will(returnValue(account)); - mockDrawbridgeService.expects(once()).method("getUser").with(eq(new Integer(0))).will(returnValue(user)); + mockDrawbridgeService.expects(once()).method("getUser").with(eq(new Integer(-1))).will(returnValue(user)); MockHttpServletRequest mockRequest=new MockHttpServletRequest(); mockRequest.setParameter("jobId", "1"); @@ -107,7 +107,7 @@ RuntimeException ex=new RuntimeException("The Spanish Inquisition"); mockDrawbridgeService.expects(once()).method("addJob").with(new JobConstraint(job)).will(throwException(ex)); mockDrawbridgeService.expects(once()).method("getRunAsAccount").with(eq(1)).will(returnValue(account)); - mockDrawbridgeService.expects(once()).method("getUser").with(eq(new Integer(0))).will(returnValue(user)); + mockDrawbridgeService.expects(once()).method("getUser").with(eq(new Integer(-1))).will(returnValue(user)); MockHttpServletRequest mockRequest=new MockHttpServletRequest(); //mockRequest.setParameter("jobId", "1"); @@ -139,7 +139,7 @@ RuntimeException ex=new RuntimeException("The Spanish Inquisition"); mockDrawbridgeService.expects(once()).method("updateJob").with(new JobConstraint(job)).will(throwException(ex)); mockDrawbridgeService.expects(once()).method("getRunAsAccount").with(eq(1)).will(returnValue(account)); - mockDrawbridgeService.expects(once()).method("getUser").with(eq(new Integer(0))).will(returnValue(user)); + mockDrawbridgeService.expects(once()).method("getUser").with(eq(new Integer(-1))).will(returnValue(user)); MockHttpServletRequest mockRequest=new MockHttpServletRequest(); mockRequest.setParameter("jobId", "1"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-03-21 01:11:02
|
Revision: 20 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=20&view=rev Author: acresse Date: 2008-03-20 18:10:45 -0700 (Thu, 20 Mar 2008) Log Message: ----------- example data and fix adding jobs Modified Paths: -------------- trunk/drawbridge/src/java/net/sf/drawbridge/controller/job/AddOrEditJobSubmitController.java trunk/drawbridge/src/java/net/sf/drawbridge/controller/job/RunJobController.java Added Paths: ----------- trunk/drawbridge/src/sql/example_data.sql Modified: trunk/drawbridge/src/java/net/sf/drawbridge/controller/job/AddOrEditJobSubmitController.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/controller/job/AddOrEditJobSubmitController.java 2008-03-20 01:57:45 UTC (rev 19) +++ trunk/drawbridge/src/java/net/sf/drawbridge/controller/job/AddOrEditJobSubmitController.java 2008-03-21 01:10:45 UTC (rev 20) @@ -67,7 +67,7 @@ try{ RunAsAccount account = drawbridgeService.getRunAsAccount(new Integer(request.getParameter("runAsId"))); // TODO: get real user - User user = drawbridgeService.getUser(0); + User user = drawbridgeService.getUser(-1); job=new Job(null, name, account, @@ -92,7 +92,7 @@ try{ RunAsAccount account = drawbridgeService.getRunAsAccount(new Integer(request.getParameter("runAsId"))); // TODO: get real user - User user = drawbridgeService.getUser(0); + User user = drawbridgeService.getUser(-1); job=new Job(new Long(jobIdStr), name, account, Modified: trunk/drawbridge/src/java/net/sf/drawbridge/controller/job/RunJobController.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/controller/job/RunJobController.java 2008-03-20 01:57:45 UTC (rev 19) +++ trunk/drawbridge/src/java/net/sf/drawbridge/controller/job/RunJobController.java 2008-03-21 01:10:45 UTC (rev 20) @@ -29,15 +29,19 @@ protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mav = new ModelAndView("job/run"); - String jobIdStr=request.getParameter("jobId"); - Long jobId = new Long(jobIdStr); - mav.addObject("jobId",jobIdStr); - Job job = drawbridgeService.getJob(jobId); - RunAsAccount runAsAccount = job.getRunAsAccount(); - mav.addObject("runAs", runAsAccount); - mav.addObject("database", runAsAccount.getDatabase()); - mav.addObject("job", job); - mav.addObject("queryParams", drawbridgeService.getQueryParams(job.getQuery(),false)); + try{ + String jobIdStr=request.getParameter("jobId"); + Long jobId = new Long(jobIdStr); + mav.addObject("jobId",jobIdStr); + Job job = drawbridgeService.getJob(jobId); + RunAsAccount runAsAccount = job.getRunAsAccount(); + mav.addObject("runAs", runAsAccount); + mav.addObject("database", runAsAccount.getDatabase()); + mav.addObject("job", job); + mav.addObject("queryParams", drawbridgeService.getQueryParams(job.getQuery(),false)); + } catch(Exception ex){ + ex.printStackTrace(); + } return mav; } Added: trunk/drawbridge/src/sql/example_data.sql =================================================================== --- trunk/drawbridge/src/sql/example_data.sql (rev 0) +++ trunk/drawbridge/src/sql/example_data.sql 2008-03-21 01:10:45 UTC (rev 20) @@ -0,0 +1,17 @@ +INSERT INTO db_driver (id,name,class_name) VALUES (-1,'Hsqldb','org.hsqldb.jdbcDriver'); +INSERT INTO db_driver (id,name,class_name) VALUES (-2,'MySQL','com.mysql.jdbc.Driver'); + +INSERT INTO db_database (id,name,jdbc_url,driver_id) VALUES (-1,'In memory','jdbc:hsqldb:.',-1); +INSERT INTO db_database (id,name,jdbc_url,driver_id) VALUES (-2,'local mysql','jdbc:mysql://localhost:3306/drawbridge',-2); + +INSERT INTO db_run_as (id,user_name,enc_password,database_id) VALUES (-1,'sa','',-1); +INSERT INTO db_run_as (id,user_name,enc_password,database_id) VALUES (-2,'drawbridge_user','drawbridge',-2); + +INSERT INTO db_user (id,user_name,first_name,last_name,active) VALUES (-1,'adam','Adam','Cresse','Y'); +INSERT INTO db_user (id,user_name,first_name,last_name,active) VALUES (-2,'ben','Ben','La Monica','Y'); + +INSERT INTO db_group (id,group_name) VALUES (-1,'devs'); + +INSERT INTO db_user_group (user_id,group_id) VALUES (-1,-1); + +INSERT INTO db_job (id,name,run_as_id,query,submitted_by,submitted_on,reviewed_by,reviewed_on,approved_by,approved_on,active,schedule) VALUES (-1,'all jobs',-2,'select * from db_job',-1,{d '2008-03-19'},null,null,null,null,'Y',null); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bla...@us...> - 2008-03-20 01:57:51
|
Revision: 19 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=19&view=rev Author: blamonica Date: 2008-03-19 18:57:45 -0700 (Wed, 19 Mar 2008) Log Message: ----------- * Added JobDao Test * Added GroupDao test * Fixed Users and Groups not playing nicely. Updated Drawbridge to use Timestamps for the approval/submitted times instead of Dates. * Fixed getting a list of jobs using the databaseId (BUG Modified Paths: -------------- trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/HibernateGroupDaoImpl.java trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/HibernateJobDaoImpl.java trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/Group.hbm.xml trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/Job.hbm.xml trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/User.hbm.xml trunk/drawbridge/src/java/net/sf/drawbridge/vo/Group.java trunk/drawbridge/src/sql/create_drawbridge_schema.sql trunk/drawbridge/src/test/db.script trunk/drawbridge/src/test/net/sf/drawbridge/dao/DriverDaoTest.java trunk/drawbridge/src/test/net/sf/drawbridge/dao/RunAsAccountDaoTest.java Added Paths: ----------- trunk/drawbridge/src/test/net/sf/drawbridge/dao/GroupDaoTest.java trunk/drawbridge/src/test/net/sf/drawbridge/dao/JobDaoTest.java Modified: trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/HibernateGroupDaoImpl.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/HibernateGroupDaoImpl.java 2008-03-19 01:42:39 UTC (rev 18) +++ trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/HibernateGroupDaoImpl.java 2008-03-20 01:57:45 UTC (rev 19) @@ -17,8 +17,6 @@ */ package net.sf.drawbridge.dao.hibernate; -import java.util.List; - import net.sf.drawbridge.dao.GroupDao; import net.sf.drawbridge.vo.Group; Modified: trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/HibernateJobDaoImpl.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/HibernateJobDaoImpl.java 2008-03-19 01:42:39 UTC (rev 18) +++ trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/HibernateJobDaoImpl.java 2008-03-20 01:57:45 UTC (rev 19) @@ -35,7 +35,8 @@ @SuppressWarnings("unchecked") public List<Job> getJobsForDatabase(Integer databaseId) { DetachedCriteria criteria = DetachedCriteria.forClass(voClass); - criteria.add(Expression.eq("database.id", databaseId)); + criteria.createAlias("runAsAccount.database", "db"); + criteria.add(Expression.eq("db.id", databaseId)); criteria.addOrder(Order.asc("name")); return getHibernateTemplate().findByCriteria(criteria); } Modified: trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/Group.hbm.xml =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/Group.hbm.xml 2008-03-19 01:42:39 UTC (rev 18) +++ trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/Group.hbm.xml 2008-03-20 01:57:45 UTC (rev 19) @@ -11,9 +11,9 @@ <column name="GROUP_NAME"/> </property> - <set name="users" table="DB_USER_GROUP" fetch="join" inverse="true" lazy="false"> + <set name="users" table="DB_USER_GROUP" inverse="true" lazy="false"> <key column="GROUP_ID"/> - <many-to-many class="net.sf.drawbridge.vo.User" column="USER_ID"/> + <many-to-many class="net.sf.drawbridge.vo.User" unique="true" column="USER_ID"/> </set> </class> </hibernate-mapping> \ No newline at end of file Modified: trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/Job.hbm.xml =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/Job.hbm.xml 2008-03-19 01:42:39 UTC (rev 18) +++ trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/Job.hbm.xml 2008-03-20 01:57:45 UTC (rev 19) @@ -18,6 +18,10 @@ lazy="false" /> + <property name="query" type="string" length="1024" not-null="true"> + <column name="QUERY"/> + </property> + <many-to-one name="submittedBy" not-null="true" column="SUBMITTED_BY" class="net.sf.drawbridge.vo.User" @@ -25,7 +29,7 @@ lazy="false" /> - <property name="submittedOn" type="calendar_date" not-null="true"> + <property name="submittedOn" type="calendar" not-null="true"> <column name="SUBMITTED_ON"/> </property> @@ -36,7 +40,7 @@ lazy="false" /> - <property name="reviewedOn" type="calendar_date"> + <property name="reviewedOn" type="calendar"> <column name="REVIEWED_ON"/> </property> @@ -47,7 +51,7 @@ lazy="false" /> - <property name="approvedOn" type="calendar_date"> + <property name="approvedOn" type="calendar"> <column name="APPROVED_ON"/> </property> Modified: trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/User.hbm.xml =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/User.hbm.xml 2008-03-19 01:42:39 UTC (rev 18) +++ trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/hbm/User.hbm.xml 2008-03-20 01:57:45 UTC (rev 19) @@ -23,7 +23,7 @@ <column name="ACTIVE"/> </property> - <set name="groups" table="DB_USER_GROUP" fetch="join" lazy="false"> + <set name="groups" table="DB_USER_GROUP" lazy="false"> <key column="USER_ID"/> <many-to-many class="net.sf.drawbridge.vo.Group" column="GROUP_ID"/> </set> Modified: trunk/drawbridge/src/java/net/sf/drawbridge/vo/Group.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/vo/Group.java 2008-03-19 01:42:39 UTC (rev 18) +++ trunk/drawbridge/src/java/net/sf/drawbridge/vo/Group.java 2008-03-20 01:57:45 UTC (rev 19) @@ -60,9 +60,8 @@ @Override public int hashCode() { final int prime = 31; - int result = 1; + int result = super.hashCode(); result = prime * result + ((groupName == null) ? 0 : groupName.hashCode()); - result = prime * result + ((users == null) ? 0 : users.hashCode()); return result; } @@ -70,7 +69,7 @@ public boolean equals(Object obj) { if (this == obj) return true; - if (obj == null) + if (!super.equals(obj)) return false; if (getClass() != obj.getClass()) return false; @@ -80,11 +79,6 @@ return false; } else if (!groupName.equals(other.groupName)) return false; - if (users == null) { - if (other.users != null) - return false; - } else if (!users.equals(other.users)) - return false; return true; } Modified: trunk/drawbridge/src/sql/create_drawbridge_schema.sql =================================================================== --- trunk/drawbridge/src/sql/create_drawbridge_schema.sql 2008-03-19 01:42:39 UTC (rev 18) +++ trunk/drawbridge/src/sql/create_drawbridge_schema.sql 2008-03-20 01:57:45 UTC (rev 19) @@ -69,11 +69,11 @@ run_as_id INTEGER NOT NULL, query varchar(1024) NOT NULL, submitted_by INTEGER NOT NULL, - submitted_on DATE NOT NULL, + submitted_on TIMESTAMP NOT NULL, reviewed_by INTEGER, - reviewed_on DATE, + reviewed_on TIMESTAMP, approved_by INTEGER, - approved_on DATE, + approved_on TIMESTAMP, active varchar(1) NOT NULL, schedule varchar(128), PRIMARY KEY (id), Modified: trunk/drawbridge/src/test/db.script =================================================================== --- trunk/drawbridge/src/test/db.script 2008-03-19 01:42:39 UTC (rev 18) +++ trunk/drawbridge/src/test/db.script 2008-03-20 01:57:45 UTC (rev 19) @@ -1,24 +1,26 @@ +CREATE USER SA PASSWORD "" CREATE SCHEMA PUBLIC AUTHORIZATION DBA +SET SCHEMA PUBLIC CREATE MEMORY TABLE DB_USER(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 2) NOT NULL PRIMARY KEY,USER_NAME VARCHAR(16) NOT NULL,FIRST_NAME VARCHAR(32) NOT NULL,LAST_NAME VARCHAR(32) NOT NULL,ACTIVE VARCHAR(1) DEFAULT 'Y' NOT NULL,CONSTRAINT UNQ_DB_USER UNIQUE(USER_NAME)) CREATE MEMORY TABLE DB_GROUP(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 3) NOT NULL PRIMARY KEY,GROUP_NAME VARCHAR(16) NOT NULL,CONSTRAINT UNQ_DB_GROUP UNIQUE(GROUP_NAME)) -CREATE MEMORY TABLE DB_USER_GROUP(USER_ID INTEGER NOT NULL,GROUP_ID INTEGER NOT NULL,PRIMARY KEY(USER_ID,GROUP_ID),CONSTRAINT FK_DB_USER_GROUP_DB_USER FOREIGN KEY(USER_ID) REFERENCES DB_USER(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_USER_GROUP_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE) +CREATE MEMORY TABLE DB_USER_GROUP(USER_ID INTEGER NOT NULL,GROUP_ID INTEGER NOT NULL,PRIMARY KEY(USER_ID,GROUP_ID),CONSTRAINT FK_DB_USER_GROUP_DB_USER FOREIGN KEY(USER_ID) REFERENCES PUBLIC.DB_USER(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_USER_GROUP_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE) CREATE MEMORY TABLE DB_DRIVER(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR(32) NOT NULL,CLASS_NAME VARCHAR(128) NOT NULL,CONSTRAINT UNQ_DB_DRIVER UNIQUE(NAME)) -CREATE MEMORY TABLE DB_DATABASE(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR(32) NOT NULL,JDBC_URL VARCHAR(128) NOT NULL,DRIVER_ID INTEGER NOT NULL,CONSTRAINT FK_DB_DATABASE_DB_DRIVER FOREIGN KEY(DRIVER_ID) REFERENCES DB_DRIVER(ID),CONSTRAINT UNQ_DB_DATABASE UNIQUE(NAME)) -CREATE MEMORY TABLE DB_RUN_AS(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,USER_NAME VARCHAR(16) NOT NULL,ENC_PASSWORD VARCHAR(32) NOT NULL,DATABASE_ID INTEGER NOT NULL,CONSTRAINT FK_DB_RUN_AS_DB_DATABASE FOREIGN KEY(DATABASE_ID) REFERENCES DB_DATABASE(ID),CONSTRAINT UNQ_DB_RUN_AS UNIQUE(USER_NAME,DATABASE_ID)) -CREATE MEMORY TABLE DB_JOB(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,NAME VARCHAR(64) NOT NULL,RUN_AS_ID INTEGER NOT NULL,SUBMITTED_BY INTEGER NOT NULL,SUBMITTED_ON DATE NOT NULL,REVIEWED_BY INTEGER,REVIEWED_ON DATE,APPROVED_BY INTEGER,APPROVED_ON DATE,ACTIVE VARCHAR(1) NOT NULL,SCHEDULE VARCHAR(128),CONSTRAINT FK_DB_JOB_DB_RUN_AS FOREIGN KEY(RUN_AS_ID) REFERENCES DB_RUN_AS(ID),CONSTRAINT FK_DB_JOB_SUBMITTED_BY FOREIGN KEY(SUBMITTED_BY) REFERENCES DB_USER(ID),CONSTRAINT FK_DB_JOB_REVIEWED_BY FOREIGN KEY(REVIEWED_BY) REFERENCES DB_USER(ID),CONSTRAINT FK_DB_JOB_APPROVED_BY FOREIGN KEY(APPROVED_BY) REFERENCES DB_USER(ID),CONSTRAINT UNQ_DB_JOB UNIQUE(NAME),CONSTRAINT CHK_DB_JOB_ACTIVE CHECK(DB_JOB.ACTIVE IN ('Y','N'))) -CREATE MEMORY TABLE DB_PERMISSION_LIST(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 30) NOT NULL PRIMARY KEY,NAME VARCHAR(64) NOT NULL,PERMISSION_TYPE VARCHAR(1) NOT NULL,CONSTRAINT UNQ_DB_PERMISSION UNIQUE(NAME,PERMISSION_TYPE),CONSTRAINT CHK_DB_PERMISSION_LIST_PERMISSION_TYPE CHECK(DB_PERMISSION_LIST.PERMISSION_TYPE IN ('S','D','R'))) -CREATE MEMORY TABLE DB_SYSTEM_PERMISSION(GROUP_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,PRIMARY KEY(GROUP_ID,PERMISSION_ID),CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE) -CREATE MEMORY TABLE DB_DATABASE_PERMISSION(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,GROUP_ID INTEGER NOT NULL,DATABASE_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_DATABASE FOREIGN KEY(DATABASE_ID) REFERENCES DB_DATABASE(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT UNQ_DB_GRAP UNIQUE(GROUP_ID,DATABASE_ID,PERMISSION_ID)) -CREATE MEMORY TABLE DB_RUN_AS_PERMISSION(GROUP_ID INTEGER NOT NULL,RUN_AS_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,PRIMARY KEY(GROUP_ID,RUN_AS_ID,PERMISSION_ID),CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_RUN_AS FOREIGN KEY(RUN_AS_ID) REFERENCES DB_RUN_AS(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE) +CREATE MEMORY TABLE DB_DATABASE(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR(32) NOT NULL,JDBC_URL VARCHAR(128) NOT NULL,DRIVER_ID INTEGER NOT NULL,CONSTRAINT FK_DB_DATABASE_DB_DRIVER FOREIGN KEY(DRIVER_ID) REFERENCES PUBLIC.DB_DRIVER(ID),CONSTRAINT UNQ_DB_DATABASE UNIQUE(NAME)) +CREATE MEMORY TABLE DB_RUN_AS(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,USER_NAME VARCHAR(16) NOT NULL,ENC_PASSWORD VARCHAR(32) NOT NULL,DATABASE_ID INTEGER NOT NULL,CONSTRAINT FK_DB_RUN_AS_DB_DATABASE FOREIGN KEY(DATABASE_ID) REFERENCES PUBLIC.DB_DATABASE(ID),CONSTRAINT UNQ_DB_RUN_AS UNIQUE(USER_NAME,DATABASE_ID)) +CREATE MEMORY TABLE DB_JOB(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 2) NOT NULL PRIMARY KEY,NAME VARCHAR(64) NOT NULL,RUN_AS_ID INTEGER NOT NULL,QUERY VARCHAR(1024) NOT NULL,SUBMITTED_BY INTEGER NOT NULL,SUBMITTED_ON TIMESTAMP NOT NULL,REVIEWED_BY INTEGER,REVIEWED_ON TIMESTAMP,APPROVED_BY INTEGER,APPROVED_ON TIMESTAMP,ACTIVE VARCHAR(1) NOT NULL,SCHEDULE VARCHAR(128),CONSTRAINT FK_DB_JOB_DB_RUN_AS FOREIGN KEY(RUN_AS_ID) REFERENCES PUBLIC.DB_RUN_AS(ID),CONSTRAINT FK_DB_JOB_SUBMITTED_BY FOREIGN KEY(SUBMITTED_BY) REFERENCES PUBLIC.DB_USER(ID),CONSTRAINT FK_DB_JOB_REVIEWED_BY FOREIGN KEY(REVIEWED_BY) REFERENCES PUBLIC.DB_USER(ID),CONSTRAINT FK_DB_JOB_APPROVED_BY FOREIGN KEY(APPROVED_BY) REFERENCES PUBLIC.DB_USER(ID),CONSTRAINT UNQ_DB_JOB UNIQUE(NAME),CONSTRAINT CHK_DB_JOB_ACTIVE CHECK((DB_JOB.ACTIVE) IN (('Y'),('N')))) +CREATE MEMORY TABLE DB_PERMISSION_LIST(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 30) NOT NULL PRIMARY KEY,NAME VARCHAR(64) NOT NULL,PERMISSION_TYPE VARCHAR(1) NOT NULL,CONSTRAINT UNQ_DB_PERMISSION UNIQUE(NAME,PERMISSION_TYPE),CONSTRAINT CHK_DB_PERMISSION_LIST_PERMISSION_TYPE CHECK((DB_PERMISSION_LIST.PERMISSION_TYPE) IN (('S'),('D'),('R')))) +CREATE MEMORY TABLE DB_SYSTEM_PERMISSION(GROUP_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,PRIMARY KEY(GROUP_ID,PERMISSION_ID),CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES PUBLIC.DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE) +CREATE MEMORY TABLE DB_DATABASE_PERMISSION(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,GROUP_ID INTEGER NOT NULL,DATABASE_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_DATABASE FOREIGN KEY(DATABASE_ID) REFERENCES PUBLIC.DB_DATABASE(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES PUBLIC.DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT UNQ_DB_GRAP UNIQUE(GROUP_ID,DATABASE_ID,PERMISSION_ID)) +CREATE MEMORY TABLE DB_RUN_AS_PERMISSION(GROUP_ID INTEGER NOT NULL,RUN_AS_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,PRIMARY KEY(GROUP_ID,RUN_AS_ID,PERMISSION_ID),CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_RUN_AS FOREIGN KEY(RUN_AS_ID) REFERENCES PUBLIC.DB_RUN_AS(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES PUBLIC.DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE) ALTER TABLE DB_USER ALTER COLUMN ID RESTART WITH 2 ALTER TABLE DB_GROUP ALTER COLUMN ID RESTART WITH 3 ALTER TABLE DB_DRIVER ALTER COLUMN ID RESTART WITH 1 ALTER TABLE DB_DATABASE ALTER COLUMN ID RESTART WITH 1 ALTER TABLE DB_RUN_AS ALTER COLUMN ID RESTART WITH 1 -ALTER TABLE DB_JOB ALTER COLUMN ID RESTART WITH 0 +ALTER TABLE DB_JOB ALTER COLUMN ID RESTART WITH 2 ALTER TABLE DB_PERMISSION_LIST ALTER COLUMN ID RESTART WITH 30 ALTER TABLE DB_DATABASE_PERMISSION ALTER COLUMN ID RESTART WITH 0 -CREATE USER SA PASSWORD "" +SET SCHEMA PUBLIC GRANT DBA TO SA SET WRITE_DELAY 10 SET SCHEMA PUBLIC @@ -34,6 +36,8 @@ INSERT INTO DB_DRIVER VALUES(0,'HSQLDB Driver','org.hsqldb.jdbcDriver') INSERT INTO DB_DATABASE VALUES(0,'HSQLDB In-Memory Database','jdbc:hsqldb:mem:.',0) INSERT INTO DB_RUN_AS VALUES(0,'sa','base64',0) +INSERT INTO DB_JOB VALUES(0,'Job 1',0,'select count(*) from dual',0,'2008-03-19 19:00:00.000000',1,'2008-03-20 18:00:00.000000',1,'2008-03-20 18:00:01.000000','Y','schedule') +INSERT INTO DB_JOB VALUES(1,'Job 2',0,'select count(*) from dual',0,'2008-03-19 19:00:00.000000',1,'2008-03-20 18:00:00.000000',1,'2008-03-20 18:00:01.000000','Y','schedule') INSERT INTO DB_PERMISSION_LIST VALUES(0,'ADD USER','S') INSERT INTO DB_PERMISSION_LIST VALUES(1,'EDIT USER','S') INSERT INTO DB_PERMISSION_LIST VALUES(2,'DELETE USER','S') Modified: trunk/drawbridge/src/test/net/sf/drawbridge/dao/DriverDaoTest.java =================================================================== --- trunk/drawbridge/src/test/net/sf/drawbridge/dao/DriverDaoTest.java 2008-03-19 01:42:39 UTC (rev 18) +++ trunk/drawbridge/src/test/net/sf/drawbridge/dao/DriverDaoTest.java 2008-03-20 01:57:45 UTC (rev 19) @@ -49,9 +49,9 @@ public void testShouldCreateNewDriverObject() throws Exception { TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); try { - Driver db = new Driver(null, "name", "class_name"); - target.create(db); - assertNotNull("id is still null", db.getId()); + Driver driver = new Driver(null, "name", "class_name"); + target.create(driver); + assertNotNull("id is still null", driver.getId()); } finally { txManager.rollback(tx); } @@ -87,8 +87,8 @@ public void testShouldRetrieveAllObjectsFromDriver() throws Exception { TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); try { - Driver db = new Driver(null, "name", "class_name"); - target.create(db); + Driver driver = new Driver(null, "name", "class_name"); + target.create(driver); List<Driver> all = target.getAll(); assertEquals(2, all.size()); Added: trunk/drawbridge/src/test/net/sf/drawbridge/dao/GroupDaoTest.java =================================================================== --- trunk/drawbridge/src/test/net/sf/drawbridge/dao/GroupDaoTest.java (rev 0) +++ trunk/drawbridge/src/test/net/sf/drawbridge/dao/GroupDaoTest.java 2008-03-20 01:57:45 UTC (rev 19) @@ -0,0 +1,99 @@ +/* + * This file is part of DrawBridge. + * Copyright 2008 Ben La Monica + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation,Inc.,51 Franklin Street,Fifth Floor, Boston, MA 02110-1301, USA. + */ +package net.sf.drawbridge.dao; + +import java.util.List; + +import junit.framework.TestCase; +import net.sf.drawbridge.test.TestBeanFactory; +import net.sf.drawbridge.vo.Group; + +import org.springframework.transaction.TransactionStatus; +import org.springframework.transaction.support.AbstractPlatformTransactionManager; +import org.springframework.transaction.support.DefaultTransactionDefinition; + +public class GroupDaoTest extends TestCase { + + private GroupDao target; + + private AbstractPlatformTransactionManager txManager; + + protected void setUp() { + txManager = (AbstractPlatformTransactionManager) TestBeanFactory.getBean("TxManager"); + target = (GroupDao) TestBeanFactory.getBean("GroupDao"); + } + + public void testShouldGetGroupObject() throws Exception { + Group result = target.get(0); + assertNotNull("result is null", result); + assertEquals("id", new Integer(0), result.getId()); + assertEquals("group name", "Awesome", result.getGroupName()); + } + + public void testShouldCreateNewGroupObject() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + Group group = new Group(null, "a group name"); + target.create(group); + assertNotNull("id is still null", group.getId()); + } finally { + txManager.rollback(tx); + } + } + + public void testShouldSaveChangesToGroupObject() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + Group existing = target.get(0); + existing.setGroupName("a different name"); + target.update(existing); + + Group result = target.get(0); + assertEquals("a different name", result.getGroupName()); + } finally { + txManager.rollback(tx); + } + } + + public void testShouldDeleteObjectFromGroup() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + Group existing = target.get(0); + assertNotNull(existing); + target.delete(existing); + + assertNull("should be deleted", target.get(0)); + } finally { + txManager.rollback(tx); + } + } + + public void testShouldRetrieveAllObjectsFromGroup() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + List<Group> all = target.getAll(); + for (Group group : all) { + System.out.println(group); + } + assertEquals(3, all.size()); + } finally { + txManager.rollback(tx); + } + + } +} Added: trunk/drawbridge/src/test/net/sf/drawbridge/dao/JobDaoTest.java =================================================================== --- trunk/drawbridge/src/test/net/sf/drawbridge/dao/JobDaoTest.java (rev 0) +++ trunk/drawbridge/src/test/net/sf/drawbridge/dao/JobDaoTest.java 2008-03-20 01:57:45 UTC (rev 19) @@ -0,0 +1,124 @@ +/* + * This file is part of DrawBridge. + * Copyright 2008 Ben La Monica + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation,Inc.,51 Franklin Street,Fifth Floor, Boston, MA 02110-1301, USA. + */ +package net.sf.drawbridge.dao; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.List; + +import junit.framework.TestCase; +import net.sf.drawbridge.test.TestBeanFactory; +import net.sf.drawbridge.vo.Job; +import net.sf.drawbridge.vo.RunAsAccount; +import net.sf.drawbridge.vo.User; + +import org.springframework.transaction.TransactionStatus; +import org.springframework.transaction.support.AbstractPlatformTransactionManager; +import org.springframework.transaction.support.DefaultTransactionDefinition; + +public class JobDaoTest extends TestCase { + + private JobDao target; + + private UserDao userDao; + + private RunAsAccountDao runAsAccountDao; + + private AbstractPlatformTransactionManager txManager; + + protected void setUp() { + txManager = (AbstractPlatformTransactionManager) TestBeanFactory.getBean("TxManager"); + target = (JobDao) TestBeanFactory.getBean("JobDao"); + runAsAccountDao = (RunAsAccountDao) TestBeanFactory.getBean("RunAsAccountDao"); + userDao = (UserDao) TestBeanFactory.getBean("UserDao"); + } + + public void testShouldGetJobObject() throws Exception { + Job result = target.get(0L); + SimpleDateFormat df = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss"); + assertNotNull("result is null", result); + assertEquals("id", new Long(0), result.getId()); + assertEquals("name", "Job 1", result.getName()); + assertEquals("runAsAcount", new Integer(0), result.getRunAsAccount().getId()); + assertEquals("submittedBy", new Integer(0), result.getSubmittedBy().getId()); + assertEquals("submittedOn", "03-19-2008 19:00:00", df.format(result.getSubmittedOn().getTime())); + assertEquals("reviewedBy", new Integer(1), result.getReviewedBy().getId()); + assertEquals("reviewedOn", "03-20-2008 18:00:00", df.format(result.getReviewedOn().getTime())); + assertEquals("approvedBy", new Integer(1), result.getApprovedBy().getId()); + assertEquals("approvedOn", "03-20-2008 18:00:01", df.format(result.getApprovedOn().getTime())); + assertTrue("active", result.isActive()); + assertEquals("schedule", "schedule", result.getSchedule()); + } + + public void testShouldCreateNewJobObject() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + User submitter = userDao.get(0); + RunAsAccount account = runAsAccountDao.get(0); + Job job = new Job(null, "A new job", account, "select count(*) from dual", submitter, Calendar.getInstance(), null, null, null, null, true, "schedule"); + target.create(job); + assertNotNull("id is still null", job.getId()); + } finally { + txManager.rollback(tx); + } + } + + public void testShouldSaveChangesToJobObject() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + Job existing = target.get(0L); + existing.setName("a different name"); + target.update(existing); + + Job result = target.get(0L); + assertEquals("a different name", result.getName()); + } finally { + txManager.rollback(tx); + } + } + + public void testShouldDeleteObjectFromJob() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + Job existing = target.get(0L); + assertNotNull(existing); + target.delete(existing); + + assertNull("should be deleted", target.get(0L)); + } finally { + txManager.rollback(tx); + } + } + + public void testShouldRetrieveAllObjectsFromJob() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + List<Job> all = target.getAll(); + for (Job Job : all) { + System.out.println(Job); + } + assertEquals(2, all.size()); + } finally { + txManager.rollback(tx); + } + } + + public void testShouldRetrieveAllJobsBasedOnDatabaseId() throws Exception { + assertEquals(2, target.getJobsForDatabase(0).size()); + } +} Modified: trunk/drawbridge/src/test/net/sf/drawbridge/dao/RunAsAccountDaoTest.java =================================================================== --- trunk/drawbridge/src/test/net/sf/drawbridge/dao/RunAsAccountDaoTest.java 2008-03-19 01:42:39 UTC (rev 18) +++ trunk/drawbridge/src/test/net/sf/drawbridge/dao/RunAsAccountDaoTest.java 2008-03-20 01:57:45 UTC (rev 19) @@ -51,9 +51,9 @@ TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); try { RunAsAccount existing = target.get(0); - RunAsAccount db = new RunAsAccount(null, "temp_user", "temp_password", existing.getDatabase()); - target.create(db); - assertNotNull("id is still null", db.getId()); + RunAsAccount account = new RunAsAccount(null, "temp_user", "temp_password", existing.getDatabase()); + target.create(account); + assertNotNull("id is still null", account.getId()); } finally { txManager.rollback(tx); } @@ -90,8 +90,8 @@ TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); try { RunAsAccount existing = target.get(0); - RunAsAccount db = new RunAsAccount(null, "temp_user", "temp_password", existing.getDatabase()); - target.create(db); + RunAsAccount account = new RunAsAccount(null, "temp_user", "temp_password", existing.getDatabase()); + target.create(account); List<RunAsAccount> all = target.getAll(); assertEquals(2, all.size()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-03-19 01:42:43
|
Revision: 18 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=18&view=rev Author: acresse Date: 2008-03-18 18:42:39 -0700 (Tue, 18 Mar 2008) Log Message: ----------- unused dir Removed Paths: ------------- trunk/drawbridge-domain/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-03-19 01:06:03
|
Revision: 17 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=17&view=rev Author: acresse Date: 2008-03-18 18:05:12 -0700 (Tue, 18 Mar 2008) Log Message: ----------- updates after reverting back the split into components Modified Paths: -------------- trunk/drawbridge/.classpath trunk/drawbridge/src/test/db.script Property Changed: ---------------- trunk/drawbridge/ Property changes on: trunk/drawbridge ___________________________________________________________________ Name: svn:ignore + target Modified: trunk/drawbridge/.classpath =================================================================== --- trunk/drawbridge/.classpath 2008-03-18 12:01:47 UTC (rev 16) +++ trunk/drawbridge/.classpath 2008-03-19 01:05:12 UTC (rev 17) @@ -7,5 +7,8 @@ <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> + <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/> + <classpathentry kind="var" path="JAR_REPO/misc/jmock-1.0.1.jar"/> + <classpathentry kind="var" path="JAR_REPO/spring-framework-2.5.1/dist/modules/spring-test.jar"/> <classpathentry kind="output" path="target/classes"/> </classpath> Modified: trunk/drawbridge/src/test/db.script =================================================================== --- trunk/drawbridge/src/test/db.script 2008-03-18 12:01:47 UTC (rev 16) +++ trunk/drawbridge/src/test/db.script 2008-03-19 01:05:12 UTC (rev 17) @@ -1,17 +1,15 @@ -CREATE USER SA PASSWORD "" CREATE SCHEMA PUBLIC AUTHORIZATION DBA -SET SCHEMA PUBLIC CREATE MEMORY TABLE DB_USER(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 2) NOT NULL PRIMARY KEY,USER_NAME VARCHAR(16) NOT NULL,FIRST_NAME VARCHAR(32) NOT NULL,LAST_NAME VARCHAR(32) NOT NULL,ACTIVE VARCHAR(1) DEFAULT 'Y' NOT NULL,CONSTRAINT UNQ_DB_USER UNIQUE(USER_NAME)) CREATE MEMORY TABLE DB_GROUP(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 3) NOT NULL PRIMARY KEY,GROUP_NAME VARCHAR(16) NOT NULL,CONSTRAINT UNQ_DB_GROUP UNIQUE(GROUP_NAME)) -CREATE MEMORY TABLE DB_USER_GROUP(USER_ID INTEGER NOT NULL,GROUP_ID INTEGER NOT NULL,PRIMARY KEY(USER_ID,GROUP_ID),CONSTRAINT FK_DB_USER_GROUP_DB_USER FOREIGN KEY(USER_ID) REFERENCES PUBLIC.DB_USER(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_USER_GROUP_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE) +CREATE MEMORY TABLE DB_USER_GROUP(USER_ID INTEGER NOT NULL,GROUP_ID INTEGER NOT NULL,PRIMARY KEY(USER_ID,GROUP_ID),CONSTRAINT FK_DB_USER_GROUP_DB_USER FOREIGN KEY(USER_ID) REFERENCES DB_USER(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_USER_GROUP_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE) CREATE MEMORY TABLE DB_DRIVER(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR(32) NOT NULL,CLASS_NAME VARCHAR(128) NOT NULL,CONSTRAINT UNQ_DB_DRIVER UNIQUE(NAME)) -CREATE MEMORY TABLE DB_DATABASE(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR(32) NOT NULL,JDBC_URL VARCHAR(128) NOT NULL,DRIVER_ID INTEGER NOT NULL,CONSTRAINT FK_DB_DATABASE_DB_DRIVER FOREIGN KEY(DRIVER_ID) REFERENCES PUBLIC.DB_DRIVER(ID),CONSTRAINT UNQ_DB_DATABASE UNIQUE(NAME)) -CREATE MEMORY TABLE DB_RUN_AS(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,USER_NAME VARCHAR(16) NOT NULL,ENC_PASSWORD VARCHAR(32) NOT NULL,DATABASE_ID INTEGER NOT NULL,CONSTRAINT FK_DB_RUN_AS_DB_DATABASE FOREIGN KEY(DATABASE_ID) REFERENCES PUBLIC.DB_DATABASE(ID),CONSTRAINT UNQ_DB_RUN_AS UNIQUE(USER_NAME,DATABASE_ID)) -CREATE MEMORY TABLE DB_JOB(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,NAME VARCHAR(64) NOT NULL,RUN_AS_ID INTEGER NOT NULL,SUBMITTED_BY INTEGER NOT NULL,SUBMITTED_ON DATE NOT NULL,REVIEWED_BY INTEGER,REVIEWED_ON DATE,APPROVED_BY INTEGER,APPROVED_ON DATE,ACTIVE VARCHAR(1) NOT NULL,SCHEDULE VARCHAR(128),CONSTRAINT FK_DB_JOB_DB_RUN_AS FOREIGN KEY(RUN_AS_ID) REFERENCES PUBLIC.DB_RUN_AS(ID),CONSTRAINT FK_DB_JOB_SUBMITTED_BY FOREIGN KEY(SUBMITTED_BY) REFERENCES PUBLIC.DB_USER(ID),CONSTRAINT FK_DB_JOB_REVIEWED_BY FOREIGN KEY(REVIEWED_BY) REFERENCES PUBLIC.DB_USER(ID),CONSTRAINT FK_DB_JOB_APPROVED_BY FOREIGN KEY(APPROVED_BY) REFERENCES PUBLIC.DB_USER(ID),CONSTRAINT UNQ_DB_JOB UNIQUE(NAME),CONSTRAINT CHK_DB_JOB_ACTIVE CHECK((DB_JOB.ACTIVE) IN (('Y'),('N')))) -CREATE MEMORY TABLE DB_PERMISSION_LIST(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 30) NOT NULL PRIMARY KEY,NAME VARCHAR(64) NOT NULL,PERMISSION_TYPE VARCHAR(1) NOT NULL,CONSTRAINT UNQ_DB_PERMISSION UNIQUE(NAME,PERMISSION_TYPE),CONSTRAINT CHK_DB_PERMISSION_LIST_PERMISSION_TYPE CHECK((DB_PERMISSION_LIST.PERMISSION_TYPE) IN (('S'),('D'),('R')))) -CREATE MEMORY TABLE DB_SYSTEM_PERMISSION(GROUP_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,PRIMARY KEY(GROUP_ID,PERMISSION_ID),CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES PUBLIC.DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE) -CREATE MEMORY TABLE DB_DATABASE_PERMISSION(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,GROUP_ID INTEGER NOT NULL,DATABASE_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_DATABASE FOREIGN KEY(DATABASE_ID) REFERENCES PUBLIC.DB_DATABASE(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES PUBLIC.DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT UNQ_DB_GRAP UNIQUE(GROUP_ID,DATABASE_ID,PERMISSION_ID)) -CREATE MEMORY TABLE DB_RUN_AS_PERMISSION(GROUP_ID INTEGER NOT NULL,RUN_AS_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,PRIMARY KEY(GROUP_ID,RUN_AS_ID,PERMISSION_ID),CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES PUBLIC.DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_RUN_AS FOREIGN KEY(RUN_AS_ID) REFERENCES PUBLIC.DB_RUN_AS(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES PUBLIC.DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE) +CREATE MEMORY TABLE DB_DATABASE(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR(32) NOT NULL,JDBC_URL VARCHAR(128) NOT NULL,DRIVER_ID INTEGER NOT NULL,CONSTRAINT FK_DB_DATABASE_DB_DRIVER FOREIGN KEY(DRIVER_ID) REFERENCES DB_DRIVER(ID),CONSTRAINT UNQ_DB_DATABASE UNIQUE(NAME)) +CREATE MEMORY TABLE DB_RUN_AS(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,USER_NAME VARCHAR(16) NOT NULL,ENC_PASSWORD VARCHAR(32) NOT NULL,DATABASE_ID INTEGER NOT NULL,CONSTRAINT FK_DB_RUN_AS_DB_DATABASE FOREIGN KEY(DATABASE_ID) REFERENCES DB_DATABASE(ID),CONSTRAINT UNQ_DB_RUN_AS UNIQUE(USER_NAME,DATABASE_ID)) +CREATE MEMORY TABLE DB_JOB(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,NAME VARCHAR(64) NOT NULL,RUN_AS_ID INTEGER NOT NULL,SUBMITTED_BY INTEGER NOT NULL,SUBMITTED_ON DATE NOT NULL,REVIEWED_BY INTEGER,REVIEWED_ON DATE,APPROVED_BY INTEGER,APPROVED_ON DATE,ACTIVE VARCHAR(1) NOT NULL,SCHEDULE VARCHAR(128),CONSTRAINT FK_DB_JOB_DB_RUN_AS FOREIGN KEY(RUN_AS_ID) REFERENCES DB_RUN_AS(ID),CONSTRAINT FK_DB_JOB_SUBMITTED_BY FOREIGN KEY(SUBMITTED_BY) REFERENCES DB_USER(ID),CONSTRAINT FK_DB_JOB_REVIEWED_BY FOREIGN KEY(REVIEWED_BY) REFERENCES DB_USER(ID),CONSTRAINT FK_DB_JOB_APPROVED_BY FOREIGN KEY(APPROVED_BY) REFERENCES DB_USER(ID),CONSTRAINT UNQ_DB_JOB UNIQUE(NAME),CONSTRAINT CHK_DB_JOB_ACTIVE CHECK(DB_JOB.ACTIVE IN ('Y','N'))) +CREATE MEMORY TABLE DB_PERMISSION_LIST(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 30) NOT NULL PRIMARY KEY,NAME VARCHAR(64) NOT NULL,PERMISSION_TYPE VARCHAR(1) NOT NULL,CONSTRAINT UNQ_DB_PERMISSION UNIQUE(NAME,PERMISSION_TYPE),CONSTRAINT CHK_DB_PERMISSION_LIST_PERMISSION_TYPE CHECK(DB_PERMISSION_LIST.PERMISSION_TYPE IN ('S','D','R'))) +CREATE MEMORY TABLE DB_SYSTEM_PERMISSION(GROUP_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,PRIMARY KEY(GROUP_ID,PERMISSION_ID),CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_SYSTEM_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE) +CREATE MEMORY TABLE DB_DATABASE_PERMISSION(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,GROUP_ID INTEGER NOT NULL,DATABASE_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_DATABASE FOREIGN KEY(DATABASE_ID) REFERENCES DB_DATABASE(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_DATABASE_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT UNQ_DB_GRAP UNIQUE(GROUP_ID,DATABASE_ID,PERMISSION_ID)) +CREATE MEMORY TABLE DB_RUN_AS_PERMISSION(GROUP_ID INTEGER NOT NULL,RUN_AS_ID INTEGER NOT NULL,PERMISSION_ID INTEGER NOT NULL,PRIMARY KEY(GROUP_ID,RUN_AS_ID,PERMISSION_ID),CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_GROUP FOREIGN KEY(GROUP_ID) REFERENCES DB_GROUP(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_RUN_AS FOREIGN KEY(RUN_AS_ID) REFERENCES DB_RUN_AS(ID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT FK_DB_RUN_AS_PERMISSION_DB_PERMISSION_LIST FOREIGN KEY(PERMISSION_ID) REFERENCES DB_PERMISSION_LIST(ID) ON DELETE CASCADE ON UPDATE CASCADE) ALTER TABLE DB_USER ALTER COLUMN ID RESTART WITH 2 ALTER TABLE DB_GROUP ALTER COLUMN ID RESTART WITH 3 ALTER TABLE DB_DRIVER ALTER COLUMN ID RESTART WITH 1 @@ -20,7 +18,7 @@ ALTER TABLE DB_JOB ALTER COLUMN ID RESTART WITH 0 ALTER TABLE DB_PERMISSION_LIST ALTER COLUMN ID RESTART WITH 30 ALTER TABLE DB_DATABASE_PERMISSION ALTER COLUMN ID RESTART WITH 0 -SET SCHEMA PUBLIC +CREATE USER SA PASSWORD "" GRANT DBA TO SA SET WRITE_DELAY 10 SET SCHEMA PUBLIC This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-03-18 12:02:02
|
Revision: 16 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=16&view=rev Author: acresse Date: 2008-03-18 05:01:47 -0700 (Tue, 18 Mar 2008) Log Message: ----------- checked in at wrong location Added Paths: ----------- trunk/drawbridge-domain/ Removed Paths: ------------- drawbridge-domain/ Copied: trunk/drawbridge-domain (from rev 15, drawbridge-domain) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-03-18 11:58:45
|
Revision: 15 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=15&view=rev Author: acresse Date: 2008-03-18 04:58:43 -0700 (Tue, 18 Mar 2008) Log Message: ----------- Initial import. Added Paths: ----------- drawbridge-domain/.classpath drawbridge-domain/.project drawbridge-domain/src/ drawbridge-domain/src/java/ drawbridge-domain/src/test/ Added: drawbridge-domain/.classpath =================================================================== --- drawbridge-domain/.classpath (rev 0) +++ drawbridge-domain/.classpath 2008-03-18 11:58:43 UTC (rev 15) @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src/java"/> + <classpathentry kind="src" path="src/test"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="output" path="target/eclipse-classes"/> +</classpath> Added: drawbridge-domain/.project =================================================================== --- drawbridge-domain/.project (rev 0) +++ drawbridge-domain/.project 2008-03-18 11:58:43 UTC (rev 15) @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>drawbridge-domain</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ac...@us...> - 2008-03-18 11:58:39
|
Revision: 14 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=14&view=rev Author: acresse Date: 2008-03-18 04:58:12 -0700 (Tue, 18 Mar 2008) Log Message: ----------- Initial import. Added Paths: ----------- drawbridge-domain/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bla...@us...> - 2008-03-18 02:15:48
|
Revision: 13 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=13&view=rev Author: blamonica Date: 2008-03-17 19:15:46 -0700 (Mon, 17 Mar 2008) Log Message: ----------- Put all DAOs into spring. Using the DefaultDrawbridgeService now. Wrote an test of the HibernateDriverDao. Modified Paths: -------------- trunk/drawbridge/src/java/drawbridge-core-spring.xml trunk/drawbridge/src/java/net/sf/drawbridge/dao/drawbridge-dao-spring.xml trunk/drawbridge/src/java/net/sf/drawbridge/domain/DefaultDrawbridgeService.java Added Paths: ----------- trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/HibernateDriverDaoImpl.java trunk/drawbridge/src/test/net/sf/drawbridge/dao/DriverDaoTest.java Modified: trunk/drawbridge/src/java/drawbridge-core-spring.xml =================================================================== --- trunk/drawbridge/src/java/drawbridge-core-spring.xml 2008-03-18 01:24:24 UTC (rev 12) +++ trunk/drawbridge/src/java/drawbridge-core-spring.xml 2008-03-18 02:15:46 UTC (rev 13) @@ -4,11 +4,24 @@ <beans> <import resource="net/sf/drawbridge/dao/drawbridge-dao-spring.xml"/> + <!-- <bean id="drawbridgeService" class="net.sf.drawbridge.domain.DummyDrawbridgeService"> <constructor-arg ref="queryParser"/> <constructor-arg ref="jobExecuter"/> </bean> - + --> + + <bean id="drawbridgeService" class="net.sf.drawbridge.domain.DefaultDrawbridgeService"> + <constructor-arg ref="UserDao"/> + <constructor-arg ref="GroupDao"/> + <constructor-arg ref="RunAsAccountDao"/> + <constructor-arg ref="DatabaseDao"/> + <constructor-arg ref="JobDao"/> + <constructor-arg ref="DriverDao"/> + <constructor-arg ref="QueryParser"/> + <constructor-arg ref="JobExecuter"/> + </bean> + <bean id="dummyDatabase" class="net.sf.drawbridge.domain.DummyDatabase"> <property name="dataSource"> <bean class="org.springframework.jdbc.datasource.SingleConnectionDataSource"> @@ -33,9 +46,9 @@ <constructor-arg ref="scheduler"/> </bean> - <bean id="queryParser" class="net.sf.drawbridge.exec.DefaultQueryParser"/> + <bean id="QueryParser" class="net.sf.drawbridge.exec.DefaultQueryParser"/> - <bean id="jobExecuter" class="net.sf.drawbridge.exec.DefaultJobExecuter"/> + <bean id="JobExecuter" class="net.sf.drawbridge.exec.DefaultJobExecuter"/> <bean id="encryptionUtil" class="net.sf.drawbridge.util.AESEncryptionUtil"> <constructor-arg value="1234567890abcdef"/> Modified: trunk/drawbridge/src/java/net/sf/drawbridge/dao/drawbridge-dao-spring.xml =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/dao/drawbridge-dao-spring.xml 2008-03-18 01:24:24 UTC (rev 12) +++ trunk/drawbridge/src/java/net/sf/drawbridge/dao/drawbridge-dao-spring.xml 2008-03-18 02:15:46 UTC (rev 13) @@ -34,5 +34,13 @@ <bean id="DatabaseDao" parent="AbstractDao" class="net.sf.drawbridge.dao.hibernate.HibernateDatabaseDaoImpl"/> <bean id="RunAsAccountDao" parent="AbstractDao" class="net.sf.drawbridge.dao.hibernate.HibernateRunAsAccountDaoImpl"/> + + <bean id="JobDao" parent="AbstractDao" class="net.sf.drawbridge.dao.hibernate.HibernateJobDaoImpl"/> + + <bean id="UserDao" parent="AbstractDao" class="net.sf.drawbridge.dao.hibernate.HibernateUserDaoImpl"/> + + <bean id="GroupDao" parent="AbstractDao" class="net.sf.drawbridge.dao.hibernate.HibernateGroupDaoImpl"/> + + <bean id="DriverDao" parent="AbstractDao" class="net.sf.drawbridge.dao.hibernate.HibernateDriverDaoImpl"/> </beans> Added: trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/HibernateDriverDaoImpl.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/HibernateDriverDaoImpl.java (rev 0) +++ trunk/drawbridge/src/java/net/sf/drawbridge/dao/hibernate/HibernateDriverDaoImpl.java 2008-03-18 02:15:46 UTC (rev 13) @@ -0,0 +1,29 @@ +/* + * This file is part of DrawBridge. + * Copyright 2008 Ben La Monica + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation,Inc.,51 Franklin Street,Fifth Floor, Boston, MA 02110-1301, USA. + */ +package net.sf.drawbridge.dao.hibernate; + +import net.sf.drawbridge.dao.DriverDao; +import net.sf.drawbridge.vo.Driver; + +public class HibernateDriverDaoImpl extends AbstractHibernateDao<Driver, Integer> implements DriverDao { + + public HibernateDriverDaoImpl() { + super(Driver.class); + } + +} Modified: trunk/drawbridge/src/java/net/sf/drawbridge/domain/DefaultDrawbridgeService.java =================================================================== --- trunk/drawbridge/src/java/net/sf/drawbridge/domain/DefaultDrawbridgeService.java 2008-03-18 01:24:24 UTC (rev 12) +++ trunk/drawbridge/src/java/net/sf/drawbridge/domain/DefaultDrawbridgeService.java 2008-03-18 02:15:46 UTC (rev 13) @@ -40,36 +40,43 @@ public class DefaultDrawbridgeService implements DrawbridgeService { - private UserDao userDao; - - private GroupDao groupDao; - - private RunAsAccountDao runAsAccountDao; - - private DatabaseDao databaseDao; - - private JobDao jobDao; - - private DriverDao driverDao; - - private QueryParser parser; + private final UserDao userDao; - private JobExecuter executer; - - public DefaultDrawbridgeService(UserDao userDao, GroupDao groupDao, RunAsAccountDao runAsAccountDao) { + private final GroupDao groupDao; + + private final RunAsAccountDao runAsAccountDao; + + private final DatabaseDao databaseDao; + + private final JobDao jobDao; + + private final DriverDao driverDao; + + private final QueryParser parser; + + private final JobExecuter executer; + + public DefaultDrawbridgeService(UserDao userDao, GroupDao groupDao, RunAsAccountDao runAsAccountDao, + DatabaseDao databaseDao, JobDao jobDao, DriverDao driverDao, QueryParser queryParser, + JobExecuter jobExecuter) { this.userDao = userDao; this.groupDao = groupDao; this.runAsAccountDao = runAsAccountDao; + this.databaseDao = databaseDao; + this.jobDao = jobDao; + this.driverDao = driverDao; + this.parser = queryParser; + this.executer = jobExecuter; } - + private void setJobActive(Long jobId, boolean isActive) { Job job = jobDao.get(jobId); if (job != null) { - job.setActive(isActive?"Y":"N"); + job.setActive(isActive ? "Y" : "N"); jobDao.update(job); } } - + public void activateJob(Long jobId) { setJobActive(jobId, true); } @@ -161,13 +168,14 @@ } public List<Map<String, Object>> executeJob(Long jobId, List<QueryParam> params) { - try{ - Job job=getJob(jobId); - RunAsAccount runAsAccount=job.getRunAsAccount(); - Database database=runAsAccount.getDatabase(); - Driver driver=database.getDriver(); - return executer.executeJob(driver, database, runAsAccount, parser.getPreparedStatementQuery(job.getQuery()), params); - } catch(Exception ex){ + try { + Job job = getJob(jobId); + RunAsAccount runAsAccount = job.getRunAsAccount(); + Database database = runAsAccount.getDatabase(); + Driver driver = database.getDriver(); + return executer.executeJob(driver, database, runAsAccount, + parser.getPreparedStatementQuery(job.getQuery()), params); + } catch (Exception ex) { ex.printStackTrace(); return null; } @@ -218,7 +226,7 @@ return jobDao.getJobsForDatabase(databaseId); } - //null parameter means return all + // null parameter means return all public List<RunAsAccount> listRunAsAccounts(Integer databaseId) { if (databaseId == null) { return runAsAccountDao.getAll(); Added: trunk/drawbridge/src/test/net/sf/drawbridge/dao/DriverDaoTest.java =================================================================== --- trunk/drawbridge/src/test/net/sf/drawbridge/dao/DriverDaoTest.java (rev 0) +++ trunk/drawbridge/src/test/net/sf/drawbridge/dao/DriverDaoTest.java 2008-03-18 02:15:46 UTC (rev 13) @@ -0,0 +1,100 @@ +/* + * This file is part of DrawBridge. + * Copyright 2008 Ben La Monica + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation,Inc.,51 Franklin Street,Fifth Floor, Boston, MA 02110-1301, USA. + */ +package net.sf.drawbridge.dao; + +import java.util.List; + +import junit.framework.TestCase; +import net.sf.drawbridge.test.TestBeanFactory; +import net.sf.drawbridge.vo.Driver; + +import org.springframework.transaction.TransactionStatus; +import org.springframework.transaction.support.AbstractPlatformTransactionManager; +import org.springframework.transaction.support.DefaultTransactionDefinition; + +public class DriverDaoTest extends TestCase { + + private DriverDao target; + + private AbstractPlatformTransactionManager txManager; + + protected void setUp() { + txManager = (AbstractPlatformTransactionManager) TestBeanFactory.getBean("TxManager"); + target = (DriverDao) TestBeanFactory.getBean("DriverDao"); + } + + public void testShouldGetDriverObject() throws Exception { + Driver result = target.get(0); + assertNotNull("result is null", result); + assertEquals("id", new Integer(0), result.getId()); + assertEquals("class name", "org.hsqldb.jdbcDriver", result.getClassName()); + assertEquals("name", "HSQLDB Driver", result.getName()); + } + + public void testShouldCreateNewDriverObject() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + Driver db = new Driver(null, "name", "class_name"); + target.create(db); + assertNotNull("id is still null", db.getId()); + } finally { + txManager.rollback(tx); + } + } + + public void testShouldSaveChangesToDriverObject() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + Driver existing = target.get(0); + existing.setName("a different name"); + target.update(existing); + + Driver result = target.get(0); + assertEquals("a different name", result.getName()); + } finally { + txManager.rollback(tx); + } + } + + public void testShouldDeleteObjectFromDriver() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + Driver existing = target.get(0); + assertNotNull(existing); + target.delete(existing); + + assertNull("should be deleted", target.get(0)); + } finally { + txManager.rollback(tx); + } + } + + public void testShouldRetrieveAllObjectsFromDriver() throws Exception { + TransactionStatus tx = txManager.getTransaction(new DefaultTransactionDefinition()); + try { + Driver db = new Driver(null, "name", "class_name"); + target.create(db); + + List<Driver> all = target.getAll(); + assertEquals(2, all.size()); + } finally { + txManager.rollback(tx); + } + + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bla...@us...> - 2008-03-18 01:24:26
|
Revision: 12 http://drawbridge.svn.sourceforge.net/drawbridge/?rev=12&view=rev Author: blamonica Date: 2008-03-17 18:24:24 -0700 (Mon, 17 Mar 2008) Log Message: ----------- deleted build dir. Should only be a local file. Modified Paths: -------------- trunk/drawbridge/.classpath Removed Paths: ------------- trunk/drawbridge/build/ Modified: trunk/drawbridge/.classpath =================================================================== --- trunk/drawbridge/.classpath 2008-03-18 01:20:27 UTC (rev 11) +++ trunk/drawbridge/.classpath 2008-03-18 01:24:24 UTC (rev 12) @@ -7,5 +7,5 @@ <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> - <classpathentry kind="output" path="build/classes"/> + <classpathentry kind="output" path="target/classes"/> </classpath> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |