Index: lams_common/build.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/build.xml,v diff -u -r1.12 -r1.13 --- lams_common/build.xml 19 Jan 2005 06:22:48 -0000 1.12 +++ lams_common/build.xml 28 Jan 2005 04:21:20 -0000 1.13 @@ -213,6 +213,7 @@ + Index: lams_common/properties.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/Attic/properties.xml,v diff -u -r1.6 -r1.7 --- lams_common/properties.xml 10 Jan 2005 02:43:27 -0000 1.6 +++ lams_common/properties.xml 28 Jan 2005 04:22:16 -0000 1.7 @@ -43,11 +43,11 @@ - + - + Index: lams_common/src/java/org/lamsfoundation/lams/applicationResources.properties =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/Attic/applicationResources.properties,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/applicationResources.properties 28 Jan 2005 04:20:47 -0000 1.1 @@ -0,0 +1,8 @@ +# Resources for parameter 'com.lamsinternational.lams.applicationResources' + +#=========================labels===========================# + +#=========================Error Messages===========================# +error.authorisation=You are not authorised to do this. +error.newpassword.mismatch=Your new passwords don't match each other. +error.oldpassword.mismatch=Your old password is not correct. \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,392 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import java.util.Date; +import java.util.Set; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + +/** + * @hibernate.class table="lams_learning_activity" + */ +public abstract class Activity implements Serializable { + + public static final int TOOL_ACTIVITY_TYPE = 1; + + public static final int RANDOM_GROUPING_ACTIVITY_TYPE = 2; + + public static final int CHOSEN_GROUPING_ACTIVITY_TYPE = 3; + + public static final int PERMISSION_GATE_ACTIVITY_TYPE = 4; + + public static final int SCHEDULE_GATE_ACTIVITY_TYPE = 5; + + public static final int SYNCH_GATE_ACTIVITY_TYPE = 6; + + public static final int PARALLEL_ACTIVITY_TYPE = 7; + + public static final int OPTIONS_ACTIVITY_TYPE = 8; + + public static final int SEQUENCE_ACTIVITY_TYPE = 9; + + /** identifier field */ + private Long activityId; + + /** nullable persistent field */ + private Integer id; + + /** nullable persistent field */ + private String description; + + /** nullable persistent field */ + private String title; + + /** nullable persistent field */ + private Integer xcoord; + + /** nullable persistent field */ + private Integer ycoord; + + /** nullable persistent field */ + private Integer orderId; + + /** persistent field */ + private Boolean defineLater; + + /** persistent field */ + private Date createDateTime; + + /** nullable persistent field */ + private String offlineInstructions; + + /** nullable persistent field */ + private String libraryActivityUiImage; + + /** persistent field */ + private LearningLibrary learningLibrary; + + /** persistent field */ + private Activity parentActivity; + + /** persistent field */ + private LearningDesign learningDesign; + + /** persistent field */ + private Grouping grouping; + + /** persistent field */ + private Integer activityTypeId; + + /** persistent field */ + private Set transitionsByToActivityId; + + /** persistent field */ + private Set transitionsByFromActivityId; + + /** full constructor */ + public Activity( + Long activityId, + Integer id, + String description, + String title, + Integer xcoord, + Integer ycoord, + Integer orderId, + Boolean defineLater, + Date createDateTime, + String offlineInstructions, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, Set transitionsByToActivityId, + Set transitionsByFromActivityId) { + this.activityId = activityId; + this.id = id; + this.description = description; + this.title = title; + this.xcoord = xcoord; + this.ycoord = ycoord; + this.orderId = orderId; + this.defineLater = defineLater; + this.createDateTime = createDateTime; + this.offlineInstructions = offlineInstructions; + this.learningLibrary = learningLibrary; + this.parentActivity = parentActivity; + this.learningDesign = learningDesign; + this.grouping = grouping; + this.activityTypeId = activityTypeId; + this.transitionsByToActivityId = transitionsByToActivityId; + this.transitionsByFromActivityId = transitionsByFromActivityId; + } + + /** default constructor */ + public Activity() { + } + + /** minimal constructor */ + public Activity( + Long activityId, + Boolean defineLater, + Date createDateTime, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, Set transitionsByToActivityId, + Set transitionsByFromActivityId) { + this.activityId = activityId; + this.defineLater = defineLater; + this.createDateTime = createDateTime; + this.learningLibrary = learningLibrary; + this.parentActivity = parentActivity; + this.learningDesign = learningDesign; + this.grouping = grouping; + this.activityTypeId = activityTypeId; + this.transitionsByToActivityId = transitionsByToActivityId; + this.transitionsByFromActivityId = transitionsByFromActivityId; + } + + /** + * @hibernate.id generator-class="identity" type="java.lang.Long" + * column="activity_id" + */ + public Long getActivityId() { + return this.activityId; + } + + public void setActivityId(Long activityId) { + this.activityId = activityId; + } + + /** + * @hibernate.property column="id" length="11" + */ + public Integer getId() { + return this.id; + } + + public void setId(Integer id) { + this.id = id; + } + + /** + * @hibernate.property column="description" length="65535" + */ + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + /** + * @hibernate.property column="title" length="255" + */ + public String getTitle() { + return this.title; + } + + public void setTitle(String title) { + this.title = title; + } + + /** + * @hibernate.property column="xcoord" length="11" + */ + public Integer getXcoord() { + return this.xcoord; + } + + public void setXcoord(Integer xcoord) { + this.xcoord = xcoord; + } + + /** + * @hibernate.property column="ycoord" length="11" + */ + public Integer getYcoord() { + return this.ycoord; + } + + public void setYcoord(Integer ycoord) { + this.ycoord = ycoord; + } + + /** + * @hibernate.property column="order_id" length="11" + */ + public Integer getOrderId() { + return this.orderId; + } + + public void setOrderId(Integer orderId) { + this.orderId = orderId; + } + + /** + * @hibernate.property column="define_later_flag" length="4" not-null="true" + */ + public Boolean getDefineLater() { + return this.defineLater; + } + + public void setDefineLater(Boolean defineLater) { + this.defineLater = defineLater; + } + + /** + * @hibernate.property column="create_date_time" length="19" not-null="true" + */ + public Date getCreateDateTime() { + return this.createDateTime; + } + + public void setCreateDateTime(Date createDateTime) { + this.createDateTime = createDateTime; + } + + /** + * @hibernate.property column="offline_instructions" length="65535" + */ + public String getOfflineInstructions() { + return this.offlineInstructions; + } + + public void setOfflineInstructions(String offlineInstructions) { + this.offlineInstructions = offlineInstructions; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="learning_library_id" + * + */ + public org.lamsfoundation.lams.learningdesign.LearningLibrary getLearningLibrary() { + return this.learningLibrary; + } + + public void setLearningLibrary( + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary) { + this.learningLibrary = learningLibrary; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="parent_activity_id" + * + */ + public org.lamsfoundation.lams.learningdesign.Activity getParentActivity() { + return this.parentActivity; + } + + public void setParentActivity(Activity parentActivity) { + this.parentActivity = parentActivity; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="learning_design_id" + * + */ + public org.lamsfoundation.lams.learningdesign.LearningDesign getLearningDesign() { + return this.learningDesign; + } + + public void setLearningDesign( + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign) { + this.learningDesign = learningDesign; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="grouping_id" + * + */ + public org.lamsfoundation.lams.learningdesign.Grouping getGrouping() { + return this.grouping; + } + + public void setGrouping( + org.lamsfoundation.lams.learningdesign.Grouping grouping) { + this.grouping = grouping; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="learning_activity_type_id" + * + */ + public Integer getActivityTypeId() { + return this.activityTypeId; + } + + public void setActivityTypeId(Integer activityTypeId) { + this.activityTypeId = activityTypeId; + } + + /** + * @hibernate.set lazy="true" inverse="true" cascade="none" + * @hibernate.collection-key column="to_activity_id" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.learningdesign.Transition" + * + */ + public Set getTransitionsByToActivityId() { + return this.transitionsByToActivityId; + } + + public void setTransitionsByToActivityId(Set transitionsByToActivityId) { + this.transitionsByToActivityId = transitionsByToActivityId; + } + + /** + * @hibernate.set lazy="true" inverse="true" cascade="none" + * @hibernate.collection-key column="from_activity_id" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.learningdesign.Transition" + * + */ + public Set getTransitionsByFromActivityId() { + return this.transitionsByFromActivityId; + } + + public void setTransitionsByFromActivityId(Set transitionsByFromActivityId) { + this.transitionsByFromActivityId = transitionsByFromActivityId; + } + + public String toString() { + return new ToStringBuilder(this).append("activityId", getActivityId()) + .toString(); + } + + public boolean equals(Object other) { + if ((this == other)) + return true; + if (!(other instanceof Activity)) + return false; + Activity castOther = (Activity) other; + return new EqualsBuilder().append(this.getActivityId(), + castOther.getActivityId()).isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder().append(getActivityId()).toHashCode(); + } + + /** + * @hibernate.property column="library_activity_ui_image" length="255" + * @return Returns the libraryActivityUiImage. + */ + public String getLibraryActivityUiImage() { + return libraryActivityUiImage; + } + + /** + * @param libraryActivityUiImage + * The libraryActivityUiImage to set. + */ + public void setLibraryActivityUiImage(String libraryActivityUiImage) { + this.libraryActivityUiImage = libraryActivityUiImage; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,28 @@ +/* + * ChosenGrouping.java + * + * Created on 14 January 2005, 11:30 + */ + +package org.lamsfoundation.lams.learningdesign; + +import java.util.Set; +/** + * Grouping formed by staff members choice + * @author chris + */ +public class ChosenGrouping extends Grouping +{ + + /** Creates a new instance of ChosenGrouping */ + public ChosenGrouping() + { + } + + /** full constructor */ + public ChosenGrouping(Long groupingId, Integer groupingTypeId, Set groups, Set activities) + { + super(groupingId, groupingTypeId, groups, activities); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,59 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import java.util.Date; +import java.util.Set; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + */ +public abstract class ComplexActivity extends Activity implements Serializable +{ + + /** persistent field */ + private Set activities; + + /** full constructor */ + public ComplexActivity(Long activityId, Integer id, String description, String title, Integer xcoord, Integer ycoord, Integer orderId, Boolean defineLater, Date createDateTime, String offlineInstructions, org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, org.lamsfoundation.lams.learningdesign.Activity parentActivity, org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, org.lamsfoundation.lams.learningdesign.Grouping grouping, Integer activityTypeId, Set transitionsByToActivityId, Set transitionsByFromActivityId, Set activities) + { + super(activityId, id, description, title, xcoord, ycoord, orderId, defineLater, createDateTime, offlineInstructions, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, transitionsByToActivityId, transitionsByFromActivityId); + this.activities = activities; + } + + /** default constructor */ + public ComplexActivity() + { + } + + /** minimal constructor */ + public ComplexActivity(Long activityId, Boolean defineLater, Date createDateTime, org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, org.lamsfoundation.lams.learningdesign.Activity parentActivity, org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, org.lamsfoundation.lams.learningdesign.Grouping grouping, Integer activityTypeId, Set transitionsByToActivityId, Set transitionsByFromActivityId, Set activities) + { + super(activityId, defineLater, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, transitionsByToActivityId, transitionsByFromActivityId); + this.activities = activities; + } + + public String toString() + { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + + /** + * @hibernate.set lazy="true" inverse="true" cascade="none" + * @hibernate.collection-key column="parent_activity_id" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.learningdesign.Activity" + * + */ + public Set getActivities() + { + return this.activities; + } + + public void setActivities(Set activities) + { + this.activities = activities; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,115 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + */ +public abstract class GateActivity extends SimpleActivity implements Serializable +{ + + public static final int LEARNER_GATE_LEVEL = 1; + + public static final int GROUP_GATE_LEVEL = 2; + + public static final int CLASS_GATE_LEVEL = 3; + + /** persistent field */ + private Integer gateActivityLevelId; + + /** full constructor */ + public GateActivity(Long activityId, + Integer id, + String description, + String title, + Integer xcoord, + Integer ycoord, + Integer orderId, + Boolean defineLater, + java.util.Date createDateTime, + String offlineInstructions, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + Integer gateActivityLevelId) + { + super(activityId, + id, + description, + title, + xcoord, + ycoord, + orderId, + defineLater, + createDateTime, + offlineInstructions, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId); + this.gateActivityLevelId = gateActivityLevelId; + } + + /** default constructor */ + public GateActivity() + { + } + + /** minimal constructor */ + public GateActivity(Long activityId, + Boolean defineLater, + java.util.Date createDateTime, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + Integer gateActivityLevelId) + { + super(activityId, + defineLater, + createDateTime, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId); + this.gateActivityLevelId = gateActivityLevelId; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="gate_activity_level_id" + * + */ + public Integer getGateActivityLevelId() + { + return this.gateActivityLevelId; + } + + public void setGateActivityLevelId(Integer gateActivityLevelId) + { + this.gateActivityLevelId = gateActivityLevelId; + } + + public String toString() + { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,148 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import java.util.Set; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_group" + * +*/ +public class Group implements Serializable { + + /** identifier field */ + private Long groupId; + + /** persistent field */ + private int orderId; + + /** persistent field */ + private org.lamsfoundation.lams.learningdesign.Grouping grouping; + + /** persistent field */ + private Set userGroups; + + /** persistent field */ + private Set toolSessions; + + /** full constructor */ + public Group(Long groupId, int orderId, org.lamsfoundation.lams.learningdesign.Grouping grouping, Set userGroups, Set toolSessions) { + this.groupId = groupId; + this.orderId = orderId; + this.grouping = grouping; + this.userGroups = userGroups; + this.toolSessions = toolSessions; + } + + /** default constructor */ + public Group() { + } + + /** + * @hibernate.id + * generator-class="identity" + * type="java.lang.Long" + * column="group_id" + * + */ + public Long getGroupId() { + return this.groupId; + } + + public void setGroupId(Long groupId) { + this.groupId = groupId; + } + + /** + * @hibernate.property + * column="order_id" + * length="6" + * not-null="true" + * + */ + public int getOrderId() { + return this.orderId; + } + + public void setOrderId(int orderId) { + this.orderId = orderId; + } + + /** + * @hibernate.many-to-one + * not-null="true" + * @hibernate.column name="grouping_id" + * + */ + public org.lamsfoundation.lams.learningdesign.Grouping getGrouping() { + return this.grouping; + } + + public void setGrouping(org.lamsfoundation.lams.learningdesign.Grouping grouping) { + this.grouping = grouping; + } + + /** + * @hibernate.set + * lazy="true" + * inverse="true" + * cascade="none" + * @hibernate.collection-key + * column="group_id" + * @hibernate.collection-one-to-many + * class="org.lamsfoundation.lams.lesson.UserGroup" + * + */ + public Set getUserGroups() { + return this.userGroups; + } + + public void setUserGroups(Set userGroups) { + this.userGroups = userGroups; + } + + /** + * @hibernate.set + * lazy="true" + * inverse="true" + * cascade="none" + * @hibernate.collection-key + * column="group_id" + * @hibernate.collection-one-to-many + * class="org.lamsfoundation.lams.tool.ToolSession" + * + */ + public Set getToolSessions() { + return this.toolSessions; + } + + public void setToolSessions(Set toolSessions) { + this.toolSessions = toolSessions; + } + + public String toString() { + return new ToStringBuilder(this) + .append("groupId", getGroupId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof Group) ) return false; + Group castOther = (Group) other; + return new EqualsBuilder() + .append(this.getGroupId(), castOther.getGroupId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getGroupId()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,159 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import java.util.Set; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_grouping" + * + */ +public abstract class Grouping implements Serializable +{ + /** Grouping type id of random grouping */ + public static final int RANDOM_GROUPING_TYPE = 1; + + /** Grouping type id of chosen grouping */ + public static final int CHOSEN_GROUPING_TYPE = 2; + + /** Grouping type id for lesson class grouping */ + public static final int CLASS_GROUPING_TYPE = 3; + + /** identifier field */ + private Long groupingId; + + + + /** nullable persistent field */ + private Integer maxNumberOfGroups; + + /** persistent field */ + private Integer groupingTypeId; + + /** persistent field */ + private Set groups; + + /** persistent field */ + private Set activities; + + /** full constructor */ + public Grouping(Long groupingId, Integer groupingTypeId, Set groups, Set activities) + { + this.groupingId = groupingId; + this.groupingTypeId = groupingTypeId; + this.groups = groups; + this.activities = activities; + } + + /** default constructor */ + public Grouping() + { + } + + /** minimal constructor */ + public Grouping(Long groupingId, Integer groupingTypeId) + { + this.groupingId = groupingId; + this.groupingTypeId = groupingTypeId; + } + + /** + * + * + */ + public Long getGroupingId() + { + return this.groupingId; + } + + public void setGroupingId(Long groupingId) + { + this.groupingId = groupingId; + } + + + + /** + * + * + */ + public Integer getGroupingTypeId() + { + return this.groupingTypeId; + } + + public void setGroupingTypeId(Integer groupingTypeId) + { + this.groupingTypeId = groupingTypeId; + } + + /** + * + * + */ + public Set getGroups() + { + return this.groups; + } + + public void setGroups(Set groups) + { + this.groups = groups; + } + + /** + * + * + */ + public Set getActivities() + { + return this.activities; + } + + public void setActivities(Set activities) + { + this.activities = activities; + } + + public String toString() + { + return new ToStringBuilder(this) + .append("groupingId", getGroupingId()) + .toString(); + } + + public boolean equals(Object other) + { + if ( (this == other ) ) return true; + if ( !(other instanceof Grouping) ) return false; + Grouping castOther = (Grouping) other; + return new EqualsBuilder() + .append(this.getGroupingId(), castOther.getGroupingId()) + .isEquals(); + } + + public int hashCode() + { + return new HashCodeBuilder() + .append(getGroupingId()) + .toHashCode(); + } + /** + * + */ + public Integer getMaxNumberOfGroups() + { + return maxNumberOfGroups; + } + /** + * @param maxNumberOfGroups The maxNumberOfGroups to set. + */ + public void setMaxNumberOfGroups(Integer maxNumberOfGroups) + { + this.maxNumberOfGroups = maxNumberOfGroups; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,106 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + */ +public class GroupingActivity extends SimpleActivity implements Serializable +{ + + /** persistent field */ + public org.lamsfoundation.lams.learningdesign.Grouping createGrouping; + + /** full constructor */ + public GroupingActivity(Long activityId, + Integer id, + String description, + String title, + Integer xcoord, + Integer ycoord, + Integer orderId, + Boolean defineLater, + java.util.Date createDateTime, + String offlineInstructions, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + Grouping createGrouping) + { + super(activityId, + id, + description, + title, + xcoord, + ycoord, + orderId, + defineLater, + createDateTime, + offlineInstructions, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId); + this.createGrouping = createGrouping; + } + + /** default constructor */ + public GroupingActivity() + { + } + + /** minimal constructor */ + public GroupingActivity(Long activityId, + Boolean defineLater, + java.util.Date createDateTime, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + Grouping createGrouping) + { + super(activityId, + defineLater, + createDateTime, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId); + this.createGrouping = createGrouping; + } + + public String toString() + { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + + /** + * @return Returns the createGrouping. + */ + public Grouping getCreateGrouping() { + return createGrouping; + } + /** + * @param createGrouping The createGrouping to set. + */ + public void setCreateGrouping(Grouping createGrouping) { + this.createGrouping = createGrouping; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,531 @@ +package org.lamsfoundation.lams.learningdesign; + +import org.lamsfoundation.lams.usermanagement.User; +import java.io.Serializable; +import java.util.Date; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_learning_design" + * +*/ +public class LearningDesign implements Serializable { + + /** Represents a single LearningDesign object in the WDDXPacket */ + public static final String DESIGN_OBJECT ="LearningDesign"; + + /** Represents a list of LearningDesign objects in the WDDXPacket */ + public static final String DESIGN_LIST_OBJECT="LearningDesignList"; + + /** identifier field */ + private Long learningDesignId; + + /** nullable persistent field */ + private Integer id; + + /** nullable persistent field */ + private String description; + + /** nullable persistent field */ + private String title; + + /** nullable persistent field */ + private Activity firstActivity; + + /** nullable persistent field */ + private Integer maxId; + + /** persistent field */ + private Boolean validDesign; + + /** persistent field */ + private Boolean readOnly; + + /** nullable persistent field */ + private Date dateReadOnly; + + /** nullable persistent field */ + private Long readAccess; + + /** nullable persistent field */ + private Long writeAccess; + + /** nullable persistent field */ + private String helpText; + + /** persistent field */ + private Boolean lessonCopy; + + /** persistent field */ + private Date createDateTime; + + /** persistent field */ + private String version; + + /** nullable persistent field */ + private Date openDateTime; + + /** nullable persistent field */ + private Date closeDateTime; + + /** persistent field */ + private User user; + + /** persistent field */ + private LearningDesign parentLearningDesign; + + /** persistent field */ + private Set childLearningDesigns; + + /** persistent field */ + private Set lessons; + + /** persistent field */ + private Set transitions; + + /** persistent field */ + private Set activities; + + /** non-persistent field containing a list + * of optional activities in the design*/ + private Set optionalActivities; + + + /** full constructor */ + public LearningDesign(Long learningDesignId, Integer id, String description, String title, Activity firstActivity, Integer maxId, Boolean validDesign, Boolean readOnly, Date dateReadOnly, Long readAccess, Long writeAccess, String helpText, Boolean lessonCopy, Date createDateTime, String version, Date openDateTime, Date closeDateTime, User user, org.lamsfoundation.lams.learningdesign.LearningDesign parentLearningDesign, Set childLearningDesigns, Set lessons, Set transitions, Set activities) { + this.learningDesignId = learningDesignId; + this.id = id; + this.description = description; + this.title = title; + this.firstActivity = firstActivity; + this.maxId = maxId; + this.validDesign = validDesign; + this.readOnly = readOnly; + this.dateReadOnly = dateReadOnly; + this.readAccess = readAccess; + this.writeAccess = writeAccess; + this.helpText = helpText; + this.lessonCopy = lessonCopy; + this.createDateTime = createDateTime; + this.version = version; + this.openDateTime = openDateTime; + this.closeDateTime = closeDateTime; + this.user = user; + this.parentLearningDesign = parentLearningDesign; + this.childLearningDesigns = childLearningDesigns; + this.lessons = lessons; + this.transitions = transitions; + this.activities = activities; + } + + /** default constructor */ + public LearningDesign() { + } + + /** minimal constructor */ + public LearningDesign(Long learningDesignId, Boolean validDesign, Boolean readOnly, Boolean lessonCopy, Date createDateTime, String version, User user, org.lamsfoundation.lams.learningdesign.LearningDesign parentLearningDesign, Set childLearningDesigns, Set lessons, Set transitions, Set activities) { + this.learningDesignId = learningDesignId; + this.validDesign = validDesign; + this.readOnly = readOnly; + this.lessonCopy = lessonCopy; + this.createDateTime = createDateTime; + this.version = version; + this.user = user; + this.parentLearningDesign = parentLearningDesign; + this.childLearningDesigns = childLearningDesigns; + this.lessons = lessons; + this.transitions = transitions; + this.activities = activities; + } + + /** + * + * + */ + public Long getLearningDesignId() { + return this.learningDesignId; + } + + public void setLearningDesignId(Long learningDesignId) { + this.learningDesignId = learningDesignId; + } + + /** + * + * + */ + public Integer getId() { + return this.id; + } + + public void setId(Integer id) { + this.id = id; + } + + /** + * + * + */ + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + /** + * + * + */ + public String getTitle() { + return this.title; + } + + public void setTitle(String title) { + this.title = title; + } + + /** + * + * + */ + public Activity getFirstActivity() { + return this.firstActivity; + } + + public void setFirstActivity(Activity firstActivity) { + this.firstActivity = firstActivity; + } + + /** + * + * + */ + public Integer getMaxId() { + return this.maxId; + } + + public void setMaxId(Integer maxId) { + this.maxId = maxId; + } + + /** + * + * + */ + public Boolean getValidDesign() { + return this.validDesign; + } + + public void setValidDesign(Boolean validDesign) { + this.validDesign = validDesign; + } + + /** + * + * + */ + public Boolean getReadOnly() { + return this.readOnly; + } + + public void setReadOnly(Boolean readOnly) { + this.readOnly = readOnly; + } + + /** + * + */ + public Date getDateReadOnly() { + return this.dateReadOnly; + } + + public void setDateReadOnly(Date dateReadOnly) { + this.dateReadOnly = dateReadOnly; + } + + /** + * + * + */ + public Long getReadAccess() { + return this.readAccess; + } + + public void setReadAccess(Long readAccess) { + this.readAccess = readAccess; + } + + /** + * + * + */ + public Long getWriteAccess() { + return this.writeAccess; + } + + public void setWriteAccess(Long writeAccess) { + this.writeAccess = writeAccess; + } + + /** + * + */ + public String getHelpText() { + return this.helpText; + } + + public void setHelpText(String helpText) { + this.helpText = helpText; + } + + /** + * + * + */ + public Boolean getLessonCopy() { + return this.lessonCopy; + } + + public void setLessonCopy(Boolean lessonCopy) { + this.lessonCopy = lessonCopy; + } + + /** + * + * + */ + public Date getCreateDateTime() { + return this.createDateTime; + } + + public void setCreateDateTime(Date createDateTime) { + this.createDateTime = createDateTime; + } + + /** + * + * + */ + public String getVersion() { + return this.version; + } + + public void setVersion(String version) { + this.version = version; + } + + /** + * + * + */ + public Date getOpenDateTime() { + return this.openDateTime; + } + + public void setOpenDateTime(Date openDateTime) { + this.openDateTime = openDateTime; + } + + /** + * + */ + public Date getCloseDateTime() { + return this.closeDateTime; + } + + public void setCloseDateTime(Date closeDateTime) { + this.closeDateTime = closeDateTime; + } + + /** + * + * + */ + public User getUser() { + return this.user; + } + + public void setUser(User user) { + this.user = user; + } + + /** + * + * + */ + public org.lamsfoundation.lams.learningdesign.LearningDesign getParentLearningDesign() { + return this.parentLearningDesign; + } + + public void setParentLearningDesign(org.lamsfoundation.lams.learningdesign.LearningDesign parentLearningDesign) { + this.parentLearningDesign = parentLearningDesign; + } + + /** + * + * + */ + public Set getChildLearningDesigns() { + return this.childLearningDesigns; + } + + public void setChildLearningDesigns(Set childLearningDesigns) { + this.childLearningDesigns = childLearningDesigns; + } + + /** + * + * + */ + public Set getLessons() { + return this.lessons; + } + + public void setLessons(Set lessons) { + this.lessons = lessons; + } + + /** + * + * + */ + public Set getTransitions() { + return this.transitions; + } + + public void setTransitions(Set transitions) { + this.transitions = transitions; + } + + /** + * + * + */ + public Set getActivities() { + return this.activities; + } + + public void setActivities(Set activities) { + this.activities = activities; + } + + public String toString() { + return new ToStringBuilder(this) + .append("learningDesignId", getLearningDesignId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof LearningDesign) ) return false; + LearningDesign castOther = (LearningDesign) other; + return new EqualsBuilder() + .append(this.getReadOnly(), castOther.getReadOnly()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getReadOnly()) + .toHashCode(); + } + /** + * @return Returns the optionalActivities. + */ + public Set getOptionalActivities() { + return optionalActivities; + } + /** + * @param optionalActivities The optionalActivities to set. + */ + public void setOptionalActivities(Set optionalActivities) { + this.optionalActivities = optionalActivities; + } + /** + * Calculates the "first activity" of this learning design. + * The first activity is the activity which is not a part of + * a Optional Activity and doesn't appears in any of the "to_activity_id" + * fields in the lams_learning_transition table. + *

Note : Returns the activity_id and not the id

+ * + * @return Returns the firstActivityId in the design + */ + public Long calculateFirstActivityID(){ + Long firstID = null; + HashSet allActivities = new HashSet(); + + if(this.getActivities()!=null) + allActivities.addAll(this.getActivities()); + if(this.getOptionalActivities()!=null) + allActivities.addAll(this.getOptionalActivities()); + + Set nonFirstActivities = getAllSubsequentActivityIds(); + Set activitiesFromOptionalActivities = getAllActivityIdsFromOptionalActivities(); + if(activitiesFromOptionalActivities!=null) + nonFirstActivities.addAll(activitiesFromOptionalActivities); + + Iterator iter = allActivities.iterator(); + while(iter.hasNext()&& firstID==null){ + Activity activity = (Activity)iter.next(); + Long activityID = activity.getActivityId(); + if(!nonFirstActivities.contains(activityID)) + firstID = activityID; + + } + return firstID; + } + + /** + * @return Returns a list of all the activity_id 's following another + * activity, within this learning design. + */ + private Set getAllSubsequentActivityIds(){ + Set transitions = this.getTransitions(); + Iterator iter = transitions.iterator(); + HashSet set = new HashSet(); + while(iter.hasNext()){ + Transition trans = (Transition)iter.next(); + Activity toActivity = trans.getActivityByToActivityId(); + if(toActivity!=null) + set.add(toActivity.getActivityId()); + } + return set; + } + + /** + * @return Returns a list of all activity_id 's of the activities + * which are in the Optional Activities set in the Learning Design + * + */ + private Set getAllActivityIdsFromOptionalActivities(){ + Set optionalActivities = this.getOptionalActivities(); + HashSet activityIds =null; + if(optionalActivities!=null){ + activityIds = new HashSet(); + Iterator iter = optionalActivities.iterator(); + while(iter.hasNext()){ + OptionsActivity optActivity =(OptionsActivity)iter.next(); + Set activities = optActivity.getActivities(); + if(activities!=null){ + Iterator optIterator = activities.iterator(); + while(optIterator.hasNext()){ + Activity act = (Activity)optIterator.next(); + activityIds.add(act.getActivityId()); + } + } + } + + } + return activityIds; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesignConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/Attic/LearningDesignConstants.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesignConstants.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,26 @@ +/* + * Created on Dec 6, 2004 + */ +package org.lamsfoundation.lams.learningdesign; + +/** + * @author MMINHAS + */ +public interface LearningDesignConstants { + + public static final int TOOL_ACTIVITY = 1; + public static final int RANDOM_GROUPING_ACTIVITY = 2; + public static final int CHOSEN_GROUPING_ACTIVITY = 3; + public static final int SYNCH_GATE_ACTIVITY = 4; + public static final int SCHEDULE_GATE_ACTIVITY = 5; + public static final int PERMISSION_GATE_ACTIVITY = 6; + public static final int PARALLEL_ACTIVITY = 7; + public static final int OPTIONS_ACTIVITY = 8; + public static final int SEQUENCE_ACTIVITY = 9; + public static final int BRANCH_GROUP_CONTENT = 9; + + public static final int LEARNER_GATE_ACTIVITY_LEVEL = 1; + public static final int GROUP_GATE_ACTIVITY_LEVEL = 2; + public static final int CLASS_GATE_ACTIVITY_LEVEL = 3; + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningLibrary.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningLibrary.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningLibrary.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,156 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import java.util.Date; +import java.util.Set; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_learning_library" + * +*/ +public class LearningLibrary implements Serializable { + + /** Represents a single LearningLibrary object in the WDDXPacket */ + public static final String LIBRARY_OBJECT ="LearningLibrary"; + + /** Represents a list of LearningLibrary objects in the WDDXPacket */ + public static final String LIBRARY_LIST_OBJECT ="LearningLibraryList"; + + /** identifier field */ + private Long learningLibraryId; + + /** nullable persistent field */ + private String description; + + /** nullable persistent field */ + private String title; + + /** persistent field */ + private Date createDateTime; + + /** persistent field */ + private Set activities; + + /** full constructor */ + public LearningLibrary(Long learningLibraryId, String description, String title, Date createDateTime, Set activities) { + this.learningLibraryId = learningLibraryId; + this.description = description; + this.title = title; + this.createDateTime = createDateTime; + this.activities = activities; + } + + /** default constructor */ + public LearningLibrary() { + } + + /** minimal constructor */ + public LearningLibrary(Long learningLibraryId, Date createDateTime, Set activities) { + this.learningLibraryId = learningLibraryId; + this.createDateTime = createDateTime; + this.activities = activities; + } + + /** + * @hibernate.id + * generator-class="identity" + * type="java.lang.Long" + * column="learning_library_id" + * + */ + public Long getLearningLibraryId() { + return this.learningLibraryId; + } + + public void setLearningLibraryId(Long learningLibraryId) { + this.learningLibraryId = learningLibraryId; + } + + /** + * @hibernate.property + * column="description" + * length="65535" + * + */ + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + /** + * @hibernate.property + * column="title" + * length="255" + * + */ + public String getTitle() { + return this.title; + } + + public void setTitle(String title) { + this.title = title; + } + + /** + * @hibernate.property + * column="create_date_time" + * length="19" + * not-null="true" + * + */ + public Date getCreateDateTime() { + return this.createDateTime; + } + + public void setCreateDateTime(Date createDateTime) { + this.createDateTime = createDateTime; + } + + /** + * @hibernate.set + * lazy="false" + * inverse="true" + * cascade="none" + * @hibernate.collection-key + * column="learning_library_id" + * @hibernate.collection-one-to-many + * class="org.lamsfoundation.lams.learningdesign.Activity" + * + */ + public Set getActivities() { + return this.activities; + } + + public void setActivities(Set activities) { + this.activities = activities; + } + + public String toString() { + return new ToStringBuilder(this) + .append("learningLibraryId", getLearningLibraryId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof LearningLibrary) ) return false; + LearningLibrary castOther = (LearningLibrary) other; + return new EqualsBuilder() + .append(this.getLearningLibraryId(), castOther.getLearningLibraryId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getLearningLibraryId()) + .toHashCode(); + } +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,118 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class +*/ +public class OptionsActivity extends ComplexActivity implements Serializable { + + /** nullable persistent field */ + private Integer maxNumberOfOptions; + + /** nullable persistent field */ + private Integer minNumberOfOptions; + + /** full constructor */ + public OptionsActivity(Long activityId, + Integer id, + String description, + String title, + Integer xcoord, + Integer ycoord, + Integer orderId, + Boolean defineLater, + java.util.Date createDateTime, + String offlineInstructions, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + java.util.Set activities, + Integer maxNumberOfOptions, + Integer minNumberOfOptions) { + super(activityId, + id, + description, + title, + xcoord, + ycoord, + orderId, + defineLater, + createDateTime, + offlineInstructions, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId, + activities); + this.maxNumberOfOptions = maxNumberOfOptions; + this.minNumberOfOptions = minNumberOfOptions; + } + + /** default constructor */ + public OptionsActivity() { + } + + /** minimal constructor */ + public OptionsActivity(Long activityId, + Boolean defineLater, + java.util.Date createDateTime, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + java.util.Set activities) { + super(activityId, + defineLater, + createDateTime, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId, + activities); + } + + /** + * @hibernate.property column="max_number_of_options" length="5" + */ + public Integer getMaxNumberOfOptions() { + return this.maxNumberOfOptions; + } + + public void setMaxNumberOfOptions(Integer maxNumberOfOptions) { + this.maxNumberOfOptions = maxNumberOfOptions; + } + + /** + * @hibernate.property column="min_number_of_options" length="5" + */ + public Integer getMinNumberOfOptions() { + return this.minNumberOfOptions; + } + + public void setMinNumberOfOptions(Integer minNumberOfOptions) { + this.minNumberOfOptions = minNumberOfOptions; + } + + public String toString() { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,87 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; + +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class +*/ +public class ParallelActivity extends ComplexActivity implements Serializable { + + /** full constructor */ + public ParallelActivity(Long activityId, + Integer id, + String description, + String title, + Integer xcoord, + Integer ycoord, + Integer orderId, + Boolean defineLater, + java.util.Date createDateTime, + String offlineInstructions, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + java.util.Set activities) { + super(activityId, + id, + description, + title, + xcoord, + ycoord, + orderId, + defineLater, + createDateTime, + offlineInstructions, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId, + activities); + } + + /** default constructor */ + public ParallelActivity() { + } + + /** minimal constructor */ + public ParallelActivity(Long activityId, + Boolean defineLater, + java.util.Date createDateTime, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + java.util.Set activities) { + super(activityId, + defineLater, + createDateTime, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId, + activities); + } + + public String toString() { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,91 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + */ +public class PermissionGateActivity extends GateActivity implements Serializable +{ + + /** full constructor */ + public PermissionGateActivity(Long activityId, + Integer id, + String description, + String title, + Integer xcoord, + Integer ycoord, + Integer orderId, + Boolean defineLater, + java.util.Date createDateTime, + String offlineInstructions, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + Integer gateActivityLevelId) + { + super(activityId, + id, + description, + title, + xcoord, + ycoord, + orderId, + defineLater, + createDateTime, + offlineInstructions, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId, + gateActivityLevelId); + } + + /** default constructor */ + public PermissionGateActivity() + { + } + + /** minimal constructor */ + public PermissionGateActivity(Long activityId, + Boolean defineLater, + java.util.Date createDateTime, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + Integer gateActivityLevelId) + { + super(activityId, + defineLater, + createDateTime, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId, + gateActivityLevelId); + } + + public String toString() + { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouping.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouping.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouping.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,64 @@ +/* + * RandomGrouping.java + * + * Created on 14 January 2005, 11:27 + */ + +package org.lamsfoundation.lams.learningdesign; + +import java.util.Set; +/** + * Grouping formed by random assignment + * @author chris + */ +public class RandomGrouping extends Grouping +{ + /** nullable persistent field */ + private Integer numberOfGroups; + + /** nullable persistent field */ + private Integer learnersPerGroup; + + + /** + * + * + */ + public Integer getNumberOfGroups() + { + return this.numberOfGroups; + } + + public void setNumberOfGroups(Integer numberOfGroups) + { + this.numberOfGroups = numberOfGroups; + } + + /** + * + * + */ + public Integer getLearnersPerGroup() + { + return this.learnersPerGroup; + } + + public void setLearnersPerGroup(Integer learnersPerGroup) + { + this.learnersPerGroup = learnersPerGroup; + } + + /** Creates a new instance of RandomGrouping */ + public RandomGrouping() + { + } + + /** full constructor */ + public RandomGrouping(Long groupingId, Integer groupingTypeId, Set groups, Set activities, Integer numberOfGroups, Integer learnersPerGroup) + { + super(groupingId, groupingTypeId, groups, activities); + this.learnersPerGroup = learnersPerGroup; + this.numberOfGroups = numberOfGroups; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,123 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import java.util.Date; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class +*/ +public class ScheduleGateActivity extends GateActivity implements Serializable { + + /** nullable persistent field */ + private Date gateStartDateTime; + + /** nullable persistent field */ + private Date gateEndDateTime; + + /** full constructor */ + public ScheduleGateActivity(Long activityId, + Integer id, + String description, + String title, + Integer xcoord, + Integer ycoord, + Integer orderId, + Boolean defineLater, + java.util.Date createDateTime, + String offlineInstructions, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + Integer gateActivityLevelId, + Date gateStartDateTime, + Date gateEndDateTime) { + super(activityId, + id, + description, + title, + xcoord, + ycoord, + orderId, + defineLater, + createDateTime, + offlineInstructions, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId, + gateActivityLevelId); + this.gateStartDateTime = gateStartDateTime; + this.gateEndDateTime = gateEndDateTime; + } + + /** default constructor */ + public ScheduleGateActivity() { + } + + /** minimal constructor */ + public ScheduleGateActivity(Long activityId, + Boolean defineLater, + java.util.Date createDateTime, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + Integer gateActivityLevelId, + Date gateStartDateTime, + Date gateEndDateTime) { + super(activityId, + defineLater, + createDateTime, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId, + gateActivityLevelId); + this.gateStartDateTime = gateStartDateTime; + this.gateEndDateTime = gateEndDateTime; + } + + /** + * @hibernate.property column="gate_start_date_time" length="19" + */ + public Date getGateStartDateTime() { + return this.gateStartDateTime; + } + + public void setGateStartDateTime(Date gateStartDateTime) { + this.gateStartDateTime = gateStartDateTime; + } + + /** + * @hibernate.property column="gate_end_date_time" length="19" + */ + public Date getGateEndDateTime() { + return this.gateEndDateTime; + } + + public void setGateEndDateTime(Date gateEndDateTime) { + this.gateEndDateTime = gateEndDateTime; + } + + public String toString() { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,87 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class +*/ +public class SequenceActivity extends ComplexActivity implements Serializable { + + /** full constructor */ + public SequenceActivity(Long activityId, + Integer id, + String description, + String title, + Integer xcoord, + Integer ycoord, + Integer orderId, + Boolean defineLater, + java.util.Date createDateTime, + String offlineInstructions, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + java.util.Set activities) { + super(activityId, + id, + description, + title, + xcoord, + ycoord, + orderId, + defineLater, + createDateTime, + offlineInstructions, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId, + activities); + } + + + /** default constructor */ + public SequenceActivity() { + } + + /** minimal constructor */ + public SequenceActivity(Long activityId, + Boolean defineLater, + java.util.Date createDateTime, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + java.util.Set activities) { + super(activityId, + defineLater, + createDateTime, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId, + activities); + } + + public String toString() { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,89 @@ +package org.lamsfoundation.lams.learningdesign; + +import org.lamsfoundation.lams.tool.Tool; +import java.io.Serializable; +import java.util.Date; +import java.util.Set; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + */ +public abstract class SimpleActivity extends Activity implements Serializable +{ + + /** full constructor */ + public SimpleActivity(Long activityId, + Integer id, + String description, + String title, + Integer xcoord, + Integer ycoord, + Integer orderId, + Boolean defineLater, + Date createDateTime, + String offlineInstructions, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, Set transitionsByToActivityId, + Set transitionsByFromActivityId) + { + super(activityId, + id, + description, + title, + xcoord, + ycoord, + orderId, + defineLater, + createDateTime, + offlineInstructions, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId); + } + + /** default constructor */ + public SimpleActivity() + { + } + + /** minimal constructor */ + public SimpleActivity(Long activityId, + Boolean defineLater, + Date createDateTime, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + Set transitionsByToActivityId, + Set transitionsByFromActivityId) + { + super(activityId, + defineLater, + createDateTime, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId); + } + + public String toString() + { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,86 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class +*/ +public class SynchGateActivity extends GateActivity implements Serializable { + + /** full constructor */ + public SynchGateActivity(Long activityId, + Integer id, + String description, + String title, + Integer xcoord, + Integer ycoord, + Integer orderId, + Boolean defineLater, + java.util.Date createDateTime, + String offlineInstructions, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + Integer gateActivityLevelId) { + super(activityId, + id, + description, + title, + xcoord, + ycoord, + orderId, + defineLater, + createDateTime, + offlineInstructions, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId, + gateActivityLevelId); + } + + /** default constructor */ + public SynchGateActivity() { + } + + /** minimal constructor */ + public SynchGateActivity(Long activityId, + Boolean defineLater, + java.util.Date createDateTime, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + Integer gateActivityLevelId) { + super(activityId, + defineLater, + createDateTime, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId, + gateActivityLevelId); + } + + public String toString() { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,146 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import org.apache.commons.lang.builder.ToStringBuilder; + +import org.lamsfoundation.lams.tool.Tool; + +/** + * @hibernate.class + */ +public class ToolActivity extends SimpleActivity implements Serializable +{ + + /** + * Holds value of property toolContentId. + */ + private Long toolContentId; + + /** + * Holds value of property tool. + */ + private Tool tool; + + /** full constructor */ + public ToolActivity(Long activityId, + Integer id, + String description, + String title, + Integer xcoord, + Integer ycoord, + Integer orderId, + Boolean defineLater, + java.util.Date createDateTime, + String offlineInstructions, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + Tool tool, + Long toolContentId) + { + super(activityId, + id, + description, + title, + xcoord, + ycoord, + orderId, + defineLater, + createDateTime, + offlineInstructions, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId); + this.tool = tool; + this.toolContentId = toolContentId; + } + + /** default constructor */ + public ToolActivity() + { + } + + /** minimal constructor */ + public ToolActivity(Long activityId, + Boolean defineLater, + java.util.Date createDateTime, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + java.util.Set transitionsByToActivityId, + java.util.Set transitionsByFromActivityId, + Tool tool, + Long toolContentId) + { + super(activityId, + defineLater, + createDateTime, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionsByToActivityId, + transitionsByFromActivityId); + this.tool = tool; + this.toolContentId = toolContentId; + } + + public String toString() + { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + + /** + * Getter for property toolContentId. + * @return Value of property toolContentId. + */ + public Long getToolContentId() + { + + return this.toolContentId; + } + + /** + * Setter for property toolContentId. + * @param toolContentId New value of property toolContentId. + */ + public void setToolContentId(Long toolContentId) + { + + this.toolContentId = toolContentId; + } + + /** + * Getter for property tool. + * @return Value of property tool. + */ + public Tool getTool() + { + + return this.tool; + } + + /** + * Setter for property tool. + * @param tool New value of property tool. + */ + public void setTool(Tool tool) + { + + this.tool = tool; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Transition.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/Transition.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Transition.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,201 @@ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import java.util.Date; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_learning_transition" + * +*/ +public class Transition implements Serializable { + + /** identifier field */ + private Long transitionId; + + /** nullable persistent field */ + private Integer id; + + /** nullable persistent field */ + private String description; + + /** nullable persistent field */ + private String title; + + /** persistent field */ + private Date createDateTime; + + /** persistent field */ + private org.lamsfoundation.lams.learningdesign.Activity activityByToActivityId; + + /** persistent field */ + private org.lamsfoundation.lams.learningdesign.Activity activityByFromActivityId; + + /** persistent field */ + private org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign; + + /** full constructor */ + public Transition(Long transitionId, Integer id, String description, String title, Date createDateTime, org.lamsfoundation.lams.learningdesign.Activity activityByToActivityId, org.lamsfoundation.lams.learningdesign.Activity activityByFromActivityId, org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign) { + this.transitionId = transitionId; + this.id = id; + this.description = description; + this.title = title; + this.createDateTime = createDateTime; + this.activityByToActivityId = activityByToActivityId; + this.activityByFromActivityId = activityByFromActivityId; + this.learningDesign = learningDesign; + } + + /** default constructor */ + public Transition() { + } + + /** minimal constructor */ + public Transition(Long transitionId, Date createDateTime, org.lamsfoundation.lams.learningdesign.Activity activityByToActivityId, org.lamsfoundation.lams.learningdesign.Activity activityByFromActivityId, org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign) { + this.transitionId = transitionId; + this.createDateTime = createDateTime; + this.activityByToActivityId = activityByToActivityId; + this.activityByFromActivityId = activityByFromActivityId; + this.learningDesign = learningDesign; + } + + /** + * @hibernate.id + * generator-class="identity" + * type="java.lang.Long" + * column="transition_id" + * + */ + public Long getTransitionId() { + return this.transitionId; + } + + public void setTransitionId(Long transitionId) { + this.transitionId = transitionId; + } + + /** + * @hibernate.property + * column="id" + * length="11" + * + */ + public Integer getId() { + return this.id; + } + + public void setId(Integer id) { + this.id = id; + } + + /** + * @hibernate.property + * column="description" + * length="65535" + * + */ + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + /** + * @hibernate.property + * column="title" + * length="255" + * + */ + public String getTitle() { + return this.title; + } + + public void setTitle(String title) { + this.title = title; + } + + /** + * @hibernate.property + * column="create_date_time" + * length="19" + * not-null="true" + * + */ + public Date getCreateDateTime() { + return this.createDateTime; + } + + public void setCreateDateTime(Date createDateTime) { + this.createDateTime = createDateTime; + } + + /** + * @hibernate.many-to-one + * not-null="true" + * @hibernate.column name="to_activity_id" + * + */ + public org.lamsfoundation.lams.learningdesign.Activity getActivityByToActivityId() { + return this.activityByToActivityId; + } + + public void setActivityByToActivityId(org.lamsfoundation.lams.learningdesign.Activity activityByToActivityId) { + this.activityByToActivityId = activityByToActivityId; + } + + /** + * @hibernate.many-to-one + * not-null="true" + * @hibernate.column name="from_activity_id" + * + */ + public org.lamsfoundation.lams.learningdesign.Activity getActivityByFromActivityId() { + return this.activityByFromActivityId; + } + + public void setActivityByFromActivityId(org.lamsfoundation.lams.learningdesign.Activity activityByFromActivityId) { + this.activityByFromActivityId = activityByFromActivityId; + } + + /** + * @hibernate.many-to-one + * not-null="true" + * @hibernate.column name="learning_design_id" + * + */ + public org.lamsfoundation.lams.learningdesign.LearningDesign getLearningDesign() { + return this.learningDesign; + } + + public void setLearningDesign(org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign) { + this.learningDesign = learningDesign; + } + + public String toString() { + return new ToStringBuilder(this) + .append("transitionId", getTransitionId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof Transition) ) return false; + Transition castOther = (Transition) other; + return new EqualsBuilder() + .append(this.getTransitionId(), castOther.getTransitionId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getTransitionId()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/authoring/HashtableUtils.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/authoring/Attic/HashtableUtils.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/authoring/HashtableUtils.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,82 @@ +/* + * Created on Jan 11, 2005 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.authoring; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.Hashtable; +import java.util.Vector; + +/** + * @author Minhas + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class HashtableUtils { + + /* + * Takes a string (possibly null) and returns a not null string + */ + public static String getValue( String possValue ) + { + return ( possValue==null ? "" : possValue ); + } + + /* + * Takes a Long (possibly null) and returns a not null Long + */ + public static Long getIdLong ( Long possValue ) + { + return ( possValue==null ? WDDXTAGS.NUMERIC_NULL_VALUE_LONG : possValue ); + } + + /* + * Takes a Integer (possibly null) and returns a not null Integer + */ + public static Integer getIdInteger ( Integer possValue ) + { + return ( possValue==null ? WDDXTAGS.NUMERIC_NULL_VALUE_INTEGER : possValue ); + } + + public static Date getIdDate(Date possValue){ + return (possValue==null? WDDXTAGS.DATE_NULL_VALUE : possValue); + } + + public static Boolean getBoolean(Boolean possValue){ + return (possValue==null?WDDXTAGS.BOOLEAN_NULL_VALUE : possValue); + } + + /** + * Helper function to retrieve dataset from Hashtable. As it is possible to + * receive object array inside a hashtable. Simply cast it to Collection + * will generate ClassCasting Exception. Therefore, we need to create this + * helper function. + * + * @param clientObj + * @param questionSet + * @return return vector of data + * @author Jacky Fang + */ + public static Vector getCollectionDataFromHashTable(String identifier,Hashtable clientObj) + { + Vector dataSet = new Vector(); + if(clientObj.get(identifier)instanceof Collection) + dataSet = (Vector)clientObj.get(identifier); + else if( clientObj.get(identifier)!=null) + dataSet.addAll(Arrays.asList((Object []) clientObj.get(identifier))); + return dataSet; + } + + + + + + + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/authoring/LDWDDXValueObjectFactory.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/authoring/Attic/LDWDDXValueObjectFactory.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/authoring/LDWDDXValueObjectFactory.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,267 @@ +/* + * Created on Jan 12, 2005 + */ +package org.lamsfoundation.lams.learningdesign.authoring; + +import java.util.Collection; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.Vector; + +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.LearningDesign; +import org.lamsfoundation.lams.learningdesign.LearningLibrary; +import org.lamsfoundation.lams.learningdesign.OptionsActivity; +import org.lamsfoundation.lams.learningdesign.ScheduleGateActivity; +import org.lamsfoundation.lams.learningdesign.Transition; + + +/** + * @author Minhas + * + * TODO When sending a number as a value within a hashtable, we have to either put a proper + * value in the hashtable (ie not null) or leave out that tag all together. On the + * flash end, if we leave out the tag, it will return nothing when that tag is checked, + * but it won't cause an error. Therefore when sending ids, if the id doesn't exist + * (value is null), don't add that tag to the hashtable, and that tag will be left out + * of the packet. + */ +public class LDWDDXValueObjectFactory { + + static LDWDDXValueObjectFactory factory = null; + + public static LDWDDXValueObjectFactory getInstance() + { + return (factory==null? new LDWDDXValueObjectFactory():factory); + } + + public Hashtable requestLearningLibraryList(Collection learningLibraries){ + Hashtable libraryList = new Hashtable(); + + libraryList.put(WDDXTAGS.OBJECT_TYPE,LearningLibrary.LIBRARY_LIST_OBJECT); + libraryList.put(WDDXTAGS.TITLE,"Learning Libraries"); + libraryList.put(WDDXTAGS.DESCRIPTION,"All available system libraries"); + + Vector libraries = new Vector(); + if(learningLibraries!=null){ + Iterator iter = learningLibraries.iterator(); + while(iter.hasNext()){ + LearningLibrary library = (LearningLibrary)iter.next(); + Hashtable output = buildLearningLibraryObject(library); + libraries.add(output); + } + } + libraryList.put(WDDXTAGS.LIB_PACKAGE,libraries); + return libraryList; + } + + private Hashtable buildLearningLibraryObject(LearningLibrary library){ + Hashtable libraries = new Hashtable(); + + libraries.put(WDDXTAGS.LEARNING_LIBRARY_ID,HashtableUtils.getIdLong(library.getLearningLibraryId())); + libraries.put(WDDXTAGS.DESCRIPTION,HashtableUtils.getValue(library.getDescription())); + libraries.put(WDDXTAGS.TITLE,HashtableUtils.getValue(library.getTitle())); + libraries.put(WDDXTAGS.CREATION_DATE,HashtableUtils.getIdDate(library.getCreateDateTime())); + + Collection coll = library.getActivities(); + Vector activities = new Vector(); + if(coll!=null){ + Iterator iter = coll.iterator(); + while (iter.hasNext()){ + Object object = iter.next(); + Hashtable output = buildActivityObject(object); + activities.add(output); + } + } + libraries.put(WDDXTAGS.LIB_ACTIVITIES,activities); + return libraries; + } + private void processActivityType(Hashtable activities, Object activity){ + String activityType = null; + String className = activity.getClass().getName(); + + if (className.equals("org.lamsfoundation.lams.learningdesign.GroupingActivity")) + activityType="GroupingActivity"; + else if (className.equals("org.lamsfoundation.lams.learningdesign.ToolActivity")) + activityType="ToolActivity"; + else if (className.equals("org.lamsfoundation.lams.learningdesign.SynchGateActivity")) + activityType="SynchGateActivity"; + else if (className.equals("org.lamsfoundation.lams.learningdesign.ScheduleGateActivity")){ + activityType="ScheduleGateActivity"; + buildScheduleGateActivityObject(activities,activity); + } + else if (className.equals("org.lamsfoundation.lams.learningdesign.PermissionGateActivity")) + activityType="PermissionGateActivity"; + else if (className.equals("org.lamsfoundation.lams.learningdesign.ParallelActivity")) + activityType="ParallelActivity"; + else if (className.equals("org.lamsfoundation.lams.learningdesign.OptionsActivity")){ + activityType="OptionsActivity"; + buildOptionsActivityObject(activities,activity); + } + else + activityType="SequenceActivity"; + + activities.put(WDDXTAGS.ACTIVITY_TYPE,activityType); + } + + private Hashtable buildActivityObject(Object objActivity){ + Hashtable activities = new Hashtable(); + + activities.put(WDDXTAGS.OBJECT_TYPE,"Activity"); + + processActivityType(activities,objActivity); + + Activity activity =(Activity)objActivity; + activities.put(WDDXTAGS.ACTIVITY_ID,HashtableUtils.getIdLong(activity.getActivityId())); + activities.put(WDDXTAGS.ID,HashtableUtils.getIdInteger(activity.getId())); + activities.put(WDDXTAGS.DESCRIPTION, HashtableUtils.getValue(activity.getDescription())); + activities.put(WDDXTAGS.TITLE, HashtableUtils.getValue(activity.getTitle())); + activities.put(WDDXTAGS.XCOORD,HashtableUtils.getIdInteger(activity.getXcoord())); + activities.put(WDDXTAGS.YCOORD,HashtableUtils.getIdInteger(activity.getYcoord())); + activities.put(WDDXTAGS.CREATION_DATE,HashtableUtils.getIdDate(activity.getCreateDateTime())); + activities.put(WDDXTAGS.OFFLINE_INSTRUCTIONS, HashtableUtils.getValue(activity.getOfflineInstructions())); + activities.put(WDDXTAGS.LIBRARY_IMAGE,HashtableUtils.getValue(activity.getLibraryActivityUiImage())); + + if(activity.getParentActivity()!=null) + activities.put(WDDXTAGS.PARENT_ACTIVITY_ID,activity.getParentActivity().getActivityId()); + + activities.put(WDDXTAGS.ACTIVITY_TYPE_ID,HashtableUtils.getIdInteger(activity.getActivityTypeId())); + + if(activity.getGrouping()!=null) + activities.put(WDDXTAGS.GROUPING_ID,activity.getGrouping().getGroupingId()); + + activities.put(WDDXTAGS.ORDER_ID,HashtableUtils.getIdInteger(activity.getOrderId())); + activities.put(WDDXTAGS.DEFINE_LATER,HashtableUtils.getBoolean(activity.getDefineLater())); + + if(activity.getLearningDesign()!=null) + activities.put(WDDXTAGS.LEARNING_DESIGN_ID,activity.getLearningDesign().getLearningDesignId()); + + if(activity.getLearningLibrary()!=null) + activities.put(WDDXTAGS.LEARNING_LIBRARY_ID,activity.getLearningLibrary().getLearningLibraryId()); + + + Hashtable transitions = new Hashtable(); + + Collection coll = activity.getTransitionsByFromActivityId(); + Vector progress = new Vector(); + if(coll!=null){ + Iterator iter = coll.iterator(); + while (iter.hasNext()){ + Transition transition =(Transition) iter.next(); + Hashtable output = buildTransitionObject(transition); + progress.add(output); + } + } + transitions.put(WDDXTAGS.TRANSITION_FROM,progress); + + coll = activity.getTransitionsByToActivityId(); + progress = new Vector(); + if(coll!=null){ + Iterator iter = coll.iterator(); + while (iter.hasNext()){ + Transition transition =(Transition) iter.next(); + Hashtable output = buildTransitionObject(transition); + progress.add(output); + } + } + transitions.put(WDDXTAGS.TRANSITION_TO,progress); + + activities.put(WDDXTAGS.ACTIVITY_TRANSITIONS, transitions); + return activities; + } + private void buildOptionsActivityObject(Hashtable activities, Object activity){ + OptionsActivity optActivity =(OptionsActivity)activity; + activities.put(WDDXTAGS.MAX_OPTIONS,HashtableUtils.getIdInteger(optActivity.getMaxNumberOfOptions())); + activities.put(WDDXTAGS.MIN_OPTIONS,HashtableUtils.getIdInteger(optActivity.getMinNumberOfOptions())); + } + private void buildScheduleGateActivityObject(Hashtable activities, Object activity){ + ScheduleGateActivity schActivity =(ScheduleGateActivity)activity; + activities.put(WDDXTAGS.GATE_END_DATE,HashtableUtils.getIdDate(schActivity.getGateEndDateTime())); + activities.put(WDDXTAGS.GATE_START_DATE,HashtableUtils.getIdDate(schActivity.getGateStartDateTime())); + } + private Hashtable buildTransitionObject(Transition trans){ + Hashtable transitions = new Hashtable(); + + transitions.put(WDDXTAGS.TRANSITION_ID,HashtableUtils.getIdLong(trans.getTransitionId())); + transitions.put(WDDXTAGS.ID,HashtableUtils.getIdInteger(trans.getId())); + transitions.put(WDDXTAGS.DESCRIPTION,HashtableUtils.getValue(trans.getDescription())); + transitions.put(WDDXTAGS.TITLE,HashtableUtils.getValue(trans.getTitle())); + + Long toActivityID = (trans.getActivityByToActivityId()==null? new Long(-1) : trans.getActivityByToActivityId().getActivityId()); + transitions.put(WDDXTAGS.TRANSITION_TO, toActivityID); + + Long fromActivityID = (trans.getActivityByFromActivityId()==null? new Long(-1): trans.getActivityByFromActivityId().getActivityId()); + transitions.put(WDDXTAGS.TRANSITION_FROM, fromActivityID); + + Long learningDesignID = (trans.getLearningDesign()==null? new Long(-1): trans.getLearningDesign().getLearningDesignId()); + transitions.put(WDDXTAGS.LEARNING_DESIGN_ID, learningDesignID); + + transitions.put(WDDXTAGS.CREATION_DATE,HashtableUtils.getIdDate(trans.getCreateDateTime())); + + return transitions; + } + + public Hashtable requestLearningDesignList(Collection learningDesigns){ + Hashtable designList = new Hashtable(); + + designList.put(WDDXTAGS.OBJECT_TYPE,"LearningDesignList"); + designList.put(WDDXTAGS.TITLE,"Learning Designs"); + designList.put(WDDXTAGS.DESCRIPTION,"All available Learning Designs"); + + Vector designs = new Vector(); + if(learningDesigns!=null){ + Iterator iter = learningDesigns.iterator(); + while(iter.hasNext()){ + LearningDesign design = (LearningDesign)iter.next(); + Hashtable output = buildLearningDesignObject(design); + designs.add(output); + } + } + designList.put(WDDXTAGS.DESIGN_PACKAGE,designs); + return designList; + } + public Hashtable buildLearningDesignObject(LearningDesign design){ + Hashtable designs = new Hashtable(); + + designs.put(WDDXTAGS.OBJECT_TYPE,LearningDesign.DESIGN_OBJECT); + designs.put(WDDXTAGS.LEARNING_DESIGN_ID,HashtableUtils.getIdLong(design.getLearningDesignId())); + designs.put(WDDXTAGS.ID, HashtableUtils.getIdInteger(design.getId())); + designs.put(WDDXTAGS.DESCRIPTION,HashtableUtils.getValue(design.getDescription())); + designs.put(WDDXTAGS.TITLE,HashtableUtils.getValue(design.getTitle())); + designs.put(WDDXTAGS.VALID_DESIGN,HashtableUtils.getBoolean(design.getValidDesign())); + designs.put(WDDXTAGS.READ_ONLY,HashtableUtils.getBoolean(design.getReadOnly())); + designs.put(WDDXTAGS.MAX_ID,HashtableUtils.getIdInteger(design.getMaxId())); + designs.put(WDDXTAGS.DATE_READ_ONLY,HashtableUtils.getIdDate(design.getDateReadOnly())); + designs.put(WDDXTAGS.READ_ACCESS,HashtableUtils.getIdLong(design.getReadAccess())); + designs.put(WDDXTAGS.WRITE_ACCESS,HashtableUtils.getIdLong(design.getWriteAccess())); + designs.put(WDDXTAGS.OPEN_DATE,HashtableUtils.getIdDate(design.getOpenDateTime())); + designs.put(WDDXTAGS.CLOSE_DATE,HashtableUtils.getIdDate(design.getCloseDateTime())); + designs.put(WDDXTAGS.HELP_TEXT,HashtableUtils.getValue(design.getHelpText())); + designs.put(WDDXTAGS.LESSON_COPY,HashtableUtils.getBoolean(design.getLessonCopy())); + designs.put(WDDXTAGS.CREATION_DATE,HashtableUtils.getIdDate(design.getCreateDateTime())); + designs.put(WDDXTAGS.VERSION,HashtableUtils.getValue(design.getVersion())); + + designs.put(WDDXTAGS.FIRST_ACTIVITY_ID,HashtableUtils.getIdLong(design.getFirstActivity().getActivityId())); + + if(design.getUser()!=null) + designs.put(WDDXTAGS.USER_ID,design.getUser().getUserId()); + + if(design.getParentLearningDesign()!=null) + designs.put(WDDXTAGS.PARENT_DESIGN_ID,design.getParentLearningDesign().getLearningDesignId()); + + Collection coll = design.getActivities(); + Vector activities = new Vector(); + if(coll!=null){ + Iterator iter = coll.iterator(); + while (iter.hasNext()){ + Object object = iter.next(); + Hashtable output = buildActivityObject(object); + activities.add(output); + } + } + designs.put(WDDXTAGS.LIB_ACTIVITIES,activities); + return designs; + } + + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/authoring/LDWDDXValueObjectStorer.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/authoring/Attic/LDWDDXValueObjectStorer.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/authoring/LDWDDXValueObjectStorer.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,177 @@ +/* + * Created on Jan 14, 2005 + * + * + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.authoring; + + +import java.util.Date; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.Set; +import java.util.Vector; + +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.GroupingActivity; +import org.lamsfoundation.lams.learningdesign.LearningDesign; +import org.lamsfoundation.lams.learningdesign.OptionsActivity; +import org.lamsfoundation.lams.learningdesign.ParallelActivity; +import org.lamsfoundation.lams.learningdesign.PermissionGateActivity; +import org.lamsfoundation.lams.learningdesign.ScheduleGateActivity; +import org.lamsfoundation.lams.learningdesign.SequenceActivity; +import org.lamsfoundation.lams.learningdesign.SynchGateActivity; +import org.lamsfoundation.lams.learningdesign.ToolActivity; +import org.lamsfoundation.lams.learningdesign.dao.hibernate.LearningDesignDAO; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.dao.hibernate.UserDAO; + +/** + * @author Minhas + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class LDWDDXValueObjectStorer { + + static LDWDDXValueObjectStorer storer = null; + + /** + * @return LDWDDXValueObjectStorer Instance of LDWDDXValueObjectStorer + */ + public static LDWDDXValueObjectStorer getInstance() + { + return (storer==null? new LDWDDXValueObjectStorer():storer); + } + + /** + * @param table Hashtable populated with data from the WDDX packet + * @return Long learning_design_id of the design updated/saved + */ + public Long processLearningDesign(Hashtable table)throws Exception{ + Long learning_design_id = null; + Long oldDesignID=null; + LearningDesign learningDesign = null; + learning_design_id = (Long) table.get(WDDXTAGS.LEARNING_DESIGN_ID); + learningDesign = findLearningDesign(learning_design_id,false); + + boolean readOnly = ((Boolean)table.get(WDDXTAGS.READ_ONLY)).booleanValue(); + if(readOnly){ + throw new Exception("This design is locked, you cannot update it.\n" + + "Please click on File | Save as... and rename it to save it"); + } + updateLearningDesign(table,learningDesign); + Long parentDesignID = (Long)table.get(WDDXTAGS.PARENT_DESIGN_ID); + LearningDesign parent = findLearningDesign(parentDesignID,true); + learningDesign.setParentLearningDesign(parent); + return learningDesign.getLearningDesignId(); + + } + + /** + * @param designID The learning_design_id of the design to be fetched + * @param parent True if you are searching for a design with parent_design_id = designID + * False if you are just searching for design with the given designID (default) + * @return LearningDesign The LearningDesign corresponding to the given designID + */ + public LearningDesign findLearningDesign(Long designID,boolean parent){ + LearningDesignDAO ldDAO = new LearningDesignDAO(); + LearningDesign learningDesign = ldDAO.getLearningDesignById(designID); + + /* If learningDesign is null, this means either its a request to save a new design + * or the design with the given designID doesn't exist + */ + if(learningDesign==null && parent!=true){ + learningDesign = new LearningDesign(); + } + return learningDesign; + } + + /** + * @param table The Hashtable parsed from the WDDX string + * @param design The LearningDesign object to be updated/populated + */ + public void updateLearningDesign(Hashtable table, LearningDesign design){ + design.setId((Integer)table.get(WDDXTAGS.ID)); + design.setTitle((String)table.get(WDDXTAGS.TITLE)); + design.setDescription((String)table.get(WDDXTAGS.DESCRIPTION)); + design.setMaxId((Integer)table.get(WDDXTAGS.MAX_ID)); + design.setValidDesign((Boolean)table.get(WDDXTAGS.VALID_DESIGN)); + design.setReadOnly((Boolean)table.get(WDDXTAGS.READ_ONLY)); + design.setDateReadOnly((Date)table.get(WDDXTAGS.DATE_READ_ONLY)); + design.setHelpText((String)table.get(WDDXTAGS.HELP_TEXT)); + design.setLessonCopy((Boolean)table.get(WDDXTAGS.LESSON_COPY)); + design.setCreateDateTime((Date)table.get(WDDXTAGS.CREATION_DATE)); + design.setVersion((String)table.get(WDDXTAGS.VERSION)); + design.setOpenDateTime((Date)table.get(WDDXTAGS.OPEN_DATE)); + design.setCloseDateTime((Date)table.get(WDDXTAGS.CLOSE_DATE)); + + int userId =((Long) table.get(WDDXTAGS.USER_ID)).intValue(); + UserDAO userDAO = new UserDAO(); + User user = userDAO.getUserById(new Integer(userId)); + design.setUser(user); + + Vector activities =(Vector)table.get(WDDXTAGS.LIB_ACTIVITIES); + Iterator iter = activities.iterator(); + Hashtable designActivities = new Hashtable(); + while(iter.hasNext()){ + Hashtable activity =(Hashtable)iter.next(); + + //processActivity(activity); + } + design.setActivities((Set)table.get(WDDXTAGS.LIB_ACTIVITIES)); + //design.setF + //design.setFirstActivityId(design.calculateFirstActivityID()); + design.setTransitions((Set)table.get(WDDXTAGS.ACTIVITY_TRANSITIONS)); + } + + private Activity processActivity(Hashtable table){ + String activityType = (String) table.get(WDDXTAGS.ACTIVITY_TYPE); + + Activity activity = null; + + if (activityType.equals("GroupingActivity")) + activity = new GroupingActivity(); + else if (activityType.equals("ToolActivity")) + activity = new ToolActivity(); + else if (activityType.equals("SynchGateActivity")) + activity = new SynchGateActivity(); + else if (activityType.equals("ScheduleGateActivity")) + activity = new ScheduleGateActivity(); + else if (activityType.equals("PermissionGateActivity")) + activity = new PermissionGateActivity(); + else if (activityType.equals("ParallelActivity")) + activity = new ParallelActivity(); + else if (activityType.equals("OptionsActivity")) + activity = new OptionsActivity(); + else + activity = new SequenceActivity(); + + activity.setId((Integer)table.get(WDDXTAGS.ID)); + activity.setDescription((String)table.get(WDDXTAGS.DESCRIPTION)); + activity.setTitle((String)table.get(WDDXTAGS.TITLE)); + activity.setXcoord((Integer)table.get(WDDXTAGS.XCOORD)); + activity.setYcoord((Integer)table.get(WDDXTAGS.YCOORD)); + activity.setCreateDateTime((Date)table.get(WDDXTAGS.CREATION_DATE)); + activity.setOfflineInstructions((String)table.get(WDDXTAGS.OFFLINE_INSTRUCTIONS)); + activity.setLibraryActivityUiImage((String)table.get(WDDXTAGS.LIBRARY_IMAGE)); + + return activity; + } + + /** + * @return String Standarad ClientStatus message in case of an error in WDDX format + */ + public static String getStandardErrorStatusMessages(){ + StringBuffer message = new StringBuffer(); + message.append("
"); + message.append(""); + message.append("An Exception has occured while serializing the status message"); + message.append("StatusMessage"); + message.append(""); + message.append("Error"); + message.append(""); + return message.toString(); + } +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/authoring/WDDXTAGS.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/authoring/Attic/WDDXTAGS.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/authoring/WDDXTAGS.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,88 @@ +/* + * Created on Jan 11, 2005 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.authoring; + +import java.util.Date; + + + +/** + * @author Minhas + * The tags used in WDDX Packet + */ +public interface WDDXTAGS { + + /* General Tags */ + public static final String OBJECT_TYPE = "objectType"; + public static final String DESCRIPTION = "description"; + public static final String TITLE = "title"; + public static final String ID ="id"; + public static final String XCOORD="xcoord"; + public static final String YCOORD="ycoord"; + public static final String READ_ACCESS="read_access"; + public static final String WRITE_ACCESS="write_access"; + + /*Learning Library specific tags */ + public static final String LEARNING_LIBRARY_ID ="learning_library_id"; + public static final String LEARNING_DESIGN_ID="learning_design_id"; + public static final String TRANSITION_ID ="transition_id"; + public static final String TOOL_ID="tool_id"; + public static final String TOOL_CONTENT_ID="tool_content_id"; + + public static final String CREATION_DATE ="create_date_time"; + + public static final String LIB_ACTIVITIES="activities"; + public static final String LIB_PACKAGE = "libraries"; + public static final String DESIGN_PACKAGE ="designs"; + + + public static final Long NUMERIC_NULL_VALUE_LONG = new Long(-1); + public static final Integer NUMERIC_NULL_VALUE_INTEGER = new Integer(-1); + public static final Date DATE_NULL_VALUE = new Date(); + public static final Boolean BOOLEAN_NULL_VALUE = new Boolean("false"); + + /*Activity specific tags*/ + public static final String ACTIVITY_ID ="activity_id"; + public static final String PARENT_ACTIVITY_ID ="parent_activity_id"; + public static final String ACTIVITY_TYPE_ID ="learning_activity_type_id"; + public static final String GROUPING_ID ="grouping_id"; + public static final String ORDER_ID ="order_id"; + public static final String DEFINE_LATER ="define_later_flag"; + public static final String OFFLINE_INSTRUCTIONS ="offline_instructions"; + public static final String MAX_OPTIONS="max_number_of_options"; + public static final String MIN_OPTIONS="min_number_of_options"; + public static final String LIBRARY_IMAGE ="library_activity_ui_image"; + + public static final String GATE_ACTIVITY_LEVEL_ID ="gate_activity_level_id"; + public static final String GATE_START_DATE ="gate_start_date_time"; + public static final String GATE_END_DATE ="gate_end_date_time"; + + public static final String PROGRESS_CURRENT="progressCurrent"; + public static final String PROGRESS_COMPLETED="progressCompleted"; + + public static final String LEARNER_PROGRESS_ID="learner_progress_id"; + + /*Transition specific tags */ + public static final String ACTIVITY_TYPE ="activityType"; + public static final String ACTIVITY_TRANSITIONS ="activityTransitions"; + public static final String TRANSITION_TO="toActivity"; + public static final String TRANSITION_FROM="fromActivity"; + + /*Learning Design specific tags*/ + public static final String FIRST_ACTIVITY_ID ="first_activity_id"; + public static final String MAX_ID ="max_id"; + public static final String VALID_DESIGN ="valid_design_flag"; + public static final String READ_ONLY ="read_only_flag"; + public static final String DATE_READ_ONLY ="date_read_only"; + public static final String HELP_TEXT ="help_text"; + public static final String LESSON_COPY="lesson_copy_flag"; + public static final String VERSION="version"; + public static final String PARENT_DESIGN_ID ="parent_learning_design_id"; + public static final String OPEN_DATE="open_date_time"; + public static final String CLOSE_DATE="close_date_time"; + public static final String USER_ID="user_id"; +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IActivityDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IActivityDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IActivityDAO.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,39 @@ +/* + * Created on Dec 3, 2004 + */ +package org.lamsfoundation.lams.learningdesign.dao; + +import java.util.List; + +import org.lamsfoundation.lams.learningdesign.Activity; + +/** + * @author MMINHAS + * + */ +public interface IActivityDAO extends IBaseDAO{ + + /** + * @param activityId The activityId of the activity + * @return Activity populated Activity object + */ + public Activity getActivityById(Long activityId); + + /** + * @param parentActivityId The activityId of the parent activity + * @return Activity populated Activity object + */ + public Activity getActivityByParentActivityId(Long parentActivityId); + + /** + * @return List of all the activities + */ + public List getAllActivities(); + + /** + * @param learningDesignId The id of the learningDesign + * @return List of all the activities + */ + public List getActivitiesByLearningDesignId(Long learningDesignId); + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IBaseDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/Attic/IBaseDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IBaseDAO.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,42 @@ +/* + * Created on Dec 4, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.dao; + +import java.io.Serializable; +import java.util.List; + +/** + * @author manpreet + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public interface IBaseDAO { + + /** + * @param object The object to be inserted + */ + public void insert(Object object); + /** + * @param object The object to be updated + */ + public void update(Object object); + /** + * @param object The object to be deleted + */ + public void delete(Object object); + + /** + * @param objClass + * @param id + */ + public Object find(Class objClass, Serializable id); + /** + * @param objClass + */ + public List findAll(Class objClass); +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IGroupDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IGroupDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IGroupDAO.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,19 @@ +/* + * Created on Dec 6, 2004 + */ +package org.lamsfoundation.lams.learningdesign.dao; + +import org.lamsfoundation.lams.learningdesign.Group; + +/** + * @author manpreet + */ +public interface IGroupDAO extends IBaseDAO { + + /** + * @param groupID + * @return Group populated Group object + */ + public Group getGroupById(Long groupID); + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IGroupingDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IGroupingDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IGroupingDAO.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,19 @@ +/* + * Created on Dec 6, 2004 + */ +package org.lamsfoundation.lams.learningdesign.dao; + +import org.lamsfoundation.lams.learningdesign.Grouping; + +/** + * @author manpreet + */ +public interface IGroupingDAO extends IBaseDAO { + + /** + * @param groupingID + * @return Grouping populated Grouping object + */ + public Grouping getGroupingById(Long groupingID); + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningDesignDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningDesignDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningDesignDAO.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,36 @@ +/* + * Created on Dec 4, 2004 + */ +package org.lamsfoundation.lams.learningdesign.dao; + +import java.util.List; + +import org.lamsfoundation.lams.learningdesign.LearningDesign; +; +/** + * @author manpreet + */ +public interface ILearningDesignDAO extends IBaseDAO{ + + /** + * @param learningDesignId + * @return LearningDesign populated LearningDesign object + */ + public LearningDesign getLearningDesignById(Long learningDesignId); + /** + * @param title + * @return LearningDesign populated LearningDesign object + */ + public LearningDesign getLearningDesignByTitle(String title); + + /** + * @return List of all Learning designs + */ + public List getAllLearningDesigns(); + + /** + * @param userID + * @return List of learning designs with given userID + */ + public List getLearningDesignByUserId(Long userID); +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningLibraryDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningLibraryDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningLibraryDAO.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,25 @@ +/* + * Created on Dec 4, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.dao; + +import java.util.List; + +import org.lamsfoundation.lams.learningdesign.LearningLibrary; + +/** + * @author manpreet + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public interface ILearningLibraryDAO extends IBaseDAO { + + public LearningLibrary getLearningLibraryById(Long learningLibraryId); + public LearningLibrary getLearningLibraryByTitle(String title); + public List getAllLearningLibraries(); + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ITransitionDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ITransitionDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ITransitionDAO.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,19 @@ +/* + * Created on Dec 6, 2004 + */ +package org.lamsfoundation.lams.learningdesign.dao; + +import org.lamsfoundation.lams.learningdesign.Transition; + +/** + * @author MMINHAS + */ +public interface ITransitionDAO extends IBaseDAO { + + /** + * @param transitionID + * @return Transition populated Transition object + */ + public Transition getTransitionById(Long transitionID); + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java 28 Jan 2005 04:20:47 -0000 1.1 @@ -0,0 +1,71 @@ +/* + * Created on Dec 3, 2004 + */ +package org.lamsfoundation.lams.learningdesign.dao.hibernate; + +import java.util.List; +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; + +/** + * @author MMINHAS + */ +public class ActivityDAO extends BaseDAO implements IActivityDAO { + + private static final String FIND_BY_PARENT = "from lams_learning_activity activity where activity.parent_activity_id=?" ; + private static final String FIND_BY_LEARNING_DESIGN_ID ="from lams_learning_activity activity where activity.learning_design_id=?" ; + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IActivityDAO#getActivityById(java.lang.Long) + */ + public Activity getActivityById(Long activityId) { + return (Activity) super.find(Activity.class,activityId); + } + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IActivityDAO#getActivityByParentActivityId(java.lang.Long) + */ + public Activity getActivityByParentActivityId(Long parentActivityId) { + List list = this.getHibernateTemplate().find(FIND_BY_PARENT,parentActivityId); + if(list.size()==0) + return null; + else + return (Activity) list.get(0); + } + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IActivityDAO#getAllActivities() + */ + public List getAllActivities() { + return super.findAll(Activity.class); + } + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IActivityDAO#getActivitiesByLearningDesignId(java.lang.Long) + */ + public List getActivitiesByLearningDesignId(Long learningDesignId) { + return this.getHibernateTemplate().find(FIND_BY_LEARNING_DESIGN_ID,learningDesignId); + } + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IActivityDAO#insertActivity(org.lamsfoundation.lams.learningdesign.Activity) + */ + public void insertActivity(Activity activity) { + this.getHibernateTemplate().save(activity); + } + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IActivityDAO#updateActivity(org.lamsfoundation.lams.learningdesign.Activity) + */ + public void updateActivity(Activity activity) { + this.getHibernateTemplate().update(activity); + } + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IActivityDAO#deleteActivity(org.lamsfoundation.lams.learningdesign.Activity) + */ + public void deleteActivity(Activity activity) { + this.getHibernateTemplate().delete(activity); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/BaseDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/Attic/BaseDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/BaseDAO.java 28 Jan 2005 04:20:47 -0000 1.1 @@ -0,0 +1,60 @@ +/* + * Created on Dec 4, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.dao.hibernate; + +import java.io.Serializable; +import java.util.List; + +import org.springframework.orm.hibernate.support.HibernateDaoSupport; + +import org.lamsfoundation.lams.learningdesign.dao.IBaseDAO; + +/** + * @author manpreet + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class BaseDAO extends HibernateDaoSupport implements IBaseDAO { + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IBaseDAO#insert(java.lang.Object) + */ + public void insert(Object object) { + this.getHibernateTemplate().save(object); + } + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IBaseDAO#update(java.lang.Object) + */ + public void update(Object object) { + this.getHibernateTemplate().update(object); + } + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IBaseDAO#delete(java.lang.Object) + */ + public void delete(Object object) { + this.getHibernateTemplate().delete(object); + } + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IBaseDAO#find(java.lang.Class, java.lang.Long) + */ + public Object find(Class objClass, Serializable id) { + return this.getHibernateTemplate().load(objClass,id); + } + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IBaseDAO#findAll(java.lang.Class) + */ + public List findAll(Class objClass) { + String query="from obj in class " + objClass.getName(); + return this.getHibernateTemplate().find(query); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/GroupDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/GroupDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/GroupDAO.java 28 Jan 2005 04:20:47 -0000 1.1 @@ -0,0 +1,28 @@ +/* + * Created on Dec 6, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.dao.hibernate; + +import org.lamsfoundation.lams.learningdesign.Group; +import org.lamsfoundation.lams.learningdesign.dao.IGroupDAO; + +/** + * @author MMINHAS + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class GroupDAO extends BaseDAO implements IGroupDAO { + + /* (non-Javadoc) + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IGroupDAO#getGroupById(java.lang.Long) + */ + public Group getGroupById(Long groupID) { + // TODO Auto-generated method stub + return null; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/GroupingDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/GroupingDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/GroupingDAO.java 28 Jan 2005 04:20:47 -0000 1.1 @@ -0,0 +1,28 @@ +/* + * Created on Dec 6, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.dao.hibernate; + +import org.lamsfoundation.lams.learningdesign.Grouping; +import org.lamsfoundation.lams.learningdesign.dao.IGroupingDAO; + +/** + * @author MMINHAS + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class GroupingDAO extends BaseDAO implements IGroupingDAO { + + /* (non-Javadoc) + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IGroupingDAO#getGroupingById(java.lang.Long) + */ + public Grouping getGroupingById(Long groupingID) { + // TODO Auto-generated method stub + return null; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java 28 Jan 2005 04:20:47 -0000 1.1 @@ -0,0 +1,56 @@ +/* + * Created on Dec 4, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.dao.hibernate; + +import java.util.List; + +import net.sf.hibernate.Hibernate; +import net.sf.hibernate.HibernateException; +import net.sf.hibernate.type.Type; + +import org.lamsfoundation.lams.learningdesign.LearningDesign; +import org.lamsfoundation.lams.learningdesign.dao.ILearningDesignDAO; + +/** + * @author manpreet + */ +public class LearningDesignDAO extends BaseDAO implements ILearningDesignDAO { + + private static final String TABLENAME ="lams_learning_design"; + private static final String FIND_BY_USERID = "from " + TABLENAME +" in class " + LearningDesign.class.getName()+ " where user_id =?"; + + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.ILearningDesignDAO#getLearningDesignById(java.lang.Long) + */ + public LearningDesign getLearningDesignById(Long learningDesignId) { + return (LearningDesign)super.find(LearningDesign.class,learningDesignId); + } + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.ILearningDesignDAO#getLearningDesignByTitle(java.lang.String) + */ + public LearningDesign getLearningDesignByTitle(String title) { + return (LearningDesign) super.find(LearningDesign.class,title); + } + + /* + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.ILearningDesignDAO#getAllLearningDesigns() + */ + public List getAllLearningDesigns() { + return super.findAll(LearningDesign.class); + } + + public List getLearningDesignByUserId(Long userID){ + try{ + return this.getSession().find(FIND_BY_USERID,new Object[]{userID}, new Type[]{Hibernate.LONG}); + }catch(HibernateException he){ + return null; + /*TODO Exception Handling*/ + } + } +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningLibraryDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningLibraryDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningLibraryDAO.java 28 Jan 2005 04:20:47 -0000 1.1 @@ -0,0 +1,42 @@ +/* + * Created on Dec 4, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.dao.hibernate; + +import java.util.List; + +import org.lamsfoundation.lams.learningdesign.LearningLibrary; +import org.lamsfoundation.lams.learningdesign.dao.ILearningLibraryDAO; + +/** + * @author manpreet + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class LearningLibraryDAO extends BaseDAO implements ILearningLibraryDAO { + + /* (non-Javadoc) + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.ILearningLibraryDAO#getLearningLibraryById(java.lang.Long) + */ + public LearningLibrary getLearningLibraryById(Long learningLibraryId) { + return (LearningLibrary)super.find(LearningLibrary.class,learningLibraryId); + } + + /* (non-Javadoc) + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.ILearningLibraryDAO#getLearningLibraryByTitle(java.lang.String) + */ + public LearningLibrary getLearningLibraryByTitle(String title) { + return (LearningLibrary)super.find(LearningLibrary.class,title); + } + + /* (non-Javadoc) + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.ILearningLibraryDAO#getAllLearningLibraries() + */ + public List getAllLearningLibraries() { + return super.findAll(LearningLibrary.class); + } +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/TransitionDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/TransitionDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/TransitionDAO.java 28 Jan 2005 04:20:47 -0000 1.1 @@ -0,0 +1,28 @@ +/* + * Created on Dec 6, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.dao.hibernate; + +import org.lamsfoundation.lams.learningdesign.Transition; +import org.lamsfoundation.lams.learningdesign.dao.ITransitionDAO; + +/** + * @author MMINHAS + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class TransitionDAO extends BaseDAO implements ITransitionDAO { + + /* (non-Javadoc) + * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.ITransitionDAO#getTransitionById(java.lang.Long) + */ + public Transition getTransitionById(Long transitionID) { + // TODO Auto-generated method stub + return null; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/AuthoringService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/Attic/AuthoringService.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/AuthoringService.java 28 Jan 2005 04:20:47 -0000 1.1 @@ -0,0 +1,228 @@ +/* + * Created on Dec 7, 2004 + */ +package org.lamsfoundation.lams.learningdesign.service; + +import java.io.IOException; +import java.util.Hashtable; +import java.util.List; + + +import org.lamsfoundation.lams.learningdesign.authoring.LDWDDXValueObjectFactory; +import org.lamsfoundation.lams.learningdesign.authoring.LDWDDXValueObjectStorer; +import org.lamsfoundation.lams.learningdesign.authoring.WDDXTAGS; +import org.lamsfoundation.lams.learningdesign.dao.hibernate.LearningDesignDAO; +import org.lamsfoundation.lams.learningdesign.dao.hibernate.LearningLibraryDAO; +import org.lamsfoundation.lams.learningdesign.LearningDesign; +import org.lamsfoundation.lams.learningdesign.LearningLibrary; +import org.lamsfoundation.lams.learningdesign.service.IAuthoringService; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.util.ClientStatusMessage; +import org.lamsfoundation.lams.util.WDDXProcessor; + + + +import org.apache.log4j.Logger; + +/** + * @author manpreet + */ +public class AuthoringService implements IAuthoringService { + + protected LearningDesignDAO learningDesignDAO; + protected LearningLibraryDAO learningLibraryDAO; + + private static Logger logger = Logger.getLogger(AuthoringService.class.getName()); + + /** + * @param learningDesignDAO The learningDesignDAO to set. + */ + public void setLearningDesignDAO(LearningDesignDAO learningDesignDAO) { + this.learningDesignDAO = learningDesignDAO; + } + + /** + * @param learningLibraryDAO The learningLibraryDAO to set. + */ + public void setLearningLibraryDAO(LearningLibraryDAO learningLibraryDAO) { + this.learningLibraryDAO = learningLibraryDAO; + } + + public LearningDesign getLearningDesign(Long learningDesignID){ + return learningDesignDAO.getLearningDesignById(learningDesignID); + } + + public void saveLearningDesign(LearningDesign learningDesign){ + learningDesignDAO.insert(learningDesign); + } + public List getAllLearningDesigns(){ + return learningDesignDAO.getAllLearningDesigns(); + } + public void updateLearningDesign(Long learningDesignID) { + + } + public List getAllLearningLibraries(){ + return learningLibraryDAO.getAllLearningLibraries(); + + } + public String requestLearningLibraryWDDX(){ + String wddxPacket = null; + LearningLibrary library = null; + List libraries = getAllLearningLibraries(); + Hashtable result = null; + result = LDWDDXValueObjectFactory.getInstance().requestLearningLibraryList(libraries); + try{ + wddxPacket = WDDXProcessor.serialize(result); + }catch(IOException e){ + /* TODO Proper Exception Handling and + * TODO Generate client status error messages + */ + } + return wddxPacket; + } + public String requestLearningDesignListWDDX(){ + String wddxPacket = null; + List designs = learningDesignDAO.getAllLearningDesigns(); + Hashtable result = null; + result = LDWDDXValueObjectFactory.getInstance().requestLearningDesignList(designs); + try{ + wddxPacket = WDDXProcessor.serialize(result); + }catch(IOException e){ + /* TODO Proper Exception Handling and + * TODO Generate client status error messages + * */ + } + return wddxPacket; + } + public String requestLearningDesignWDDX(Long learningDesignID){ + String wddxPacket = null; + LearningDesign design = learningDesignDAO.getLearningDesignById(learningDesignID); + Hashtable result = null; + ClientStatusMessage statusMessage = null; + if(design==null){ + statusMessage = new ClientStatusMessage(ClientStatusMessage.ERROR, + "No such learning design with learning_design_id " + learningDesignID + " exist", + ""); + wddxPacket = serializeStatusMessage(statusMessage); + } + else{ + result = LDWDDXValueObjectFactory.getInstance().buildLearningDesignObject(design); + try{ + wddxPacket = WDDXProcessor.serialize(result); + }catch(IOException ie){ + statusMessage = new ClientStatusMessage(ClientStatusMessage.ERROR, + "An Error has occured while serializing the LeaarningDesign Object", + ""); + wddxPacket = serializeStatusMessage(statusMessage); + } + } + return wddxPacket; + } + public String requestLearningDesignWDDX(User user){ + Long userID = new Long(user.getUserId().longValue()); + List designs = learningDesignDAO.getLearningDesignByUserId(userID); + String wddxPacket = null; + Hashtable result = null; + result = LDWDDXValueObjectFactory.getInstance().requestLearningDesignList(designs); + try{ + wddxPacket = WDDXProcessor.serialize(result); + }catch(IOException e){ + /* TODO Proper Exception Handling and + * TODO Generate client status error messages + * */ + } + return wddxPacket; + } + + /** + * @param wddxPacket The WDDX Packet received from the flash side to be stored/updated + * in the database + * @return String An acknowledgement message in WDDX format + */ + public String storeWDDXData(String wddxPacket){ + Hashtable wddxData = null; + ClientStatusMessage statusMessage=null; + Long learningDesignID = null; + String resultWddx=null; + String responseData=""; + if(containsNulls(wddxPacket)){ + statusMessage = new ClientStatusMessage(ClientStatusMessage.ERROR, + "Unable to store the WDDX packet as it contains null", + responseData); + resultWddx = serializeStatusMessage(statusMessage); + return resultWddx; + } + + try{ + wddxData =(Hashtable)WDDXProcessor.deserialize(wddxPacket); + }catch(Exception e){ + statusMessage = new ClientStatusMessage(ClientStatusMessage.ERROR, + "Unable to deserialize WDDX packet " + e.getMessage(), + responseData); + resultWddx = serializeStatusMessage(statusMessage); + return resultWddx; + } + if(wddxData==null){ + statusMessage = new ClientStatusMessage(ClientStatusMessage.ERROR, + "The WDDX packet returned is NULL", + responseData); + resultWddx = serializeStatusMessage(statusMessage); + return resultWddx; + } + else{ + String objectType =(String)wddxData.get(WDDXTAGS.OBJECT_TYPE); + if(objectType.equals(LearningDesign.DESIGN_OBJECT)){ + try{ + learningDesignID = LDWDDXValueObjectStorer.getInstance().processLearningDesign(wddxData); + statusMessage = new ClientStatusMessage(ClientStatusMessage.RECEIVED, + "Design successfully stored", + (learningDesignID!=null?learningDesignID.toString():"")); + resultWddx = WDDXProcessor.serialize(statusMessage); + }catch(Exception e){ + statusMessage = new ClientStatusMessage(ClientStatusMessage.ERROR, + e.getMessage(), + (learningDesignID!=null?learningDesignID.toString():"")); + try{ + resultWddx = WDDXProcessor.serialize(statusMessage); + }catch(IOException ie){ + resultWddx = LDWDDXValueObjectStorer.getStandardErrorStatusMessages(); + } + return resultWddx; + } + + } + else if (objectType.equals(LearningDesign.DESIGN_LIST_OBJECT)){ + + } + else if (objectType.equals(LearningLibrary.LIBRARY_OBJECT)){ + + } + else{ + /*TODO Handle all other cases*/ + } + + } + return resultWddx; + } + private String serializeStatusMessage(ClientStatusMessage message){ + String result = null; + try{ + result = WDDXProcessor.serialize(message); + }catch(IOException ie){ + result = LDWDDXValueObjectStorer.getStandardErrorStatusMessages(); + } + return result; + } + /** + * Checks whether the WDDX packet contains any invalid + * "". It returns true if there exists any such null + */ + private boolean containsNulls(String packet) + { + if (packet.indexOf("") != -1) + return true; + else + return false; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/IAuthoringService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/Attic/IAuthoringService.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/IAuthoringService.java 28 Jan 2005 04:20:47 -0000 1.1 @@ -0,0 +1,32 @@ +/* + * Created on Dec 7, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.service; + +import java.util.List; + +import org.lamsfoundation.lams.learningdesign.LearningDesign; +import org.lamsfoundation.lams.usermanagement.User; + +/** + * @author MMINHAS + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public interface IAuthoringService { + + public LearningDesign getLearningDesign(Long learningDesignID); + public List getAllLearningDesigns(); + public void saveLearningDesign(LearningDesign learningDesign); + public void updateLearningDesign(Long learningDesignID); + public List getAllLearningLibraries(); + public String requestLearningLibraryWDDX(); + public String requestLearningDesignWDDX(Long learningDesignID); + public String requestLearningDesignListWDDX(); + public String requestLearningDesignWDDX(User user); + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/web/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/web/Attic/AuthoringAction.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/web/AuthoringAction.java 28 Jan 2005 04:20:47 -0000 1.1 @@ -0,0 +1,38 @@ +/* + * Created on Dec 7, 2004 + */ +package org.lamsfoundation.lams.learningdesign.web; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.actions.DispatchAction; + +/** + * @author manpreet + */ +public class AuthoringAction extends DispatchAction{ + + public ActionForward saveLearningDesign(ActionMapping mapping, + ActionForm form, + HttpServletRequest req, + HttpServletResponse res) throws IOException, + ServletException{ + return null; + } + + public ActionForward getLearningDesign(ActionMapping mapping, + ActionForm form, + HttpServletRequest req, + HttpServletResponse res)throws IOException, + ServletException{ + return null; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/lesson/LearnerProgress.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/LearnerProgress.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/LearnerProgress.java 28 Jan 2005 04:20:19 -0000 1.1 @@ -0,0 +1,149 @@ +package org.lamsfoundation.lams.lesson; + +import org.lamsfoundation.lams.usermanagement.User; +import java.io.Serializable; +import java.util.Set; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * Temp roll back to rev 1.2 + * @hibernate.class + * table="lams_learner_progress" + * +*/ +public class LearnerProgress implements Serializable { + + /** identifier field */ + private Long learnerProgressId; + + /** persistent field */ + private User user; + + /** persistent field */ + private org.lamsfoundation.lams.lesson.Lesson lesson; + + /** persistent field */ + private Set progressCurrents; + + /** persistent field */ + private Set progressCompleteds; + + /** full constructor */ + public LearnerProgress(Long learnerProgressId, User user, org.lamsfoundation.lams.lesson.Lesson lesson, Set progressCurrents, Set progressCompleteds) { + this.learnerProgressId = learnerProgressId; + this.user = user; + this.lesson = lesson; + this.progressCurrents = progressCurrents; + this.progressCompleteds = progressCompleteds; + } + + /** default constructor */ + public LearnerProgress() { + } + + /** + * @hibernate.id + * generator-class="identity" + * type="java.lang.Long" + * column="learner_progress_id" + * + */ + public Long getLearnerProgressId() { + return this.learnerProgressId; + } + + public void setLearnerProgressId(Long learnerProgressId) { + this.learnerProgressId = learnerProgressId; + } + + /** + * @hibernate.many-to-one + * not-null="true" + * @hibernate.column name="user_id" + * + */ + public User getUser() { + return this.user; + } + + public void setUser(User user) { + this.user = user; + } + + /** + * @hibernate.many-to-one + * not-null="true" + * @hibernate.column name="lesson_id" + * + */ + public org.lamsfoundation.lams.lesson.Lesson getLesson() { + return this.lesson; + } + + public void setLesson(org.lamsfoundation.lams.lesson.Lesson lesson) { + this.lesson = lesson; + } + + /** + * @hibernate.set + * lazy="true" + * inverse="true" + * cascade="none" + * @hibernate.collection-key + * column="learner_progress_id" + * @hibernate.collection-one-to-many + * class="org.lamsfoundation.lams.lesson.ProgressCurrent" + * + */ + public Set getProgressCurrents() { + return this.progressCurrents; + } + + public void setProgressCurrents(Set progressCurrents) { + this.progressCurrents = progressCurrents; + } + + /** + * @hibernate.set + * lazy="true" + * inverse="true" + * cascade="none" + * @hibernate.collection-key + * column="learner_progress_id" + * @hibernate.collection-one-to-many + * class="org.lamsfoundation.lams.lesson.ProgressCompleted" + * + */ + public Set getProgressCompleteds() { + return this.progressCompleteds; + } + + public void setProgressCompleteds(Set progressCompleteds) { + this.progressCompleteds = progressCompleteds; + } + + public String toString() { + return new ToStringBuilder(this) + .append("learnerProgressId", getLearnerProgressId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof LearnerProgress) ) return false; + LearnerProgress castOther = (LearnerProgress) other; + return new EqualsBuilder() + .append(this.getLearnerProgressId(), castOther.getLearnerProgressId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getLearnerProgressId()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/lesson/Lesson.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/Lesson.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/Lesson.java 28 Jan 2005 04:20:19 -0000 1.1 @@ -0,0 +1,261 @@ +package org.lamsfoundation.lams.lesson; + +import org.lamsfoundation.lams.learningdesign.Grouping; +import org.lamsfoundation.lams.learningdesign.LearningDesign; +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.User; +import java.io.Serializable; +import java.util.Date; +import java.util.Set; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * A Lesson is a learning sequence that is assocated with + * a number of users for use in learning. + * + */ +public class Lesson implements Serializable { + + + public static final Integer NOT_STARTED_STATE = new Integer(1); + + public static final Integer STARTED_STATE = new Integer(2); + + public static final Integer SUSPENDED_STATE = new Integer(3); + + public static final Integer FINISHED_STATE = new Integer(4); + + public static final Integer ARCHIVED_STATE = new Integer(5); + + /** identifier field */ + private Long lessonId; + + /** persistent field */ + private Date createDateTime; + + /** nullable persistent field */ + private Date startDateTime; + + /** nullable persistent field */ + private Date endDateTime; + + /** persistent field */ + private User user; + + /** persistent field */ + private Integer lessonStateId; + + /** persistent field */ + private LearningDesign learningDesign; + + /** persistent field */ + private LessonClass lessonClass; + + /** persistent field */ + private Organisation organisation; + + /** persistent field */ + private Set learnerProgresses; + + /** + * Holds value of property learners. + */ + private User learners; + + + + + /** full constructor */ + public Lesson(Long lessonId, Date createDateTime, Date startDateTime, Date endDateTime, User user, Integer lessonStateId, LearningDesign learningDesign, LessonClass lessonClass, Organisation organisation, Set learnerProgresses) { + this.lessonId = lessonId; + this.createDateTime = createDateTime; + this.startDateTime = startDateTime; + this.endDateTime = endDateTime; + this.user = user; + this.lessonStateId = lessonStateId; + this.learningDesign = learningDesign; + this.lessonClass = lessonClass; + this.organisation = organisation; + this.learnerProgresses = learnerProgresses; + } + + /** default constructor */ + public Lesson() { + } + + /** minimal constructor */ + public Lesson(Long lessonId, Date createDateTime, User user, Integer lessonStateId, LearningDesign learningDesign, LessonClass lessonClass, Organisation organisation, Set learnerProgresses) { + this.lessonId = lessonId; + this.createDateTime = createDateTime; + this.user = user; + this.lessonStateId = lessonStateId; + this.learningDesign = learningDesign; + this.lessonClass = lessonClass; + this.organisation = organisation; + this.learnerProgresses = learnerProgresses; + } + + /** + * + * + */ + public Long getLessonId() { + return this.lessonId; + } + + public void setLessonId(Long lessonId) { + this.lessonId = lessonId; + } + + /** + * + * + */ + public Date getCreateDateTime() { + return this.createDateTime; + } + + public void setCreateDateTime(Date createDateTime) { + this.createDateTime = createDateTime; + } + + /** + * + */ + public Date getStartDateTime() { + return this.startDateTime; + } + + public void setStartDateTime(Date startDateTime) { + this.startDateTime = startDateTime; + } + + /** + * + * + */ + public Date getEndDateTime() { + return this.endDateTime; + } + + public void setEndDateTime(Date endDateTime) { + this.endDateTime = endDateTime; + } + + /** + * + * + */ + public User getUser() { + return this.user; + } + + public void setUser(User user) { + this.user = user; + } + + /** + * + * + */ + public Integer getLessonStateId() { + return this.lessonStateId; + } + + public void setLessonStateId(Integer lessonStateId) { + this.lessonStateId = lessonStateId; + } + + /** + * + * + */ + public LearningDesign getLearningDesign() { + return this.learningDesign; + } + + public void setLearningDesign(LearningDesign learningDesign) { + this.learningDesign = learningDesign; + } + + /** + * + * + */ + public LessonClass getLessonClass() { + return this.lessonClass; + } + + public void setLessonClass(LessonClass lessonClass) { + this.lessonClass = lessonClass; + } + + /** + * + * + */ + public Organisation getOrganisation() { + return this.organisation; + } + + public void setOrganisation(Organisation organisation) { + this.organisation = organisation; + } + + /** + * + * + */ + public Set getLearnerProgresses() { + return this.learnerProgresses; + } + + public void setLearnerProgresses(Set learnerProgresses) { + this.learnerProgresses = learnerProgresses; + } + + public String toString() { + return new ToStringBuilder(this) + .append("lessonId", getLessonId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof Lesson) ) return false; + Lesson castOther = (Lesson) other; + return new EqualsBuilder() + .append(this.getLessonId(), castOther.getLessonId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getLessonId()) + .toHashCode(); + } + + /** + * Getter for property learners. + * @return Value of property learners. + */ + public User getLearners() + { + + return this.learners; + } + + /** + * Setter for property learners. + * @param learners New value of property learners. + */ + public void setLearners(User learners) + { + + this.learners = learners; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java 28 Jan 2005 04:20:19 -0000 1.1 @@ -0,0 +1,72 @@ +/* + * LessonClass.java + * + * Created on 14 January 2005, 10:56 + */ + +package org.lamsfoundation.lams.lesson; + +import java.util.Set; +import org.lamsfoundation.lams.learningdesign.Grouping; +import org.lamsfoundation.lams.learningdesign.Group; +/** + * A type of Grouping that represents all the Learners in a Lesson. + * The LessonClass is used as the default Grouping. + * + * @author chris + */ +public class LessonClass extends Grouping +{ + + private Group staffGroup; + + /** + * Holds value of property lessons. + */ + private Set lessons; + + + public Group getStaffGroup() + { + return this.staffGroup; + } + + public void setStaffGroup(Group staffGroup) + { + this.staffGroup = staffGroup; + } + + /** + * Getter for property lessons. + * @return Value of property lessons. + */ + public Set getLessons() + { + + return this.lessons; + } + + /** + * Setter for property lessons. + * @param lessons New value of property lessons. + */ + public void setLessons(Set lessons) + { + + this.lessons = lessons; + } + + /** Creates a new instance of LessonClass */ + public LessonClass() + { + } + + /** full constructor */ + public LessonClass(Long groupingId, Integer groupingTypeId, Set groups, Set activities, Group staffGroup, Set lessons) + { + super(groupingId, groupingTypeId, groups, activities); + this.staffGroup = staffGroup; + this.lessons = lessons; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/lesson/LessonState.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/Attic/LessonState.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/LessonState.java 28 Jan 2005 04:20:19 -0000 1.1 @@ -0,0 +1,107 @@ +package org.lamsfoundation.lams.lesson; + +import java.io.Serializable; +import java.util.Set; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_lesson_state" + * +*/ +public class LessonState implements Serializable { + + /** identifier field */ + private Integer lamsLessonStateId; + + /** persistent field */ + private String description; + + /** persistent field */ + private Set lessons; + + /** full constructor */ + public LessonState(Integer lamsLessonStateId, String description, Set lessons) { + this.lamsLessonStateId = lamsLessonStateId; + this.description = description; + this.lessons = lessons; + } + + /** default constructor */ + public LessonState() { + } + + /** + * @hibernate.id + * generator-class="assigned" + * type="java.lang.Integer" + * column="lams_lesson_state_id" + * + */ + public Integer getLamsLessonStateId() { + return this.lamsLessonStateId; + } + + public void setLamsLessonStateId(Integer lamsLessonStateId) { + this.lamsLessonStateId = lamsLessonStateId; + } + + /** + * @hibernate.property + * column="description" + * length="255" + * not-null="true" + * + */ + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + /** + * @hibernate.set + * lazy="true" + * inverse="true" + * cascade="none" + * @hibernate.collection-key + * column="lams_lesson_state_id" + * @hibernate.collection-one-to-many + * class="org.lamsfoundation.lams.lesson.Lesson" + * + */ + public Set getLessons() { + return this.lessons; + } + + public void setLessons(Set lessons) { + this.lessons = lessons; + } + + public String toString() { + return new ToStringBuilder(this) + .append("lamsLessonStateId", getLamsLessonStateId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof LessonState) ) return false; + LessonState castOther = (LessonState) other; + return new EqualsBuilder() + .append(this.getLamsLessonStateId(), castOther.getLamsLessonStateId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getLamsLessonStateId()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/lesson/ProgressCompleted.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/Attic/ProgressCompleted.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/ProgressCompleted.java 28 Jan 2005 04:20:19 -0000 1.1 @@ -0,0 +1,110 @@ +package org.lamsfoundation.lams.lesson; + +import org.lamsfoundation.lams.learningdesign.Activity; +import java.io.Serializable; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_progress_completed" + * +*/ +public class ProgressCompleted implements Serializable { + + /** identifier field */ + private org.lamsfoundation.lams.lesson.ProgressCompletedPK comp_id; + + /** nullable persistent field */ + private org.lamsfoundation.lams.lesson.LearnerProgress learnerProgress; + + /** nullable persistent field */ + private Activity activity; + + /** full constructor */ + public ProgressCompleted(org.lamsfoundation.lams.lesson.ProgressCompletedPK comp_id, org.lamsfoundation.lams.lesson.LearnerProgress learnerProgress, Activity activity) { + this.comp_id = comp_id; + this.learnerProgress = learnerProgress; + this.activity = activity; + } + + /** default constructor */ + public ProgressCompleted() { + } + + /** minimal constructor */ + public ProgressCompleted(org.lamsfoundation.lams.lesson.ProgressCompletedPK comp_id) { + this.comp_id = comp_id; + } + + /** + * @hibernate.id + * generator-class="assigned" + * + */ + public org.lamsfoundation.lams.lesson.ProgressCompletedPK getComp_id() { + return this.comp_id; + } + + public void setComp_id(org.lamsfoundation.lams.lesson.ProgressCompletedPK comp_id) { + this.comp_id = comp_id; + } + + /** + * @hibernate.many-to-one + * update="false" + * insert="false" + * + * @hibernate.column + * name="learner_progress_id" + * + */ + public org.lamsfoundation.lams.lesson.LearnerProgress getLearnerProgress() { + return this.learnerProgress; + } + + public void setLearnerProgress(org.lamsfoundation.lams.lesson.LearnerProgress learnerProgress) { + this.learnerProgress = learnerProgress; + } + + /** + * @hibernate.many-to-one + * update="false" + * insert="false" + * + * @hibernate.column + * name="activity_id" + * + */ + public Activity getActivity() { + return this.activity; + } + + public void setActivity(Activity activity) { + this.activity = activity; + } + + public String toString() { + return new ToStringBuilder(this) + .append("comp_id", getComp_id()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof ProgressCompleted) ) return false; + ProgressCompleted castOther = (ProgressCompleted) other; + return new EqualsBuilder() + .append(this.getComp_id(), castOther.getComp_id()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getComp_id()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/lesson/ProgressCompletedPK.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/Attic/ProgressCompletedPK.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/ProgressCompletedPK.java 28 Jan 2005 04:20:19 -0000 1.1 @@ -0,0 +1,80 @@ +package org.lamsfoundation.lams.lesson; + +import java.io.Serializable; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** @author Hibernate CodeGenerator */ +public class ProgressCompletedPK implements Serializable { + + /** identifier field */ + private Long learnerProgressId; + + /** identifier field */ + private Long activityId; + + /** full constructor */ + public ProgressCompletedPK(Long learnerProgressId, Long activityId) { + this.learnerProgressId = learnerProgressId; + this.activityId = activityId; + } + + /** default constructor */ + public ProgressCompletedPK() { + } + + /** + * @hibernate.property + * column="learner_progress_id" + * length="20" + * + */ + public Long getLearnerProgressId() { + return this.learnerProgressId; + } + + public void setLearnerProgressId(Long learnerProgressId) { + this.learnerProgressId = learnerProgressId; + } + + /** + * @hibernate.property + * column="activity_id" + * length="20" + * + */ + public Long getActivityId() { + return this.activityId; + } + + public void setActivityId(Long activityId) { + this.activityId = activityId; + } + + public String toString() { + return new ToStringBuilder(this) + .append("learnerProgressId", getLearnerProgressId()) + .append("activityId", getActivityId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof ProgressCompletedPK) ) return false; + ProgressCompletedPK castOther = (ProgressCompletedPK) other; + return new EqualsBuilder() + .append(this.getLearnerProgressId(), castOther.getLearnerProgressId()) + .append(this.getActivityId(), castOther.getActivityId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getLearnerProgressId()) + .append(getActivityId()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/lesson/ProgressCurrent.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/Attic/ProgressCurrent.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/ProgressCurrent.java 28 Jan 2005 04:20:19 -0000 1.1 @@ -0,0 +1,110 @@ +package org.lamsfoundation.lams.lesson; + +import org.lamsfoundation.lams.learningdesign.Activity; +import java.io.Serializable; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_progress_current" + * +*/ +public class ProgressCurrent implements Serializable { + + /** identifier field */ + private org.lamsfoundation.lams.lesson.ProgressCurrentPK comp_id; + + /** nullable persistent field */ + private org.lamsfoundation.lams.lesson.LearnerProgress learnerProgress; + + /** nullable persistent field */ + private Activity activity; + + /** full constructor */ + public ProgressCurrent(org.lamsfoundation.lams.lesson.ProgressCurrentPK comp_id, org.lamsfoundation.lams.lesson.LearnerProgress learnerProgress, Activity activity) { + this.comp_id = comp_id; + this.learnerProgress = learnerProgress; + this.activity = activity; + } + + /** default constructor */ + public ProgressCurrent() { + } + + /** minimal constructor */ + public ProgressCurrent(org.lamsfoundation.lams.lesson.ProgressCurrentPK comp_id) { + this.comp_id = comp_id; + } + + /** + * @hibernate.id + * generator-class="assigned" + * + */ + public org.lamsfoundation.lams.lesson.ProgressCurrentPK getComp_id() { + return this.comp_id; + } + + public void setComp_id(org.lamsfoundation.lams.lesson.ProgressCurrentPK comp_id) { + this.comp_id = comp_id; + } + + /** + * @hibernate.many-to-one + * update="false" + * insert="false" + * + * @hibernate.column + * name="learner_progress_id" + * + */ + public org.lamsfoundation.lams.lesson.LearnerProgress getLearnerProgress() { + return this.learnerProgress; + } + + public void setLearnerProgress(org.lamsfoundation.lams.lesson.LearnerProgress learnerProgress) { + this.learnerProgress = learnerProgress; + } + + /** + * @hibernate.many-to-one + * update="false" + * insert="false" + * + * @hibernate.column + * name="activity_id" + * + */ + public Activity getActivity() { + return this.activity; + } + + public void setActivity(Activity activity) { + this.activity = activity; + } + + public String toString() { + return new ToStringBuilder(this) + .append("comp_id", getComp_id()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof ProgressCurrent) ) return false; + ProgressCurrent castOther = (ProgressCurrent) other; + return new EqualsBuilder() + .append(this.getComp_id(), castOther.getComp_id()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getComp_id()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/lesson/ProgressCurrentPK.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/Attic/ProgressCurrentPK.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/ProgressCurrentPK.java 28 Jan 2005 04:20:19 -0000 1.1 @@ -0,0 +1,80 @@ +package org.lamsfoundation.lams.lesson; + +import java.io.Serializable; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** @author Hibernate CodeGenerator */ +public class ProgressCurrentPK implements Serializable { + + /** identifier field */ + private Long learnerProgressId; + + /** identifier field */ + private Long activityId; + + /** full constructor */ + public ProgressCurrentPK(Long learnerProgressId, Long activityId) { + this.learnerProgressId = learnerProgressId; + this.activityId = activityId; + } + + /** default constructor */ + public ProgressCurrentPK() { + } + + /** + * @hibernate.property + * column="learner_progress_id" + * length="20" + * + */ + public Long getLearnerProgressId() { + return this.learnerProgressId; + } + + public void setLearnerProgressId(Long learnerProgressId) { + this.learnerProgressId = learnerProgressId; + } + + /** + * @hibernate.property + * column="activity_id" + * length="20" + * + */ + public Long getActivityId() { + return this.activityId; + } + + public void setActivityId(Long activityId) { + this.activityId = activityId; + } + + public String toString() { + return new ToStringBuilder(this) + .append("learnerProgressId", getLearnerProgressId()) + .append("activityId", getActivityId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof ProgressCurrentPK) ) return false; + ProgressCurrentPK castOther = (ProgressCurrentPK) other; + return new EqualsBuilder() + .append(this.getLearnerProgressId(), castOther.getLearnerProgressId()) + .append(this.getActivityId(), castOther.getActivityId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getLearnerProgressId()) + .append(getActivityId()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/lesson/UserGroup.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/Attic/UserGroup.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/UserGroup.java 28 Jan 2005 04:20:19 -0000 1.1 @@ -0,0 +1,111 @@ +package org.lamsfoundation.lams.lesson; + +import org.lamsfoundation.lams.learningdesign.Group; +import org.lamsfoundation.lams.usermanagement.User; +import java.io.Serializable; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_user_group" + * +*/ +public class UserGroup implements Serializable { + + /** identifier field */ + private org.lamsfoundation.lams.lesson.UserGroupPK comp_id; + + /** nullable persistent field */ + private User user; + + /** nullable persistent field */ + private Group group; + + /** full constructor */ + public UserGroup(org.lamsfoundation.lams.lesson.UserGroupPK comp_id, User user, Group group) { + this.comp_id = comp_id; + this.user = user; + this.group = group; + } + + /** default constructor */ + public UserGroup() { + } + + /** minimal constructor */ + public UserGroup(org.lamsfoundation.lams.lesson.UserGroupPK comp_id) { + this.comp_id = comp_id; + } + + /** + * @hibernate.id + * generator-class="assigned" + * + */ + public org.lamsfoundation.lams.lesson.UserGroupPK getComp_id() { + return this.comp_id; + } + + public void setComp_id(org.lamsfoundation.lams.lesson.UserGroupPK comp_id) { + this.comp_id = comp_id; + } + + /** + * @hibernate.many-to-one + * update="false" + * insert="false" + * + * @hibernate.column + * name="user_id" + * + */ + public User getUser() { + return this.user; + } + + public void setUser(User user) { + this.user = user; + } + + /** + * @hibernate.many-to-one + * update="false" + * insert="false" + * + * @hibernate.column + * name="group_id" + * + */ + public Group getGroup() { + return this.group; + } + + public void setGroup(Group group) { + this.group = group; + } + + public String toString() { + return new ToStringBuilder(this) + .append("comp_id", getComp_id()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof UserGroup) ) return false; + UserGroup castOther = (UserGroup) other; + return new EqualsBuilder() + .append(this.getComp_id(), castOther.getComp_id()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getComp_id()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/lesson/UserGroupPK.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/Attic/UserGroupPK.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/UserGroupPK.java 28 Jan 2005 04:20:19 -0000 1.1 @@ -0,0 +1,80 @@ +package org.lamsfoundation.lams.lesson; + +import java.io.Serializable; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** @author Hibernate CodeGenerator */ +public class UserGroupPK implements Serializable { + + /** identifier field */ + private Long userId; + + /** identifier field */ + private Long groupId; + + /** full constructor */ + public UserGroupPK(Long userId, Long groupId) { + this.userId = userId; + this.groupId = groupId; + } + + /** default constructor */ + public UserGroupPK() { + } + + /** + * @hibernate.property + * column="user_id" + * length="20" + * + */ + public Long getUserId() { + return this.userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + /** + * @hibernate.property + * column="group_id" + * length="20" + * + */ + public Long getGroupId() { + return this.groupId; + } + + public void setGroupId(Long groupId) { + this.groupId = groupId; + } + + public String toString() { + return new ToStringBuilder(this) + .append("userId", getUserId()) + .append("groupId", getGroupId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof UserGroupPK) ) return false; + UserGroupPK castOther = (UserGroupPK) other; + return new EqualsBuilder() + .append(this.getUserId(), castOther.getUserId()) + .append(this.getGroupId(), castOther.getGroupId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getUserId()) + .append(getGroupId()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/lesson/UserToolSession.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/Attic/UserToolSession.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/UserToolSession.java 28 Jan 2005 04:20:19 -0000 1.1 @@ -0,0 +1,130 @@ +package org.lamsfoundation.lams.lesson; + +import org.lamsfoundation.lams.tool.ToolSession; +import org.lamsfoundation.lams.usermanagement.User; +import java.io.Serializable; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_user_tool_session" + * +*/ +public class UserToolSession implements Serializable { + + /** identifier field */ + private org.lamsfoundation.lams.lesson.UserToolSessionPK comp_id; + + /** nullable persistent field */ + private User user; + + /** nullable persistent field */ + private ToolSession toolSession; + + /** persistent field */ + private org.lamsfoundation.lams.lesson.UserToolSessionState userToolSessionState; + + /** full constructor */ + public UserToolSession(org.lamsfoundation.lams.lesson.UserToolSessionPK comp_id, User user, ToolSession toolSession, org.lamsfoundation.lams.lesson.UserToolSessionState userToolSessionState) { + this.comp_id = comp_id; + this.user = user; + this.toolSession = toolSession; + this.userToolSessionState = userToolSessionState; + } + + /** default constructor */ + public UserToolSession() { + } + + /** minimal constructor */ + public UserToolSession(org.lamsfoundation.lams.lesson.UserToolSessionPK comp_id, org.lamsfoundation.lams.lesson.UserToolSessionState userToolSessionState) { + this.comp_id = comp_id; + this.userToolSessionState = userToolSessionState; + } + + /** + * @hibernate.id + * generator-class="assigned" + * + */ + public org.lamsfoundation.lams.lesson.UserToolSessionPK getComp_id() { + return this.comp_id; + } + + public void setComp_id(org.lamsfoundation.lams.lesson.UserToolSessionPK comp_id) { + this.comp_id = comp_id; + } + + /** + * @hibernate.many-to-one + * update="false" + * insert="false" + * + * @hibernate.column + * name="user_id" + * + */ + public User getUser() { + return this.user; + } + + public void setUser(User user) { + this.user = user; + } + + /** + * @hibernate.many-to-one + * update="false" + * insert="false" + * + * @hibernate.column + * name="tool_session_id" + * + */ + public ToolSession getToolSession() { + return this.toolSession; + } + + public void setToolSession(ToolSession toolSession) { + this.toolSession = toolSession; + } + + /** + * @hibernate.many-to-one + * not-null="true" + * @hibernate.column name="user_tool_session_state_id" + * + */ + public org.lamsfoundation.lams.lesson.UserToolSessionState getUserToolSessionState() { + return this.userToolSessionState; + } + + public void setUserToolSessionState(org.lamsfoundation.lams.lesson.UserToolSessionState userToolSessionState) { + this.userToolSessionState = userToolSessionState; + } + + public String toString() { + return new ToStringBuilder(this) + .append("comp_id", getComp_id()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof UserToolSession) ) return false; + UserToolSession castOther = (UserToolSession) other; + return new EqualsBuilder() + .append(this.getComp_id(), castOther.getComp_id()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getComp_id()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/lesson/UserToolSessionPK.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/Attic/UserToolSessionPK.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/UserToolSessionPK.java 28 Jan 2005 04:20:19 -0000 1.1 @@ -0,0 +1,80 @@ +package org.lamsfoundation.lams.lesson; + +import java.io.Serializable; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** @author Hibernate CodeGenerator */ +public class UserToolSessionPK implements Serializable { + + /** identifier field */ + private Long toolSessionId; + + /** identifier field */ + private Long userId; + + /** full constructor */ + public UserToolSessionPK(Long toolSessionId, Long userId) { + this.toolSessionId = toolSessionId; + this.userId = userId; + } + + /** default constructor */ + public UserToolSessionPK() { + } + + /** + * @hibernate.property + * column="tool_session_id" + * length="20" + * + */ + public Long getToolSessionId() { + return this.toolSessionId; + } + + public void setToolSessionId(Long toolSessionId) { + this.toolSessionId = toolSessionId; + } + + /** + * @hibernate.property + * column="user_id" + * length="20" + * + */ + public Long getUserId() { + return this.userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String toString() { + return new ToStringBuilder(this) + .append("toolSessionId", getToolSessionId()) + .append("userId", getUserId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof UserToolSessionPK) ) return false; + UserToolSessionPK castOther = (UserToolSessionPK) other; + return new EqualsBuilder() + .append(this.getToolSessionId(), castOther.getToolSessionId()) + .append(this.getUserId(), castOther.getUserId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getToolSessionId()) + .append(getUserId()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/lesson/UserToolSessionState.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/Attic/UserToolSessionState.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/UserToolSessionState.java 28 Jan 2005 04:20:19 -0000 1.1 @@ -0,0 +1,107 @@ +package org.lamsfoundation.lams.lesson; + +import java.io.Serializable; +import java.util.Set; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_user_tool_session_state" + * +*/ +public class UserToolSessionState implements Serializable { + + /** identifier field */ + private Integer userToolSessionStateId; + + /** persistent field */ + private String description; + + /** persistent field */ + private Set userToolSessions; + + /** full constructor */ + public UserToolSessionState(Integer userToolSessionStateId, String description, Set userToolSessions) { + this.userToolSessionStateId = userToolSessionStateId; + this.description = description; + this.userToolSessions = userToolSessions; + } + + /** default constructor */ + public UserToolSessionState() { + } + + /** + * @hibernate.id + * generator-class="assigned" + * type="java.lang.Integer" + * column="user_tool_session_state_id" + * + */ + public Integer getUserToolSessionStateId() { + return this.userToolSessionStateId; + } + + public void setUserToolSessionStateId(Integer userToolSessionStateId) { + this.userToolSessionStateId = userToolSessionStateId; + } + + /** + * @hibernate.property + * column="description" + * length="255" + * not-null="true" + * + */ + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + /** + * @hibernate.set + * lazy="true" + * inverse="true" + * cascade="none" + * @hibernate.collection-key + * column="user_tool_session_state_id" + * @hibernate.collection-one-to-many + * class="org.lamsfoundation.lams.lesson.UserToolSession" + * + */ + public Set getUserToolSessions() { + return this.userToolSessions; + } + + public void setUserToolSessions(Set userToolSessions) { + this.userToolSessions = userToolSessions; + } + + public String toString() { + return new ToStringBuilder(this) + .append("userToolSessionStateId", getUserToolSessionStateId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof UserToolSessionState) ) return false; + UserToolSessionState castOther = (UserToolSessionState) other; + return new EqualsBuilder() + .append(this.getUserToolSessionStateId(), castOther.getUserToolSessionStateId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getUserToolSessionStateId()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/security/AbstractServerLoginModule.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/security/Attic/AbstractServerLoginModule.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/security/AbstractServerLoginModule.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,284 @@ +package org.lamsfoundation.lams.security; + +import java.security.Principal; +import java.security.acl.Group; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.lang.reflect.Constructor; + +import javax.security.auth.Subject; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.login.LoginException; +import javax.security.auth.spi.LoginModule; + +import org.apache.log4j.Logger; + +public class AbstractServerLoginModule implements LoginModule +{ + protected Subject subject; + protected CallbackHandler callbackHandler; + protected Map sharedState; + protected Map options; + protected Logger log = Logger.getLogger(AbstractServerLoginModule.class); + /** Flag indicating if the shared credential should be used */ + protected boolean useFirstPass; + /** Flag indicating if the login phase succeeded. Subclasses that override + the login method must set this to true on successful completion of login + */ + protected boolean loginOk; + /** An optional custom Principal class implementation */ + protected String principalClassName; + /** the principal to use when a null username and password are seen */ + protected Principal unauthenticatedIdentity; + + /** Initialize the login module. This stores the subject, callbackHandler + * and sharedState and options for the login session. Subclasses should override + * if they need to process their own options. A call to super.initialize(...) + * must be made in the case of an override. + *

+ * @option password-stacking: If this is set to "useFirstPass", the login + * identity will be taken from the javax.security.auth.login.name + * value of the sharedState map, and the proof of identity from the + * javax.security.auth.login.password value of the sharedState + * map. + * @option principalClass: A Principal implementation that support a ctor + * taking a String argument for the princpal name. + * @option unauthenticatedIdentity: the name of the principal to asssign + * and authenticate when a null username and password are seen. + * + * @param subject the Subject to update after a successful login. + * @param callbackHandler the CallbackHandler that will be used to obtain the + * the user identity and credentials. + * @param sharedState a Map shared between all configured login module instances + * @param options the parameters passed to the login module. + */ + public void initialize(Subject subject, CallbackHandler callbackHandler, + Map sharedState, Map options) + { + this.subject = subject; + this.callbackHandler = callbackHandler; + this.sharedState = sharedState; + this.options = options; + log = Logger.getLogger(getClass()); + log.info("initialize"); + /* Check for password sharing options. Any non-null value for + password_stacking sets useFirstPass as this module has no way to + validate any shared password. + */ + String passwordStacking = (String) options.get("password-stacking"); + if( passwordStacking != null && passwordStacking.equalsIgnoreCase("useFirstPass") ) + useFirstPass = true; + + // Check for a custom Principal implementation + principalClassName = (String) options.get("principalClass"); + + // Check for unauthenticatedIdentity option. + String name = (String) options.get("unauthenticatedIdentity"); + if( name != null ) + { + try + { + unauthenticatedIdentity = createIdentity(name); + log.info("Saw unauthenticatedIdentity="+name); + } + catch(Exception e) + { + log.warn("Failed to create custom unauthenticatedIdentity", e); + } + } + } + + /** Looks for javax.security.auth.login.name and javax.security.auth.login.password + values in the sharedState map if the useFirstPass option was true and returns + true if they exist. If they do not or are null this method returns false. + + Note that subclasses that override the login method must set the loginOk + ivar to true if the login succeeds in order for the commit phase to + populate the Subject. This implementation sets loginOk to true if the + login() method returns true, otherwise, it sets loginOk to false. + */ + public boolean login() throws LoginException + { + log.info("login"); + loginOk = false; + // If useFirstPass is true, look for the shared password + if( useFirstPass == true ) + { + try + { + Object identity = sharedState.get("javax.security.auth.login.name"); + Object credential = sharedState.get("javax.security.auth.login.password"); + if( identity != null && credential != null ) + { + loginOk = true; + return true; + } + // Else, fall through and perform the login + } + catch(Exception e) + { // Dump the exception and continue + log.error("login failed", e); + } + } + return false; + } + + /** Method to commit the authentication process (phase 2). If the login + method completed successfully as indicated by loginOk == true, this + method adds the getIdentity() value to the subject getPrincipals() Set. + It also adds the members of each Group returned by getRoleSets() + to the subject getPrincipals() Set. + + @see javax.security.auth.Subject; + @see java.security.acl.Group; + @return true always. + */ + public boolean commit() throws LoginException + { + log.info("commit, loginOk="+loginOk); + if( loginOk == false ) + return false; + + Set principals = subject.getPrincipals(); + Principal identity = getIdentity(); + principals.add(identity); + Group[] roleSets = getRoleSets(); + for(int g = 0; g < roleSets.length; g ++) + { + Group group = roleSets[g]; + String name = group.getName(); + Group subjectGroup = createGroup(name, principals); + if( subjectGroup instanceof NestableGroup ) + { + /* A NestableGroup only allows Groups to be added to it so we + need to add a SimpleGroup to subjectRoles to contain the roles + */ + SimpleGroup tmp = new SimpleGroup("Roles"); + subjectGroup.addMember(tmp); + subjectGroup = tmp; + } + // Copy the group members to the Subject group + Enumeration members = group.members(); + while( members.hasMoreElements() ) + { + Principal role = (Principal) members.nextElement(); + subjectGroup.addMember(role); + } + } + return true; + } + + /** Method to abort the authentication process (phase 2). + @return true alaways + */ + public boolean abort() throws LoginException + { + log.info("abort"); + return true; + } + + /** Remove the user identity and roles added to the Subject during commit. + @return true always. + */ + public boolean logout() throws LoginException + { + log.info("logout"); + // Remove the user identity + Principal identity = getIdentity(); + Set principals = subject.getPrincipals(); + principals.remove(identity); + // Remove any added Groups... + return true; + } + //--- End LoginModule interface methods + + // --- Protected methods + + /** Overriden by subclasses to return the Principal that corresponds to + the user primary identity. + */ + protected Principal getIdentity() + { + return null; + } + /** Overriden by subclasses to return the Groups that correspond to the + to the role sets assigned to the user. Subclasses should create at + least a Group named "Roles" that contains the roles assigned to the user. + A second common group is "CallerPrincipal" that provides the application + identity of the user rather than the security domain identity. + @return Group[] containing the sets of roles + */ + protected Group[] getRoleSets() throws LoginException + { + return null; + } + + protected boolean getUseFirstPass() + { + return useFirstPass; + } + protected Principal getUnauthenticatedIdentity() + { + return unauthenticatedIdentity; + } + + /** Find or create a Group with the given name. Subclasses should use this + method to locate the 'Roles' group or create additional types of groups. + @return A named Group from the principals set. + */ + protected Group createGroup(String name, Set principals) + { + Group roles = null; + Iterator iter = principals.iterator(); + while( iter.hasNext() ) + { + Object next = iter.next(); + if( (next instanceof Group) == false ) + continue; + Group grp = (Group) next; + if( grp.getName().equals(name) ) + { + roles = grp; + break; + } + } + // If we did not find a group create one + if( roles == null ) + { + roles = new SimpleGroup(name); + principals.add(roles); + } + return roles; + } + + /** Utility method to create a Principal for the given username. This + * creates an instance of the principalClassName type if this option was + * specified using the class constructor matching: ctor(String). If + * principalClassName was not specified, a SimplePrincipal is created. + * + * @param username the name of the principal + * @return the principal instance + * @throws java.lang.Exception thrown if the custom principal type cannot be created. + */ + protected Principal createIdentity(String username) + throws Exception + { + Principal p = null; + if( principalClassName == null ) + { + p = new SimplePrincipal(username); + } + else + { + ClassLoader loader = Thread.currentThread().getContextClassLoader(); + Class clazz = loader.loadClass(principalClassName); + Class[] ctorSig = {String.class}; + Constructor ctor = clazz.getConstructor(ctorSig); + Object[] ctorArgs = {username}; + p = (Principal) ctor.newInstance(ctorArgs); + } + return p; + } +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/security/AuthenticationMethodConfigurer.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/security/Attic/AuthenticationMethodConfigurer.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/security/AuthenticationMethodConfigurer.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,114 @@ +/* + * Created on 2004-12-16 + * + * Last modified on 2004-12-16 + */ +package org.lamsfoundation.lams.security; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.parsers.ParserConfigurationException; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +import org.lamsfoundation.lams.usermanagement.AuthenticationMethodParameter; +import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; +import org.lamsfoundation.lams.util.XmlFileLoader; + +/** + * TODO Add description here + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class AuthenticationMethodConfigurer { + + private static Document authConfigureDoc = null; + + private static String configFilePath; + + /** + * @return Returns the configFilePath. + */ + public static String getConfigFilePath() { + return configFilePath; + } + /** + * @param configFilePath The configFilePath to set. + */ + public static void setConfigFilePath(String configFilePath) { + AuthenticationMethodConfigurer.configFilePath = configFilePath; + } + + private static void loadConfiguration() + throws IOException,SAXException,SAXParseException,ParserConfigurationException{ + + if(authConfigureDoc==null){ + authConfigureDoc = XmlFileLoader.getDocumentFromFilePath(configFilePath); + } + } + + private static Element findMethodElement(String methodName) + throws IOException,SAXException,SAXParseException,ParserConfigurationException + { + NodeList nodeList = authConfigureDoc.getElementsByTagName("Method"); + for(int i=0; i + * View Source + *

+ * + * @author Kevin Han + * Fei Yang + */ +public class JspRedirectStrategy { + + public static final String AUTH_OBJECT_NAME = "authorizationObjectName"; + + public static final String SECURITY_CHECK_NOT_PASSED = "SecurityCheckNotPassed"; + + public static final String SECURITY_CHECK_PASSED = "securityCheckPassed"; + + public static final String WELCOME_PAGE = "index.jsp "; + + private static Logger log = Logger.getLogger(JspRedirectStrategy.class); + + /** + * login page (defined in web.xml) calls this method to have its response + * redirected whenever necessary, and have its authorization object updated + * as well. + * + * @param request + * @param response + * @return true if response has been redirected; false if login page should + * continue. + * + */ + public static boolean loginPageRedirected(HttpServletRequest request,HttpServletResponse response) throws java.io.IOException { + HttpSession session = request.getSession(false); + if (session == null) { + log.debug("===>LOGIN PAGE: session not found, simply stop here."); + return true; + } + String checkStatus = (String) session.getAttribute(AUTH_OBJECT_NAME); + String id = session.getId(); + + if (checkStatus == null) { + log.debug("===>LOGIN PAGE: there is no auth obj in session, auth obj created. session id: " + id); + session.setAttribute(AUTH_OBJECT_NAME, SECURITY_CHECK_NOT_PASSED); + response.sendRedirect(WELCOME_PAGE); + return true; + } else if (checkStatus.equals(SECURITY_CHECK_NOT_PASSED)) { + log.debug("===>LOGIN PAGE: accessing login page before login succeed, display login page. session id: "+ id); + return false; + } else if (checkStatus.equals(SECURITY_CHECK_PASSED)) { + log.debug("===>LOGIN PAGE: accessing login after login succeed. Invalidate the session: " + id + " and redirect to "+ WELCOME_PAGE); + session.invalidate(); + response.sendRedirect(WELCOME_PAGE); + return true; + } else { + log.debug("===>LOGIN PAGE: logically impossible to be here, no valid status found : "+ id); + session.invalidate(); + response.sendRedirect(WELCOME_PAGE); + return true; + } + + } + + public static void welcomePageStatusUpdate(HttpServletRequest request, + HttpServletResponse response) { + HttpSession session = request.getSession(false); + if (session == null) { + log.debug("===>INDEX PAGE: session not found, simply stop here."); + return; + } + if (!session.getAttribute(AUTH_OBJECT_NAME).equals(SECURITY_CHECK_PASSED)) + session.setAttribute(AUTH_OBJECT_NAME, new String(SECURITY_CHECK_PASSED)); + + } + +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/security/LDAPAuthenticator.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/security/Attic/LDAPAuthenticator.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/security/LDAPAuthenticator.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,96 @@ +package org.lamsfoundation.lams.security; + +import java.util.Properties; +import javax.naming.Context; +import javax.naming.ldap.InitialLdapContext; + +import org.apache.log4j.Logger; + +import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; + +public class LDAPAuthenticator { + private static Logger log = Logger.getLogger(LDAPAuthenticator.class); + + private static final String USE_OBJECT_CREDENTIAL_OPT = "useObjectCredential"; + + private static final String PRINCIPAL_DN_PREFIX_OPT = "principalDNPrefix"; + + private static final String PRINCIPAL_DN_SUFFIX_OPT = "principalDNSuffix"; + + private static final String ROLES_CTX_DN_OPT = "rolesCtxDN"; + + private static final String USER_ROLES_CTX_DN_ATTRIBUTE_ID_OPT = "userRolesCtxDNAttributeName"; + + private static final String UID_ATTRIBUTE_ID_OPT = "uidAttributeID"; + + private static final String ROLE_ATTRIBUTE_ID_OPT = "roleAttributeID"; + + private static final String MATCH_ON_USER_DN_OPT = "matchOnUserDN"; + + private static final String ROLE_ATTRIBUTE_IS_DN_OPT = "roleAttributeIsDN"; + + private static final String ROLE_NAME_ATTRIBUTE_ID_OPT = "roleNameAttributeID"; + + private AuthenticationMethod method; + + public LDAPAuthenticator(AuthenticationMethod method) { + this.method = method; + } + + public boolean authenticate(String username, String inputPassword) { + return authentication(username, inputPassword); + } + + private boolean authentication(String username, Object credential) { + Properties env = new Properties(); + + // Load all authentication method parameters into env + env.setProperty(Context.INITIAL_CONTEXT_FACTORY, method.getParameterByName(Context.INITIAL_CONTEXT_FACTORY).getValue()); + env.setProperty(Context.SECURITY_AUTHENTICATION, method.getParameterByName(Context.SECURITY_AUTHENTICATION).getValue()); + env.setProperty(Context.SECURITY_PROTOCOL, method.getParameterByName(Context.SECURITY_PROTOCOL).getValue()); + + String principalDNPrefix = method.getParameterByName(PRINCIPAL_DN_PREFIX_OPT).getValue(); + String principalDNSuffix = method.getParameterByName(PRINCIPAL_DN_SUFFIX_OPT).getValue(); + String userDN = principalDNPrefix + username + principalDNSuffix; + env.setProperty(Context.SECURITY_PRINCIPAL, userDN); + + env.setProperty(Context.PROVIDER_URL, method.getParameterByName(Context.PROVIDER_URL).getValue()); + env.put(Context.SECURITY_CREDENTIALS, credential); + + Object originalTrustStore = System.getProperty("javax.net.ssl.trustStore"); + Object originalTrustPass = System.getProperty("javax.net.ssl.trustStorePassword"); + //FIXME: synchronization issue: dynamically load certificate into + // system instead of overwritting it. + System.setProperty("javax.net.ssl.trustStore", method.getParameterByName("truststore.path").getValue()); + System.setProperty("javax.net.ssl.trustStorePassword", method.getParameterByName("truststore.password").getValue()); + + log.debug("===> LDAP authenticator: " + env); + + InitialLdapContext ctx = null; + try { + ctx = new InitialLdapContext(env, null); + log.debug("===> ldap context created: "+ctx); + return true; + } catch (Exception e) { + log.error("===> Ldap exception: " + e); + return false; + } finally { + + try { + //FIXME: synchronization issue -- dynamically load certificate + // instead of overwritting system properties + //System.setProperty("javax.net.ssl.trustStore",(String)originalTrustStore + // ); + //System.setProperty("javax.net.ssl.trustStorePassword",(String)originalTrustPass + // ); + + if (ctx != null) + ctx.close(); + } catch (Exception e) { + log.error("===> gettting problem when closing context. Excetion: "+e); + } + } + + } + +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/security/NestableGroup.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/security/Attic/NestableGroup.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/security/NestableGroup.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,116 @@ +package org.lamsfoundation.lams.security; + +import java.security.Principal; +import java.security.acl.Group; +import java.util.Enumeration; +import java.util.LinkedList; + +public class NestableGroup extends SimplePrincipal implements Group +{ + /** The stack of the Groups. Elements are pushed/poped by + inserting/removing element 0. + */ + private LinkedList rolesStack; + + /** Creates new NestableGroup with the given name + */ + public NestableGroup(String name) + { + super(name); + rolesStack = new LinkedList(); + } + +// --- Begin Group interface methods + /** Returns an enumeration that contains the single active Principal. + @return an Enumeration of the single active Principal. + */ + public Enumeration members() + { + return new IndexEnumeration(); + } + + /** Removes the first occurence of user from the Principal stack. + + @param user the principal to remove from this group. + @return true if the principal was removed, or + * false if the principal was not a member. + */ + public boolean removeMember(Principal user) + { + return rolesStack.remove(user); + } + + /** Pushes the group onto the Group stack and makes it the active + Group. + @param group, the instance of Group that contains the roles to set as the + active Group. + @exception IllegalArgumentException, thrown if group is not an instance of Group. + @return true always. + */ + public boolean addMember(Principal group) throws IllegalArgumentException + { + if( (group instanceof Group) == false ) + throw new IllegalArgumentException("The addMember argument must be a Group"); + + rolesStack.addFirst(group); + return true; + } + + /** Returns true if the passed principal is a member of the active group. + This method does a recursive search, so if a principal belongs to a + group which is a member of this group, true is returned. + + @param member the principal whose membership is to be checked. + + @return true if the principal is a member of this group, false otherwise. + */ + public boolean isMember(Principal member) + { + if( rolesStack.size() == 0 ) + return false; + Group activeGroup = (Group) rolesStack.getFirst(); + boolean isMember = activeGroup.isMember(member); + return isMember; + } + + public String toString() + { + StringBuffer tmp = new StringBuffer(getName()); + tmp.append("(members:"); + Enumeration iter = members(); + while( iter.hasMoreElements() ) + { + tmp.append(iter.nextElement()); + tmp.append(','); + } + tmp.setCharAt(tmp.length()-1, ')'); + return tmp.toString(); + } +// --- End Group interface methods + + private class IndexEnumeration implements Enumeration + { + private Enumeration iter; + + IndexEnumeration() + { + if( rolesStack.size() > 0 ) + { + Group grp = (Group) rolesStack.get(0); + iter = grp.members(); + } + } + public boolean hasMoreElements() + { + boolean hasMore = iter != null && iter.hasMoreElements(); + return hasMore; + } + public Object nextElement() + { + Object next = null; + if( iter != null ) + next = iter.nextElement(); + return next; + } + } +} Index: lams_common/src/java/org/lamsfoundation/lams/security/SimpleGroup.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/security/Attic/SimpleGroup.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/security/SimpleGroup.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,113 @@ +package org.lamsfoundation.lams.security; + +import java.security.Principal; +import java.security.acl.Group; +import java.util.Collections; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.HashMap; + +public class SimpleGroup extends SimplePrincipal implements Group +{ + private HashMap members; + + public SimpleGroup(String groupName) + { + super(groupName); + members = new HashMap(3); + } + + /** Adds the specified member to the group. + @param user the principal to add to this group. + @return true if the member was successfully added, + false if the principal was already a member. + */ + public boolean addMember(Principal user) + { + boolean isMember = members.containsKey(user); + if( isMember == false ) + members.put(user, user); + return isMember == false; + } + /** Returns true if the passed principal is a member of the group. + This method does a recursive search, so if a principal belongs to a + group which is a member of this group, true is returned. + + A special check is made to see if the member is an instance of + org.jboss.security.AnybodyPrincipal or org.jboss.security.NobodyPrincipal + since these classes do not hash to meaningful values. + @param member the principal whose membership is to be checked. + @return true if the principal is a member of this group, + false otherwise. + */ + + public boolean isMember(Principal member) + { + //not implemented. + return false; + + /* + // First see if there is a key with the member name + boolean isMember = members.containsKey(member); + if( isMember == false ) + { // Check the AnybodyPrincipal & NobodyPrincipal special cases + isMember = (member instanceof org.jboss.security.AnybodyPrincipal); + if( isMember == false ) + { + if( member instanceof org.jboss.security.NobodyPrincipal ) + return false; + } + } + if( isMember == false ) + { // Check any Groups for membership + Collection values = members.values(); + Iterator iter = values.iterator(); + while( isMember == false && iter.hasNext() ) + { + Object next = iter.next(); + if( next instanceof Group ) + { + Group group = (Group) next; + isMember = group.isMember(member); + } + } + } + return isMember; + */ + } + + /** Returns an enumeration of the members in the group. + The returned objects can be instances of either Principal + or Group (which is a subinterface of Principal). + @return an enumeration of the group members. + */ + public Enumeration members() + { + return Collections.enumeration(members.values()); + } + + /** Removes the specified member from the group. + @param user the principal to remove from this group. + @return true if the principal was removed, or + false if the principal was not a member. + */ + public boolean removeMember(Principal user) + { + Object prev = members.remove(user); + return prev != null; + } + + public String toString() + { + StringBuffer tmp = new StringBuffer(getName()); + tmp.append("(members:"); + Iterator iter = members.keySet().iterator(); + while( iter.hasNext() ) + { + tmp.append(iter.next()); + tmp.append(','); + } + tmp.setCharAt(tmp.length()-1, ')'); + return tmp.toString(); + } +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/security/SimplePrincipal.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/security/Attic/SimplePrincipal.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/security/SimplePrincipal.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,44 @@ +package org.lamsfoundation.lams.security; + +import java.security.Principal; + +public class SimplePrincipal implements Principal, java.io.Serializable +{ + private String name; + + public SimplePrincipal(String name) + { + this.name = name; + } + + /** Compare this SimplePrincipal's name against another Principal + @return true if name equals another.getName(); + */ + public boolean equals(Object another) + { + if( !(another instanceof Principal) ) + return false; + String anotherName = ((Principal)another).getName(); + boolean equals = false; + if( name == null ) + equals = anotherName == null; + else + equals = name.equals(anotherName); + return equals; + } + + public int hashCode() + { + return (name == null ? 0 : name.hashCode()); + } + + public String toString() + { + return name; + } + + public String getName() + { + return name; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/security/UniversalLoginModule.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/security/Attic/UniversalLoginModule.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/security/UniversalLoginModule.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,257 @@ +package org.lamsfoundation.lams.security; + +/** + * UniversalLoginModule is LAMS's own implementation of login module + * based on JBoss 3.0.*, 3.2.* and possibly higher versions. + * + * It's named "universal" as currently it supports WebAuth, LDAP and + * database based authentication mechanisms. + * + */ + +import java.security.acl.Group; +import java.security.Principal; +import javax.security.auth.Subject; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.login.FailedLoginException; + +import javax.naming.NamingException; +import javax.security.auth.login.LoginException; +import javax.naming.InitialContext; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import javax.sql.DataSource; +import java.util.HashMap; +import java.util.Map; +import java.util.*; + +import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; + +import org.apache.log4j.Logger; +import org.springframework.web.context.support.WebApplicationContextUtils; +import org.springframework.web.context.WebApplicationContext; +import org.lamsfoundation.lams.usermanagement.service.UserManagementService; +import org.lamsfoundation.lams.web.HttpSessionManager; +import org.lamsfoundation.lams.usermanagement.*; + +public class UniversalLoginModule extends UsernamePasswordLoginModule { + private static Logger log = Logger.getLogger(UniversalLoginModule.class); + + private static final String USE_OBJECT_CREDENTIAL_OPT = "useObjectCredential"; + + private static final String PRINCIPAL_DN_PREFIX_OPT = "principalDNPrefix"; + + private static final String PRINCIPAL_DN_SUFFIX_OPT = "principalDNSuffix"; + + private static final String ROLES_CTX_DN_OPT = "rolesCtxDN"; + + private static final String USER_ROLES_CTX_DN_ATTRIBUTE_ID_OPT = "userRolesCtxDNAttributeName"; + + private static final String UID_ATTRIBUTE_ID_OPT = "uidAttributeID"; + + private static final String ROLE_ATTRIBUTE_ID_OPT = "roleAttributeID"; + + private static final String MATCH_ON_USER_DN_OPT = "matchOnUserDN"; + + private static final String ROLE_ATTRIBUTE_IS_DN_OPT = "roleAttributeIsDN"; + + private static final String ROLE_NAME_ATTRIBUTE_ID_OPT = "roleNameAttributeID"; + + public UniversalLoginModule() { + } + + private transient SimpleGroup userRoles = new SimpleGroup("Roles"); + + protected String dsJndiName; + + protected String rolesQuery; + + protected String propertyFilePath; + + public void initialize(Subject subject, CallbackHandler callbackHandler, + Map sharedState, Map options) { + super.initialize(subject, callbackHandler, sharedState, options); + + //from options to get path to property file -> authentication.xml + propertyFilePath = (String) options.get("authenticationPropertyFile"); + //load authentication property file + AuthenticationMethodConfigurer.setConfigFilePath(propertyFilePath); + + } + + protected boolean validatePassword(String inputPassword, + String expectedPassword) { + boolean isValid = false; + if (inputPassword != null) { + // empty password not allowed + if (inputPassword.length() == 0) + return false; + + log.debug("===> validatePassword() called: " + inputPassword + + " : " + expectedPassword); + + try { + String username = getUsername(); + WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(HttpSessionManager.getInstance().getServletContext()); + UserManagementService service = (UserManagementService) ctx.getBean("userManagementServiceTarget"); + User user = service.getUserByLogin(username); + + log.debug("===> authenticating user: " + username); + if (user == null) + return false; + + AuthenticationMethod method = null; + try { + method = service.getAuthenticationMethodForUser(username); + AuthenticationMethodConfigurer.configure(method); + + this.dsJndiName = method.getParameterByName("dsJndiName").getValue(); + this.rolesQuery = method.getParameterByName("rolesQuery").getValue(); + } catch (Exception e) { + log.debug("===>Exception : " + e); + return false; + } + + List parameters = method.getAuthenticationMethodParameters(); + + //for debug purpose only + for (int i = 0; i < parameters.size(); i++) { + AuthenticationMethodParameter mp = (AuthenticationMethodParameter) parameters.get(i); + log.debug("===>" + mp.getName() + " = " + mp.getValue()); + } + + String type = method.getAuthenticationMethodType().getDescription(); + log.debug("===> authentication type :" + type); + if ("LDAP".equals(type)) { + LDAPAuthenticator authenticator = new LDAPAuthenticator(method); + isValid = authenticator.authenticate(username,inputPassword); + log.debug("===> LDAP :: user:" + username + ":" + + inputPassword + " authenticated! "); + } else if ("LAMS".equals(type)) { + DatabaseAuthenticator authenticator = new DatabaseAuthenticator(method); + isValid = authenticator.authenticate(username,inputPassword); + log.debug("===> LAMS:: user:" + username + ":" + + inputPassword + " authenticated! "); + } else if ("WEB_AUTH".equals(type)) { + log.debug("===> WEBAUTH: " + username + " type: " + type); + WebAuthAuthenticator authenticator = new WebAuthAuthenticator(); + log.debug("===> webauth authenticator is:" + authenticator); + isValid = authenticator.authenticate(username,inputPassword); + log.debug("===> WEBAUTH :: user:" + username + ":" + + inputPassword + " authenticated! "); + + } else { + log.debug("Unexpected authentication type!"); + return false; + } + } catch (Exception e) { + e.printStackTrace(); + log.debug("===> exception: " + e); + } + } + return isValid; + } + + /** + * According to Lams's security policy, all the authorization + * must be done locally, in other word, through Lams database + * or other "local"(logically) data resource. + * + @return Group[] containing the sets of roles + */ + protected Group[] getRoleSets() throws LoginException { + String username = getUsername(); + Connection conn = null; + HashMap setsMap = new HashMap(); + PreparedStatement ps = null; + ResultSet rs = null; + + try { + + InitialContext ctx = new InitialContext(); + DataSource ds = (DataSource) ctx.lookup(this.dsJndiName); + + log.debug("===> getRoleSets() called: " + dsJndiName + ":" + rolesQuery); + conn = ds.getConnection(); + // Get the user role names + ps = conn.prepareStatement(this.rolesQuery); + try { + ps.setString(1, username); + } catch (ArrayIndexOutOfBoundsException ignore) { + // The query may not have any parameters so just try it + } + rs = ps.executeQuery(); + if (rs.next() == false) { + if (getUnauthenticatedIdentity() == null) + throw new FailedLoginException("No matching username found in Roles"); + /* We are running with an unauthenticatedIdentity so create an + empty Roles set and return. + */ + Group[] roleSets = { new SimpleGroup("Roles") }; + return roleSets; + } + + do { + String name = rs.getString(1); + String groupName = rs.getString(2); + if (groupName == null || groupName.length() == 0) + groupName = "Roles"; + Group group = (Group) setsMap.get(groupName); + if (group == null) { + group = new SimpleGroup(groupName); + setsMap.put(groupName, group); + } + + try { + Principal p = super.createIdentity(name); + log.info("Assign user to role " + name); + group.addMember(p); + } catch (Exception e) { + log.debug("Failed to create principal: " + name, e); + } + } while (rs.next()); + } catch (NamingException ex) { + throw new LoginException(ex.toString(true)); + } catch (SQLException ex) { + super.log.error("SQL failure", ex); + throw new LoginException(ex.toString()); + } finally { + if (rs != null) { + try { + rs.close(); + } catch (SQLException e) { + } + } + if (ps != null) { + try { + ps.close(); + } catch (SQLException e) { + } + } + if (conn != null) { + try { + conn.close(); + } catch (Exception ex) { + } + } + } + + Group[] roleSets = new Group[setsMap.size()]; + setsMap.values().toArray(roleSets); + return roleSets; + } + + /** + * Overriden to return an empty password string as typically one cannot + * obtain a user's password. We also override the validatePassword so + * this is ok. + * @return and empty password String + */ + protected String getUsersPassword() throws LoginException { + return ""; + } + +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/security/UsernamePasswordLoginModule.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/security/Attic/UsernamePasswordLoginModule.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/security/UsernamePasswordLoginModule.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,317 @@ +package org.lamsfoundation.lams.security; + +import java.security.Principal; +import java.util.Map; + +import javax.security.auth.Subject; +import javax.security.auth.callback.Callback; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.callback.NameCallback; +import javax.security.auth.callback.PasswordCallback; +import javax.security.auth.callback.UnsupportedCallbackException; +import javax.security.auth.login.FailedLoginException; +import javax.security.auth.login.LoginException; + +public abstract class UsernamePasswordLoginModule extends AbstractServerLoginModule +{ + /** The login identity */ + private Principal identity; + /** The proof of login identity */ + private char[] credential; + /** the message digest algorithm used to hash passwords. If null then + plain passwords will be used. */ + private String hashAlgorithm = null; + /** the name of the charset/encoding to use when converting the password + String to a byte array. Default is the platform's default encoding. + */ + private String hashCharset = null; + /** the string encoding format to use. Defaults to base64. */ + private String hashEncoding = null; + /** A flag indicating if the password comparison should ignore case */ + private boolean ignorePasswordCase; + + /** Override the superclass method to look for the following options after + first invoking the super version. + @param options : + @option hashAlgorithm: the message digest algorithm used to hash passwords. + If null then plain passwords will be used. + @option hashCharset: the name of the charset/encoding to use when converting + the password String to a byte array. Default is the platform's default + encoding. + @option hashEncoding: the string encoding format to use. Defaults to base64. + @option ignorePasswordCase: A flag indicating if the password comparison + should ignore case + */ + public void initialize(Subject subject, CallbackHandler callbackHandler, + Map sharedState, Map options) + { + super.initialize(subject, callbackHandler, sharedState, options); + + // Check to see if password hashing has been enabled. + // If an algorithm is set, check for a format and charset. + hashAlgorithm = (String) options.get("hashAlgorithm"); + if( hashAlgorithm != null ) + { + hashEncoding = (String) options.get("hashEncoding"); + if( hashEncoding == null ) + hashEncoding = "BASE64"; //Util.BASE64_ENCODING; + hashCharset = (String) options.get("hashCharset"); + log.debug("Passworg hashing activated: algorithm = " + hashAlgorithm + + ", encoding = " + hashEncoding+ (hashCharset == null ? "" : "charset = " + hashCharset)); + } + String flag = (String) options.get("ignorePasswordCase"); + ignorePasswordCase = Boolean.valueOf(flag).booleanValue(); + } + + /** Perform the authentication of the username and password. + */ + public boolean login() throws LoginException + { + // See if shared credentials exist + if( super.login() == true ) + { + // Setup our view of the user + Object username = sharedState.get("javax.security.auth.login.name"); + if( username instanceof Principal ) + identity = (Principal) username; + else + { + String name = username.toString(); + try + { + identity = createIdentity(name); + } + catch(Exception e) + { + log.debug("Failed to create principal", e); + throw new LoginException("Failed to create principal: "+ e.getMessage()); + } + } + Object password = sharedState.get("javax.security.auth.login.password"); + if( password instanceof char[] ) + credential = (char[]) password; + else if( password != null ) + { + String tmp = password.toString(); + credential = tmp.toCharArray(); + } + return true; + } + + super.loginOk = false; + String[] info = getUsernameAndPassword(); + String username = info[0]; + String password = info[1]; + if( username == null && password == null ) + { + identity = unauthenticatedIdentity; + super.log.info("Authenticating as unauthenticatedIdentity="+identity); + } + + if( identity == null ) + { + try + { + identity = createIdentity(username); + } + catch(Exception e) + { + log.debug("Failed to create principal", e); + throw new LoginException("Failed to create principal: "+ e.getMessage()); + } + + // Hash the user entered password if password hashing is in use + if( hashAlgorithm != null ) + password = createPasswordHash(username, password); + // Validate the password supplied by the subclass + String expectedPassword = getUsersPassword(); + if( validatePassword(password, expectedPassword) == false ) + { + super.log.debug("Bad password for username="+username); + throw new FailedLoginException("Password Incorrect/Password Required"); + } + } + + if( getUseFirstPass() == true ) + { // Add the username and password to the shared state map + sharedState.put("javax.security.auth.login.name", username); + sharedState.put("javax.security.auth.login.password", credential); + } + super.loginOk = true; + super.log.info("User '" + identity + "' authenticated, loginOk="+loginOk); + return true; + } + + protected Principal getIdentity() + { + return identity; + } + protected Principal getUnauthenticatedIdentity() + { + return unauthenticatedIdentity; + } + + protected Object getCredentials() + { + return credential; + } + protected String getUsername() + { + String username = null; + if( getIdentity() != null ) + username = getIdentity().getName(); + return username; + } + + /** Called by login() to acquire the username and password strings for + authentication. This method does no validation of either. + @return String[], [0] = username, [1] = password + @exception LoginException thrown if CallbackHandler is not set or fails. + */ + protected String[] getUsernameAndPassword() throws LoginException + { + String[] info = {null, null}; + // prompt for a username and password + if( callbackHandler == null ) + { + throw new LoginException("Error: no CallbackHandler available " + + "to collect authentication information"); + } + NameCallback nc = new NameCallback("User name: ", "guest"); + PasswordCallback pc = new PasswordCallback("Password: ", false); + Callback[] callbacks = {nc, pc}; + String username = null; + String password = null; + try + { + callbackHandler.handle(callbacks); + username = nc.getName(); + char[] tmpPassword = pc.getPassword(); + if( tmpPassword != null ) + { + credential = new char[tmpPassword.length]; + System.arraycopy(tmpPassword, 0, credential, 0, tmpPassword.length); + pc.clearPassword(); + password = new String(credential); + } + } + catch(java.io.IOException ioe) + { + throw new LoginException(ioe.toString()); + } + catch(UnsupportedCallbackException uce) + { + throw new LoginException("CallbackHandler does not support: " + uce.getCallback()); + } + info[0] = username; + info[1] = password; + return info; + } + + /** + * If hashing is enabled, this method is called from login() + * prior to password validation. + *

+ * Subclasses may override it to provide customized password hashing, + * for example by adding user-specific information or salting. + *

+ * The default version calculates the hash based on the following options: + *

    + *
  • hashAlgorithm: The digest algorithm to use. + *
  • hashEncoding: The format used to store the hashes (base64 or hex) + *
  • hashCharset: The encoding used to convert the password to bytes + * for hashing. + *
+ * It will return null if the hash fails for any reason, which will in turn + * cause validatePassword() to fail. + * + * @param username ignored in default version + * @param password the password string to be hashed + */ + protected String createPasswordHash(String username, String password) + { + String passwordHash = createPasswordHash(hashAlgorithm, hashEncoding, + hashCharset, username, password); + return passwordHash; + } + + /** A hook that allows subclasses to change the validation of the input + password against the expected password. This version checks that + neither inputPassword or expectedPassword are null that that + inputPassword.equals(expectedPassword) is true; + @return true if the inputPassword is valid, false otherwise. + */ + protected boolean validatePassword(String inputPassword, String expectedPassword) + { + if( inputPassword == null || expectedPassword == null ) + return false; + boolean valid = false; + if( ignorePasswordCase == true ) + valid = inputPassword.equalsIgnoreCase(expectedPassword); + else + valid = inputPassword.equals(expectedPassword); + return valid; + } + + + /** Get the expected password for the current username available via + the getUsername() method. This is called from within the login() + method after the CallbackHandler has returned the username and + candidate password. + @return the valid password String + */ + abstract protected String getUsersPassword() throws LoginException; + + public static String createPasswordHash(String hashAlgorithm, String hashEncoding, + String hashCharset, String username, String password) + { + //currently no implementation for password hashing. + return password; + /* + byte[] passBytes; + String passwordHash = null; + + // convert password to byte data + try + { + if(hashCharset == null) + passBytes = password.getBytes(); + else + passBytes = password.getBytes(hashCharset); + } + catch(Exception uee) + { + Logger log = Logger.getLogger(UsernamePasswordLoginModule.class); + log.error("charset " + hashCharset + " not found. Using platform default.", uee); + passBytes = password.getBytes(); + } + + // calculate the hash and apply the encoding. + try + { + byte[] hash = MessageDigest.getInstance(hashAlgorithm).digest(passBytes); + if(hashEncoding.equalsIgnoreCase("BASE64")) + { + passwordHash = Util.encodeBase64(hash); + } + else if(hashEncoding.equalsIgnoreCase("HEX")) + { + passwordHash = Util.encodeBase16(hash); + } + else + { + Logger log = Logger.getLogger(UsernamePasswordLoginModule.class); + log.error("Unsupported hash encoding format " + hashEncoding); + } + } + catch(Exception e) + { + Logger log = Logger.getLogger(UsernamePasswordLoginModule.class); + log.error("Password hash calculation failed ", e); + } + return passwordHash; + */ + + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/security/WebAuthAuthenticator.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/security/Attic/WebAuthAuthenticator.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/security/WebAuthAuthenticator.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,25 @@ +/* + * Created on 2004-12-15 + * + * To change the template for this generated file go to + * Window>Preferences>Java>Code Generation>Code and Comments + */ +package org.lamsfoundation.lams.security; + +/** + * @author kevin + * + */ +public class WebAuthAuthenticator +{ + public WebAuthAuthenticator() + { + } + + public boolean authenticate(String username, String inputPassword) + { + //as for now, alway return true for webauth authenticated users + //TODO check session to see if the user is from webauth + return true; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/security/WebAuthServlet.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/security/Attic/WebAuthServlet.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/security/WebAuthServlet.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,63 @@ +package org.lamsfoundation.lams.security; + +import java.io.*; +import javax.servlet.*; +import javax.servlet.http.*; + +import org.springframework.web.context.support.WebApplicationContextUtils; +import org.springframework.web.context.WebApplicationContext; +import org.lamsfoundation.lams.usermanagement.service.UserManagementService; +import org.lamsfoundation.lams.usermanagement.*; + +/** + * @author kevin + * + */ +public class WebAuthServlet extends HttpServlet { + + private static final String WEBAUTH_TOKEN = "WEBAUTH_USER"; + + public void init() throws ServletException + { + } + + public void service(HttpServletRequest request, HttpServletResponse response) + throws IOException, ServletException + { + HttpSession oldSession = request.getSession(false); + if ( oldSession != null ) + { + oldSession.invalidate(); + } + + String webAuthUserID = (String)request.getAttribute(WEBAUTH_TOKEN); + HttpSession session = request.getSession(true); + if ( webAuthUserID == null ) + //there is no valid WebAuth authenticated user + { + session.removeAttribute(WEBAUTH_TOKEN); + } + else + { + WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext()); + UserManagementService service = (UserManagementService)ctx.getBean("userManagementServiceTarget"); + User webAuthUser = service.getUserByLogin(webAuthUserID); + + if (webAuthUser != null) + //valid webauth user also is registered in Lams as well + { + session.setAttribute(WEBAUTH_TOKEN, webAuthUserID); + } + else + //though webauth authenticated, but not registered. + { + session.removeAttribute(WEBAUTH_TOKEN); + } + } + + //In anycase, goto Lams welcome page + response.sendRedirect("index.jsp"); + + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/tool/ILamsToolService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/Attic/ILamsToolService.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/tool/ILamsToolService.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,27 @@ +/* + * LamsToolService.java + * + * Created on 11 January 2005, 13:49 + */ + +package org.lamsfoundation.lams.tool; + +import java.util.List; +/** + * Interface defines the services LAMS provides for Tools + * @author chris + */ +public interface ILamsToolService +{ + /** + * Returns a list of all learners who can use a specific set of tool content. + * Note that none/some/all of these users may not reach the associated activity + * so they may not end up using the content. + * The purpose of this method is to provide a way for tools to do logic based on + * completions against potential completions. + * @param toolContentID a long value that identifies the tool content (in the Tool and in LAMS). + * @return a List of all the Learners who are scheduled to use the content. + * @exception in case of any problems. + */ + public List getAllPotentialLearners(long toolContentID) throws LamsToolServiceException; +} Index: lams_common/src/java/org/lamsfoundation/lams/tool/LamsToolServiceException.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/Attic/LamsToolServiceException.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/tool/LamsToolServiceException.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,33 @@ +/* + * LamsToolServiceException.java + * + * Created on 11 January 2005, 13:56 + */ + +package org.lamsfoundation.lams.tool; + +/** + * Type of ToolException thrown by the LamsToolService + * @author chris + */ +public class LamsToolServiceException extends ToolException +{ + + /** + * Creates a new instance of LamsToolServiceException without detail message. + */ + public LamsToolServiceException() + { + } + + + /** + * Constructs an instance of LamsToolServiceException with the specified detail message. + * @param msg the detail message. + */ + public LamsToolServiceException(String msg) + { + super(msg); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/tool/Tool.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/Tool.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/tool/Tool.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,308 @@ +package org.lamsfoundation.lams.tool; + +import java.io.Serializable; +import java.util.Set; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_tool" + * +*/ +public class Tool implements Serializable { + + /** identifier field */ + private Long toolId; + + /** persistent field */ + private String learnerUrl; + + /** persistent field */ + private Boolean supportsGrouping; + + /** nullable persistent field */ + private String authorUrl; + + /** persistent field */ + private Boolean supportsDefineLater; + + /** nullable persistent field */ + private String defineLaterUrl; + + /** persistent field */ + private long defaultToolContentId; + + /** persistent field */ + private String toolSignature; + + /** persistent field */ + private String toolDisplayName; + + /** nullable persistent field */ + private String description; + + /** persistent field */ + private String className; + + /** persistent field */ + private String exportPortfolioUrl; + + /** persistent field */ + private Set activities; + + /** full constructor */ + public Tool(Long toolId, String learnerUrl, Boolean supportsGrouping, String authorUrl, Boolean supportsDefineLater, String defineLaterUrl, long defaultToolContentId, String toolSignature, String toolDisplayName, String description, String className, String exportPortfolioUrl, Set activities) { + this.toolId = toolId; + this.learnerUrl = learnerUrl; + this.supportsGrouping = supportsGrouping; + this.authorUrl = authorUrl; + this.supportsDefineLater = supportsDefineLater; + this.defineLaterUrl = defineLaterUrl; + this.defaultToolContentId = defaultToolContentId; + this.toolSignature = toolSignature; + this.toolDisplayName = toolDisplayName; + this.description = description; + this.className = className; + this.exportPortfolioUrl = exportPortfolioUrl; + this.activities = activities; + } + + /** default constructor */ + public Tool() { + } + + /** minimal constructor */ + public Tool(Long toolId, String learnerUrl, Boolean supportsGrouping, Boolean supportsDefineLater, long defaultToolContentId, String toolSignature, String toolDisplayName, String className, String exportPortfolioUrl, Set activities) { + this.toolId = toolId; + this.learnerUrl = learnerUrl; + this.supportsGrouping = supportsGrouping; + this.supportsDefineLater = supportsDefineLater; + this.defaultToolContentId = defaultToolContentId; + this.toolSignature = toolSignature; + this.toolDisplayName = toolDisplayName; + this.className = className; + this.exportPortfolioUrl = exportPortfolioUrl; + this.activities = activities; + } + + /** + * @hibernate.id + * generator-class="identity" + * type="java.lang.Long" + * column="tool_id" + * + */ + public Long getToolId() { + return this.toolId; + } + + public void setToolId(Long toolId) { + this.toolId = toolId; + } + + /** + * @hibernate.property + * column="learner_url" + * length="65535" + * not-null="true" + * + */ + public String getLearnerUrl() { + return this.learnerUrl; + } + + public void setLearnerUrl(String learnerUrl) { + this.learnerUrl = learnerUrl; + } + + /** + * @hibernate.property + * column="supports_grouping_flag" + * length="1" + * not-null="true" + * + */ + public Boolean getSupportsGrouping() { + return this.supportsGrouping; + } + + public void setSupportsGrouping(Boolean supportsGrouping) { + this.supportsGrouping = supportsGrouping; + } + + /** + * @hibernate.property + * column="author_url" + * length="65535" + * + */ + public String getAuthorUrl() { + return this.authorUrl; + } + + public void setAuthorUrl(String authorUrl) { + this.authorUrl = authorUrl; + } + + /** + * @hibernate.property + * column="supports_define_later_flag" + * length="1" + * not-null="true" + * + */ + public Boolean getSupportsDefineLater() { + return this.supportsDefineLater; + } + + public void setSupportsDefineLater(Boolean supportsDefineLater) { + this.supportsDefineLater = supportsDefineLater; + } + + /** + * @hibernate.property + * column="define_later_url" + * length="65535" + * + */ + public String getDefineLaterUrl() { + return this.defineLaterUrl; + } + + public void setDefineLaterUrl(String defineLaterUrl) { + this.defineLaterUrl = defineLaterUrl; + } + + /** + * @hibernate.property + * column="default_tool_content_id" + * length="20" + * not-null="true" + * + */ + public long getDefaultToolContentId() { + return this.defaultToolContentId; + } + + public void setDefaultToolContentId(long defaultToolContentId) { + this.defaultToolContentId = defaultToolContentId; + } + + /** + * @hibernate.property + * column="tool_signature" + * length="64" + * not-null="true" + * + */ + public String getToolSignature() { + return this.toolSignature; + } + + public void setToolSignature(String toolSignature) { + this.toolSignature = toolSignature; + } + + /** + * @hibernate.property + * column="tool_display_name" + * length="255" + * not-null="true" + * + */ + public String getToolDisplayName() { + return this.toolDisplayName; + } + + public void setToolDisplayName(String toolDisplayName) { + this.toolDisplayName = toolDisplayName; + } + + /** + * @hibernate.property + * column="description" + * length="65535" + * + */ + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + /** + * @hibernate.property + * column="class_name" + * length="65535" + * not-null="true" + * + */ + public String getClassName() { + return this.className; + } + + public void setClassName(String className) { + this.className = className; + } + + /** + * @hibernate.property + * column="export_portfolio_url" + * length="65535" + * not-null="true" + * + */ + public String getExportPortfolioUrl() { + return this.exportPortfolioUrl; + } + + public void setExportPortfolioUrl(String exportPortfolioUrl) { + this.exportPortfolioUrl = exportPortfolioUrl; + } + + /** + * @hibernate.set + * lazy="true" + * inverse="true" + * cascade="none" + * @hibernate.collection-key + * column="tool_id" + * @hibernate.collection-one-to-many + * class="org.lamsfoundation.lams.learningdesign.Activity" + * + */ + public Set getActivities() { + return this.activities; + } + + public void setActivities(Set activities) { + this.activities = activities; + } + + public String toString() { + return new ToStringBuilder(this) + .append("toolId", getToolId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof Tool) ) return false; + Tool castOther = (Tool) other; + return new EqualsBuilder() + .append(this.getToolId(), castOther.getToolId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getToolId()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/tool/ToolAccessMode.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/ToolAccessMode.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/tool/ToolAccessMode.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,68 @@ +/* ******************************************************************************** + * Copyright Notice + * ================= + * This file contains propriety information of LAMS Foundation. + * Copying or reproduction with prior written permission is prohibited. + * Copyright (c) 2005 + * Created on 2005-1-7 + ******************************************************************************** */ + +package org.lamsfoundation.lams.tool; + +import java.io.ObjectStreamException; +import java.io.Serializable; + +/** + *

ToolAccessMode is implemented using Ordinal-based typesafe enum pattern. + * It resolves the performance and potential hard coding error problems of using + * interface to define enum type.

+ * + *

As a class, it can implement any interface as we want. For now, it implements + * serializable because we might need to set it into http session. To ensure + * serializable works properly, readResolve() must be overriden.

+ * + * + * @author Jacky Fang 2005-1-7 + * + */ +public class ToolAccessMode implements Serializable +{ + + private final transient String name; + + //Ordinal of next tool access mode to be created + private static int nextOrdinal = 0; + + //Assign an ordinal to this tool access mode + private final int ordinal = nextOrdinal++; + + /** + * Private construtor to avoid instantiation + */ + private ToolAccessMode(String name) + { + this.name = name; + } + + public static final ToolAccessMode AUTHOR = new ToolAccessMode("author"); + public static final ToolAccessMode TEACHER = new ToolAccessMode("teacher"); + public static final ToolAccessMode LEARNER = new ToolAccessMode("learner"); + + //This is necessary for serialization + private static final ToolAccessMode[] VALUES = { AUTHOR, TEACHER, LEARNER }; + + public String toString() {return name;}; + + /** + * Overidden method to ensure it is serializable. + * @return the object instance + * @throws ObjectStreamException + */ + Object readResolve() throws ObjectStreamException + { + return VALUES[ordinal]; + } + + + +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/tool/ToolContent.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/ToolContent.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/tool/ToolContent.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,107 @@ +package org.lamsfoundation.lams.tool; + +import java.io.Serializable; +import java.util.Set; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_tool_content" + * +*/ +public class ToolContent implements Serializable { + + /** identifier field */ + private Long toolContentId; + + /** persistent field */ + private long toolContentKey; + + /** persistent field */ + private Set activities; + + /** full constructor */ + public ToolContent(Long toolContentId, long toolContentKey, Set activities) { + this.toolContentId = toolContentId; + this.toolContentKey = toolContentKey; + this.activities = activities; + } + + /** default constructor */ + public ToolContent() { + } + + /** + * @hibernate.id + * generator-class="identity" + * type="java.lang.Long" + * column="tool_content_id" + * + */ + public Long getToolContentId() { + return this.toolContentId; + } + + public void setToolContentId(Long toolContentId) { + this.toolContentId = toolContentId; + } + + /** + * @hibernate.property + * column="tool_content_key" + * length="20" + * not-null="true" + * + */ + public long getToolContentKey() { + return this.toolContentKey; + } + + public void setToolContentKey(long toolContentKey) { + this.toolContentKey = toolContentKey; + } + + /** + * @hibernate.set + * lazy="true" + * inverse="true" + * cascade="none" + * @hibernate.collection-key + * column="tool_content_id" + * @hibernate.collection-one-to-many + * class="org.lamsfoundation.lams.learningdesign.Activity" + * + */ + public Set getActivities() { + return this.activities; + } + + public void setActivities(Set activities) { + this.activities = activities; + } + + public String toString() { + return new ToStringBuilder(this) + .append("toolContentId", getToolContentId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof ToolContent) ) return false; + ToolContent castOther = (ToolContent) other; + return new EqualsBuilder() + .append(this.getToolContentId(), castOther.getToolContentId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getToolContentId()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/tool/ToolException.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/Attic/ToolException.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/tool/ToolException.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,32 @@ +/* + * ToolException.java + * + * Created on 11 January 2005, 13:55 + */ + +package org.lamsfoundation.lams.tool; + +/** + * Type of exception thrown by Tool operations and interfaces. + * @author chris + */ +public class ToolException extends java.lang.Exception +{ + + /** + * Creates a new instance of ToolException without detail message. + */ + public ToolException() + { + } + + + /** + * Constructs an instance of ToolException with the specified detail message. + * @param msg the detail message. + */ + public ToolException(String msg) + { + super(msg); + } +} Index: lams_common/src/java/org/lamsfoundation/lams/tool/ToolSession.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/ToolSession.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/tool/ToolSession.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,183 @@ +package org.lamsfoundation.lams.tool; + +import org.lamsfoundation.lams.learningdesign.Group; +import java.io.Serializable; +import java.util.Date; +import java.util.Set; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class + * table="lams_tool_session" + * +*/ +public class ToolSession implements Serializable { + + /** identifier field */ + private Long toolSessionId; + + /** persistent field */ + private long activityId; + + /** persistent field */ + private long toolSessionKey; + + /** persistent field */ + private Date createDateTime; + + /** persistent field */ + private Group group; + + /** persistent field */ + private org.lamsfoundation.lams.tool.ToolSessionState toolSessionState; + + /** persistent field */ + private Set userToolSessions; + + /** full constructor */ + public ToolSession(Long toolSessionId, long activityId, long toolSessionKey, Date createDateTime, Group group, org.lamsfoundation.lams.tool.ToolSessionState toolSessionState, Set userToolSessions) { + this.toolSessionId = toolSessionId; + this.activityId = activityId; + this.toolSessionKey = toolSessionKey; + this.createDateTime = createDateTime; + this.group = group; + this.toolSessionState = toolSessionState; + this.userToolSessions = userToolSessions; + } + + /** default constructor */ + public ToolSession() { + } + + /** + * @hibernate.id + * generator-class="identity" + * type="java.lang.Long" + * column="tool_session_id" + * + */ + public Long getToolSessionId() { + return this.toolSessionId; + } + + public void setToolSessionId(Long toolSessionId) { + this.toolSessionId = toolSessionId; + } + + /** + * @hibernate.property + * column="activity_id" + * length="20" + * not-null="true" + * + */ + public long getActivityId() { + return this.activityId; + } + + public void setActivityId(long activityId) { + this.activityId = activityId; + } + + /** + * @hibernate.property + * column="tool_session_key" + * length="20" + * not-null="true" + * + */ + public long getToolSessionKey() { + return this.toolSessionKey; + } + + public void setToolSessionKey(long toolSessionKey) { + this.toolSessionKey = toolSessionKey; + } + + /** + * @hibernate.property + * column="create_date_time" + * length="19" + * not-null="true" + * + */ + public Date getCreateDateTime() { + return this.createDateTime; + } + + public void setCreateDateTime(Date createDateTime) { + this.createDateTime = createDateTime; + } + + /** + * @hibernate.many-to-one + * not-null="true" + * @hibernate.column name="group_id" + * + */ + public Group getGroup() { + return this.group; + } + + public void setGroup(Group group) { + this.group = group; + } + + /** + * @hibernate.many-to-one + * not-null="true" + * @hibernate.column name="tool_session_state_id" + * + */ + public org.lamsfoundation.lams.tool.ToolSessionState getToolSessionState() { + return this.toolSessionState; + } + + public void setToolSessionState(org.lamsfoundation.lams.tool.ToolSessionState toolSessionState) { + this.toolSessionState = toolSessionState; + } + + /** + * @hibernate.set + * lazy="true" + * inverse="true" + * cascade="none" + * @hibernate.collection-key + * column="tool_session_id" + * @hibernate.collection-one-to-many + * class="org.lamsfoundation.lams.lesson.UserToolSession" + * + */ + public Set getUserToolSessions() { + return this.userToolSessions; + } + + public void setUserToolSessions(Set userToolSessions) { + this.userToolSessions = userToolSessions; + } + + public String toString() { + return new ToStringBuilder(this) + .append("toolSessionId", getToolSessionId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof ToolSession) ) return false; + ToolSession castOther = (ToolSession) other; + return new EqualsBuilder() + .append(this.getToolSessionId(), castOther.getToolSessionId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getToolSessionId()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/tool/ToolSessionState.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/Attic/ToolSessionState.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/tool/ToolSessionState.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,115 @@ +package org.lamsfoundation.lams.tool; + +import java.io.Serializable; +import java.util.Set; +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + + +/** + * @hibernate.class table="lams_tool_session_state" + * + */ +public class ToolSessionState implements Serializable { + + /** identifier field */ + private Integer toolSessionStateId; + + /** persistent field */ + private String description; + + /** persistent field */ + private Set toolSessions; + + //--------------------------------------------------------------------- + // Class level constants + //--------------------------------------------------------------------- + public static final String NOT_ATTEMPTED="NOT ATTEMPTED"; + + public static final String INCOMPLETE="INCOMPLETE"; + + public static final String COMPLETED="COMPLETED"; + + /** full constructor */ + public ToolSessionState(Integer toolSessionStateId, String description, Set toolSessions) { + this.toolSessionStateId = toolSessionStateId; + this.description = description; + this.toolSessions = toolSessions; + } + + /** default constructor */ + public ToolSessionState() { + } + + /** + * @hibernate.id + * generator-class="assigned" + * type="java.lang.Integer" + * column="tool_session_state_id" + * + */ + public Integer getToolSessionStateId() { + return this.toolSessionStateId; + } + + public void setToolSessionStateId(Integer toolSessionStateId) { + this.toolSessionStateId = toolSessionStateId; + } + + /** + * @hibernate.property + * column="description" + * length="255" + * not-null="true" + * + */ + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + /** + * @hibernate.set + * lazy="true" + * inverse="true" + * cascade="none" + * @hibernate.collection-key + * column="tool_session_state_id" + * @hibernate.collection-one-to-many + * class="org.lamsfoundation.lams.tool.ToolSession" + * + */ + public Set getToolSessions() { + return this.toolSessions; + } + + public void setToolSessions(Set toolSessions) { + this.toolSessions = toolSessions; + } + + public String toString() { + return new ToStringBuilder(this) + .append("toolSessionStateId", getToolSessionStateId()) + .toString(); + } + + public boolean equals(Object other) { + if ( (this == other ) ) return true; + if ( !(other instanceof ToolSessionState) ) return false; + ToolSessionState castOther = (ToolSessionState) other; + return new EqualsBuilder() + .append(this.getToolSessionStateId(), castOther.getToolSessionStateId()) + .isEquals(); + } + + public int hashCode() { + return new HashCodeBuilder() + .append(getToolSessionStateId()) + .toHashCode(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/AuthenticationMethod.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/AuthenticationMethod.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/AuthenticationMethod.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,166 @@ +package org.lamsfoundation.lams.usermanagement; + +import java.io.Serializable; +import java.util.Set; +import java.util.List; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; + +/** + * @hibernate.class + * table="lams_authentication_method" + * +*/ +public class AuthenticationMethod implements Serializable { + + /** identifier field */ + private Integer authenticationMethodId; + + /** persistent field */ + private String authenticationMethodName; + + /** persistent field */ + private AuthenticationMethodType authenticationMethodType; + + /** persistent field */ + private Set users; + + private boolean enabled = true; + + private List authenticationMethodParameters; + + /** full constructor */ + public AuthenticationMethod(String authenticationMethodName, AuthenticationMethodType authenticationMethodType, Set users) { + this.authenticationMethodName = authenticationMethodName; + this.authenticationMethodType = authenticationMethodType; + this.users = users; + } + + /** default constructor */ + public AuthenticationMethod() { + } + + + /** + * @hibernate.id + * generator-class="native" + * type="java.lang.Integer" + * column="authentication_method_id" + * + */ + public Integer getAuthenticationMethodId() { + return this.authenticationMethodId; + } + + public void setAuthenticationMethodId(Integer authenticationMethodId) { + this.authenticationMethodId = authenticationMethodId; + } + + /** + * @hibernate.property + * column="authentication_method_name" + * unique="true" + * length="64" + * not-null="true" + * + */ + public String getAuthenticationMethodName() { + return this.authenticationMethodName; + } + + public void setAuthenticationMethodName(String authenticationMethodName) { + this.authenticationMethodName = authenticationMethodName; + } + + /** + * @hibernate.many-to-one + * not-null="true" + * @hibernate.column name="authentication_method_type_id" + * + */ + public AuthenticationMethodType getAuthenticationMethodType() { + return this.authenticationMethodType; + } + + public void setAuthenticationMethodType(AuthenticationMethodType AuthenticationMethodType) { + this.authenticationMethodType = AuthenticationMethodType; + } + + /** + * @hibernate.set + * lazy="true" + * inverse="true" + * cascade="none" + * @hibernate.collection-key + * column="authentication_method_id" + * @hibernate.collection-one-to-many + * class="org.lamsfoundation.lams.usermanagement.User" + * + */ + public Set getUsers() { + return this.users; + } + + public void setUsers(Set users) { + this.users = users; + } + + /** + * @return Returns the enabled. + */ + public boolean isEnabled() { + return enabled; + } + /** + * @param enabled The enabled to set. + */ + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + /** + * @return Returns the authenticationMethodParameters. + */ + public List getAuthenticationMethodParameters() { + return authenticationMethodParameters; + } + /** + * @param authenticationMethodParameters The authenticationMethodParameters to set. + */ + public void setAuthenticationMethodParameters( + List authenticationMethodParameters) { + this.authenticationMethodParameters = authenticationMethodParameters; + } + + public AuthenticationMethodParameter getParameterByName(String name){ + for(int i=0; i + * View Source + *

+ * + * @author Fei Yang + */ +public interface IAuthenticationMethodDAO { + + /** + * Gets a list of all the authenticationMethods. + * + * @return List populated list of authenticationMethods + */ + public List getAllAuthenticationMethods(); + + /** + * Gets authenticationMethod object based on authenticationMethodId. + * @param authenticationMethodId the authenticationMethod's authenticationMethodId + * @return authenticationMethod populated authenticationMethod object + */ + public AuthenticationMethod getAuthenticationMethodById(Integer authenticationMethodId); + + /** + * Gets authenticationMethod object based on its name. + * @param name the authenticationMethod's name + * @return authenticationMethod populated authenticationMethod object + */ + public AuthenticationMethod getAuthenticationMethodByName(String name); + + /** + * Gets authenticationMethod object based on user. + * @param user the user + * @return authenticationMethod populated authenticationMethod object + */ + public AuthenticationMethod getAuthenticationMethodByUser(User user); + + /** + * Saves the authenticationMethod + * @param authenticationMethod the object to be saved + * @return AuthenticationMethod the saved authenticationMethod object + */ + public void saveAuthenticationMethod(AuthenticationMethod authenticationMethod); + + /** + * Updates the authenticationMethod + * @param authenticationMethod the object to be updated + * @return AuthenticationMethod the updated authenticationMethod object + */ + public void updateAuthenticationMethod(AuthenticationMethod authenticationMethod); + + /** + * Saves or updates the authenticationMethod + * @param authenticationMethod the object to be saved or updated + * @return AuthenticationMethod the saved or updated authenticationMethod object + */ + public void saveOrUpdateAuthenticationMethod(AuthenticationMethod authenticationMethod); + + /** + * Deletes a authenticationMethod from the database + * @param authenticationMethod the authenticationMethod to be deleted + */ + public void deleteAuthenticationMethod(AuthenticationMethod authenticationMethod); + + /** + * Deletes a authenticationMethod from the database by id + * @param authenticationMethodId the authenticationMethod's authenticationMethodId + */ + public void deleteAuthenticationMethodById(Integer authenticationMethodId); + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IAuthenticationMethodTypeDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/Attic/IAuthenticationMethodTypeDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IAuthenticationMethodTypeDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,70 @@ +/* + * Created on Dec 2, 2004 + * + * Last modified on Dec 2, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao; + +import java.util.List; + +import org.lamsfoundation.lams.usermanagement.AuthenticationMethodType; + +/** + * AuthenticationMethodType Data Access Object (DAO) interface. + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public interface IAuthenticationMethodTypeDAO { + + /** + * Gets a list of all the authenticationMethodTypes. + * + * @return List populated list of authenticationMethodTypes + */ + public List getAllAuthenticationMethodTypes(); + + /** + * Gets authenticationMethodType object based on authenticationMethodTypeId. + * @param authenticationMethodTypeId the authenticationMethodType's authenticationMethodTypeId + * @return authenticationMethodType populated authenticationMethodType object + */ + public AuthenticationMethodType getAuthenticationMethodTypeById(Integer authenticationMethodTypeId); + + /** + * Saves the authenticationMethodType + * @param authenticationMethodType the object to be saved + * @return AuthenticationMethodType the saved authenticationMethodType object + */ + public void saveAuthenticationMethodType(AuthenticationMethodType authenticationMethodType); + + /** + * Updates the authenticationMethodType + * @param authenticationMethodType the object to be updated + * @return AuthenticationMethodType the updated authenticationMethodType object + */ + public void updateAuthenticationMethodType(AuthenticationMethodType authenticationMethodType); + + /** + * Saves or updates the authenticationMethodType + * @param authenticationMethodType the object to be saved or updated + * @return AuthenticationMethodType the saved or updated authenticationMethodType object + */ + public void saveOrUpdateAuthenticationMethodType(AuthenticationMethodType authenticationMethodType); + + /** + * Deletes a authenticationMethodType from the database + * @param authenticationMethodType the authenticationMethodType to be deleted + */ + public void deleteAuthenticationMethodType(AuthenticationMethodType authenticationMethodType); + + /** + * Deletes a authenticationMethodType from the database by id + * @param authenticationMethodTypeId the authenticationMethodType's authenticationMethodTypeId + */ + public void deleteAuthenticationMethodTypeById(Integer authenticationMethodTypeId); + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IOrganisationDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IOrganisationDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IOrganisationDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,85 @@ +/* + * Created on 21 Nov, 2004 + * + * Last modified on 21 Nov, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao; + +import java.util.List; + +import org.lamsfoundation.lams.usermanagement.Organisation; + +/** + * Organisation Data Access Object (DAO) interface. + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public interface IOrganisationDAO { + + /** + * Gets a list of all the organisations. + * + * @return List populated list of organisations + */ + public List getAllOrganisations(); + + /** + * Gets organisation object based on userId. + * @param userId the organisation's userId + * @return organisation populated organisation object + */ + public Organisation getOrganisationById(Integer organisationId); + + /** + * Gets organisation object based on name. + * @param name the organisation's name + * @return organisation populated organisation object + */ + public List getOrganisationsByName(String name); + + /** + * Retrieves child organisations of the parentOrg + * + * @param parentOrg the parent organisation + * @return List of organisations + */ + public List getChildOrganisations(Organisation parentOrg); + + /** + * Saves the organisation + * @param organisation the object to be saved + * @return Organisation the saved organisation object + */ + public void saveOrganisation(Organisation organisation); + + /** + * Updates the organisation + * @param organisation the object to be updated + * @return Organisation the updated organisation object + */ + public void updateOrganisation(Organisation organisation); + + /** + * Saves or updates the organisation + * @param organisation the object to be saved or updated + * @return Organisation the saved or updated organisation object + */ + public void saveOrUpdateOrganisation(Organisation organisation); + + /** + * Deletes a organisation from the database + * @param organisation the organisation to be deleted + */ + public void deleteOrganisation(Organisation organisation); + + /** + * Deletes a organisation from the database by id + * @param organisationId the organisation's organisationId + */ + public void deleteOrganisationById(Integer organisationId); + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IOrganisationTypeDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/Attic/IOrganisationTypeDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IOrganisationTypeDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,83 @@ +/* + * Created on Nov 21, 2004 + * + * Last modified on Nov 21, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao; + +import java.util.List; + +import org.lamsfoundation.lams.usermanagement.OrganisationType; + +/** + * OrganisationType Data Access Object (DAO) interface. + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public interface IOrganisationTypeDAO { + + /** + * Gets a list of all the organisationTypes. + * + * @return List populated list of organisationTypes + */ + public List getAllOrganisationTypes(); + + /** + * Gets organisationType object based on organisationTypeId. + * @param organisationTypeId the organisationType's organisationTypeId + * @return organisationType populated organisationType object + */ + public OrganisationType getOrganisationTypeById(Integer organisationTypeId); + + /** + * Gets organisationType object based on name. + * @param name the organisationType's name + * @return organisationType populated organisationType object + */ + public OrganisationType getOrganisationTypeByName(String name); + + /** + * Saves the organisationType + * @param organisationType the object to be saved + * @return OrganisationType the saved organisationType object + */ + public void saveOrganisationType(OrganisationType organisationType); + + /** + * Updates the organisationType + * @param organisationType the object to be updated + * @return OrganisationType the updated organisationType object + */ + public void updateOrganisationType(OrganisationType organisationType); + + /** + * Saves or updates the organisationType + * @param organisationType the object to be saved or updated + * @return OrganisationType the saved or updated organisationType object + */ + public void saveOrUpdateOrganisationType(OrganisationType organisationType); + + /** + * Deletes a organisationType from the database + * @param organisationType the organisationType to be deleted + */ + public void deleteOrganisationType(OrganisationType organisationType); + + /** + * Deletes a organisationType from the database by id + * @param organisationTypeId the organisationType's organisationTypeId + */ + public void deleteOrganisationTypeById(Integer organisationTypeId); + + /** + * Deletes a organisationType from the database by name + * @param name the organisationType's name + */ + public void deleteOrganisationTypeByName(String name); + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IRoleDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IRoleDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IRoleDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,83 @@ +/* + * Created on Nov 21, 2004 + * + * Last modified on Nov 21, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao; + +import java.util.List; + +import org.lamsfoundation.lams.usermanagement.Role; + +/** + * Role Data Access Object (DAO) interface. + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public interface IRoleDAO { + + /** + * Gets a list of all the roles. + * + * @return List populated list of roles + */ + public List getAllRoles(); + + /** + * Gets role object based on roleId. + * @param roleId the role's roleId + * @return role populated role object + */ + public Role getRoleById(Integer roleId); + + /** + * Gets role object based on name. + * @param name the role's name + * @return role populated role object + */ + public Role getRoleByName(String name); + + /** + * Saves the role + * @param role the object to be saved + * @return Role the saved role object + */ + public void saveRole(Role role); + + /** + * Updates the role + * @param role the object to be updated + * @return Role the updated role object + */ + public void updateRole(Role role); + + /** + * Saves or updates the role + * @param role the object to be saved or updated + * @return Role the saved or updated role object + */ + public void saveOrUpdateRole(Role role); + + /** + * Deletes a role from the database + * @param role the role to be deleted + */ + public void deleteRole(Role role); + + /** + * Deletes a role from the database by id + * @param roleId the role's roleId + */ + public void deleteRoleById(Integer roleId); + + /** + * Deletes a role from the database by name + * @param name the role's name + */ + public void deleteRoleByName(String name); + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IUserDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/Attic/IUserDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IUserDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,163 @@ +/* + * Created on 20 Nov, 2004 + * + * Last modified on 20 Nov, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao; + +import java.util.List; + +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.Workspace; +import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; + +/** + * User Data Access Object (DAO) interface. + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public interface IUserDAO { + + + /** + * Gets a list of all the users. + * + * @return List populated list of users + */ + public List getAllUsers(); + + /** + * Gets user object based on userId. + * @param userId the user's userId + * @return user populated user object + */ + public User getUserById(Integer userId); + + /** + * Gets user object based on login. + * @param login the user's login + * @return user populated user object + */ + public User getUserByLogin(String login); + + /** + * Gets a list of all the users based on title. + * @param title the user's title + * @return List populated list of users + */ + public List getUsersByTitle(String title); + + /** + * Gets a list of all the users based on first name. + * @param firstName the user's first name + * @return List populated list of users + */ + public List getUsersByFirstName(String firstName); + + /** + * Gets a list of all the users based on last name. + * @param lastName the user's last name + * @return List populated list of users + */ + public List getUsersByLastName(String lastName); + + /** + * Gets a list of all the users based on full name. + * @param firstName the user's first name + * @param lastName the user's last name + * @return List populated list of users + */ + public List getUsersByFullName(String firstName, String lastName); + + /** + * Gets a list of all the users based on city. + * @param city the user's city + * @return List populated list of users + */ + public List getUsersByCity(String city); + + /** + * Gets a list of all the users based on state. + * @param state the user's state + * @return List populated list of users + */ + public List getUsersByState(String state); + + /** + * Gets a list of all the users based on country. + * @param country the user's country + * @return List populated list of users + */ + public List getUsersByCountry(String country); + + /** + * Gets a list of all the users based on disabledFlag. + * @param disabledFlag the user's disabledFlag + * @return List populated list of users + */ + public List getUsersByDisabledFlag(Boolean disabledFlag); + + /** + * Gets a list of all the users based on workspace. + * @param workspace the user's workspace + * @return List populated list of users + */ + public List getUsersByWorkspace(Workspace workspace); + + /** + * Gets a list of all the users based on authenticationMethod. + * @param authenticationMethod the user's authenticationMethod + * @return List populated list of users + */ + public List getUsersByAuthenticationMethod(AuthenticationMethod authenticationMethod); + + /** + * Saves the user + * @param user the object to be saved + * @return User the saved user object + */ + public void saveUser(User user); + + /** + * Updates the user + * @param user the object to be updated + * @return User the updated user object + */ + public void updateUser(User user); + + /** + * Saves or updates the user + * @param user the object to be saved or updated + * @return User the saved or updated user object + */ + public void saveOrUpdateUser(User user); + + /** + * Deletes a user from the database + * @param user the user to be deleted + */ + public void deleteUser(User user); + + /** + * Deletes a user from the database by id + * @param userId the user's userId + */ + public void deleteUserById(Integer userId); + + /** + * Deletes a user from the database by login + * @param login the user's login + */ + public void deleteUserByLogin(String login); + + /** + * Updates user's password + * @param login the user's login + * @param newPassword the user's new password + */ + public void updatePassword(String login, String newPassword); +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IUserOrganisationDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IUserOrganisationDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IUserOrganisationDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,100 @@ +/* + * Created on Nov 25, 2004 + * + * Last modified on Nov 25, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao; + +import java.util.List; + +import org.lamsfoundation.lams.usermanagement.UserOrganisation; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.Organisation; + +/** + * UserOrganisation Data Access Object (DAO) interface. + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public interface IUserOrganisationDAO { + /** + * Gets a list of all the userOrganisations. + * + * @return List populated list of userOrganisations + */ + public List getAllUserOrganisations(); + + /** + * Gets userOrganisation object based on userOrganisationId. + * @param userOrganisationId the userOrganisation's userOrganisationId + * @return userOrganisation populated userOrganisation object + */ + public UserOrganisation getUserOrganisationById(Integer userOrganisationId); + + /** + * Gets userOrganisation object based on userId and organisationId. + * @param userId the userOrganisation's userId + * @param organisationId the userOrganisation's organisationId + * @return userOrganisation populated userOrganisation object + */ + public UserOrganisation getUserOrganisation(Integer userId, Integer orgnisationId); + + /** + * Gets userOrganisation objects based on user. + * @param user the userOrganisation's user + * @return List populated list of userOrganisations + */ + public List getUserOrganisationsByUser(User user); + + /** + * Gets userOrganisation objects based on organisation. + * @param organisation the userOrganisation's organisation + * @return List populated list of userOrganisations + */ + public List getUserOrganisationsByOrganisation(Organisation organisation); + + /** + * Gets userOrganisation objects based on organisationId. + * @param organisationId the userOrganisation's organisationId + * @return List populated list of userOrganisations + */ + public List getUserOrganisationsByOrganisationId(Integer organisationId); + + /** + * Saves the userOrganisation + * @param userOrganisation the object to be saved + * @return UserOrganisation the saved userOrganisation object + */ + public void saveUserOrganisation(UserOrganisation userOrganisation); + + /** + * Updates the userOrganisation + * @param userOrganisation the object to be updated + * @return UserOrganisation the updated userOrganisation object + */ + public void updateUserOrganisation(UserOrganisation userOrganisation); + + /** + * Saves or updates the userOrganisation + * @param userOrganisation the object to be saved or updated + * @return UserOrganisation the saved or updated userOrganisation object + */ + public void saveOrUpdateUserOrganisation(UserOrganisation userOrganisation); + + /** + * Deletes a userOrganisation from the database + * @param userOrganisation the userOrganisation to be deleted + */ + public void deleteUserOrganisation(UserOrganisation userOrganisation); + + /** + * Deletes a userOrganisation from the database by id + * @param userOrganisationId the userOrganisation's userOrganisationId + */ + public void deleteUserOrganisationById(Integer userOrganisationId); + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IUserOrganisationRoleDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/Attic/IUserOrganisationRoleDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IUserOrganisationRoleDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,77 @@ +/* + * Created on 2005-1-12 + * + * Last modified on 2005-1-12 + */ +package org.lamsfoundation.lams.usermanagement.dao; + +import java.util.List; +import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; + +/** + * TODO Add description here + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public interface IUserOrganisationRoleDAO { + + /** + * Gets userOrganisationRole object based on userOrganisationRoleId. + * @param userOrganisationRoleId the userOrganisationRole's userOrganisationRoleId + * @return userOrganisationRole populated userOrganisationRole object + */ + public UserOrganisationRole getUserOrganisationRoleById(Integer userOrganisationRoleId); + + /** + * Gets userOrganisationRole object based on userId and organisationId. + * @param userOrganisationId the userOrganisationRole's userOrganisationId + * @param roleId the userOrganisationRole's roleId + * @return userOrganisationRole populated userOrganisationRole object + */ + public UserOrganisationRole getUserOrganisationRole(Integer userOrganisationId, Integer roleId); + + /** + * Gets a list of userOrganisationRole objects based on userOrganisationId. + * @param userOrganisationId the userOrganisationRole's userOrganisationId + * @return list of userOrganisationRole objects + */ + public List getUserOrganisationRoles(Integer userOrganisationId); + + /** + * Saves the userOrganisationRole + * @param userOrganisationRole the object to be saved + * @return UserOrganisationRole the saved userOrganisationRole object + */ + public void saveUserOrganisationRole(UserOrganisationRole userOrganisationRole); + + /** + * Updates the userOrganisationRole + * @param userOrganisationRole the object to be updated + * @return UserOrganisationRole the updated userOrganisationRole object + */ + public void updateUserOrganisationRole(UserOrganisationRole userOrganisationRole); + + /** + * Saves or updates the userOrganisationRole + * @param userOrganisationRole the object to be saved or updated + * @return UserOrganisationRole the saved or updated userOrganisationRole object + */ + public void saveOrUpdateUserOrganisationRole(UserOrganisationRole userOrganisationRole); + + /** + * Deletes a userOrganisationRole from the database + * @param userOrganisationRole the userOrganisationRole to be deleted + */ + public void deleteUserOrganisationRole(UserOrganisationRole userOrganisationRole); + + /** + * Deletes a userOrganisationRole from the database by id + * @param userOrganisationRoleId the userOrganisationRole's userOrganisationRoleId + */ + public void deleteUserOrganisationRoleById(Integer userOrganisationRoleId); + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/AuthenticationMethodDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,96 @@ +/* + * Created on Dec 2, 2004 + * + * Last modified on Dec 2, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import java.util.List; + +import org.springframework.orm.hibernate.support.HibernateDaoSupport; + +import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO; + +/** + * This class interacts with Spring's HibernateTemplate to save/delete and + * retrieve AuthenticationMethodType objects. + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class AuthenticationMethodDAO extends HibernateDaoSupport + implements IAuthenticationMethodDAO { + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO#getAllAuthenticationMethods() + */ + public List getAllAuthenticationMethods() { + return getHibernateTemplate().find("from AuthenticationMethod"); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO#getAuthenticationMethodById(java.lang.Integer) + */ + public AuthenticationMethod getAuthenticationMethodById(Integer authenticationMethodId) { + return (AuthenticationMethod)getHibernateTemplate().get(AuthenticationMethod.class, authenticationMethodId); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO#getAuthenticationMethodByName(java.lang.String) + */ + public AuthenticationMethod getAuthenticationMethodByName(String name){ + String queryString = "from AuthenticationMethod am where am.authenticationMethodName=?"; + List list = getHibernateTemplate().find(queryString,name); + return (AuthenticationMethod)list.get(0); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO#getAuthenticationMethodByUser(org.lamsfoundation.lams.usermanagement.User) + */ + public AuthenticationMethod getAuthenticationMethodByUser(User user){ + String queryString = "from AuthenticationMethod am where am.authenticationMethodId=?"; + List list = getHibernateTemplate().find(queryString,user.getAuthenticationMethod().getAuthenticationMethodId()); + return (AuthenticationMethod)list.get(0); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO#saveAuthenticationMethod(org.lamsfoundation.lams.usermanagement.AuthenticationMethod) + */ + public void saveAuthenticationMethod(AuthenticationMethod authenticationMethod) { + getHibernateTemplate().save(authenticationMethod); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO#updateAuthenticationMethod(org.lamsfoundation.lams.usermanagement.AuthenticationMethod) + */ + public void updateAuthenticationMethod(AuthenticationMethod authenticationMethod) { + getHibernateTemplate().update(authenticationMethod); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO#saveOrUpdateAuthenticationMethod(org.lamsfoundation.lams.usermanagement.AuthenticationMethod) + */ + public void saveOrUpdateAuthenticationMethod(AuthenticationMethod authenticationMethod) { + getHibernateTemplate().saveOrUpdate(authenticationMethod); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO#deleteAuthenticationMethod(org.lamsfoundation.lams.usermanagement.AuthenticationMethod) + */ + public void deleteAuthenticationMethod(AuthenticationMethod authenticationMethod) { + getHibernateTemplate().delete(authenticationMethod); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO#deleteAuthenticationMethodById(java.lang.Integer) + */ + public void deleteAuthenticationMethodById(Integer authenticationMethodId) { + getHibernateTemplate().delete(getAuthenticationMethodById(authenticationMethodId)); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodTypeDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/AuthenticationMethodTypeDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodTypeDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,76 @@ +/* + * Created on Dec 2, 2004 + * + * Last modified on Dec 2, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import java.util.List; + +import org.springframework.orm.hibernate.support.HibernateDaoSupport; + +import org.lamsfoundation.lams.usermanagement.AuthenticationMethodType; +import org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodTypeDAO; + +/** + * This class interacts with Spring's HibernateTemplate to save/delete and + * retrieve AuthenticationMethodType objects. + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class AuthenticationMethodTypeDAO extends HibernateDaoSupport + implements IAuthenticationMethodTypeDAO { + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodTypeDAO#getAllAuthenticationMethodTypes() + */ + public List getAllAuthenticationMethodTypes() { + return getHibernateTemplate().find("from AuthenticationMethodType"); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodTypeDAO#getAuthenticationMethodTypeById(java.lang.Integer) + */ + public AuthenticationMethodType getAuthenticationMethodTypeById(Integer authenticationMethodTypeId) { + return (AuthenticationMethodType)getHibernateTemplate().get(AuthenticationMethodType.class,authenticationMethodTypeId); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodTypeDAO#saveAuthenticationMethodType(org.lamsfoundation.lams.usermanagement.AuthenticationMethodType) + */ + public void saveAuthenticationMethodType(AuthenticationMethodType authenticationMethodType) { + getHibernateTemplate().save(authenticationMethodType); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodTypeDAO#updateAuthenticationMethodType(org.lamsfoundation.lams.usermanagement.AuthenticationMethodType) + */ + public void updateAuthenticationMethodType(AuthenticationMethodType authenticationMethodType) { + getHibernateTemplate().update(authenticationMethodType); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodTypeDAO#saveOrUpdateAuthenticationMethodType(org.lamsfoundation.lams.usermanagement.AuthenticationMethodType) + */ + public void saveOrUpdateAuthenticationMethodType(AuthenticationMethodType authenticationMethodType) { + getHibernateTemplate().saveOrUpdate(authenticationMethodType); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodTypeDAO#deleteAuthenticationMethodType(org.lamsfoundation.lams.usermanagement.AuthenticationMethodType) + */ + public void deleteAuthenticationMethodType(AuthenticationMethodType authenticationMethodType) { + getHibernateTemplate().delete(authenticationMethodType); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodTypeDAO#deleteAuthenticationMethodTypeById(java.lang.Integer) + */ + public void deleteAuthenticationMethodTypeById(Integer authenticationMethodTypeId) { + getHibernateTemplate().delete(getAuthenticationMethodTypeById(authenticationMethodTypeId)); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,101 @@ +/* + * Created on Nov 21, 2004 + * + * Last modified on Nov 21, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import java.util.List; +import java.util.Iterator; + +import org.springframework.orm.hibernate.support.HibernateDaoSupport; + +import org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO; +import org.lamsfoundation.lams.usermanagement.Organisation; + +/** + * This class interacts with Spring's HibernateTemplate to save/delete and + * retrieve Organisation objects. + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class OrganisationDAO extends HibernateDaoSupport implements + IOrganisationDAO { + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO#getAllOrganisations() + */ + public List getAllOrganisations() { + return getHibernateTemplate().find("from Organisation"); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO#getOrganisationById(java.lang.Integer) + */ + public Organisation getOrganisationById(Integer organisationId) { + return (Organisation)getHibernateTemplate().get(Organisation.class, organisationId); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO#getOrganisationsByName(java.lang.String) + */ + public List getOrganisationsByName(String name) { + String queryString = "from Organisation o where o.name=?"; + return getHibernateTemplate().find(queryString,name); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO#getChildOrganisations(org.lamsfoundation.lams.usermanagement.Organisation) + */ + public List getChildOrganisations(Organisation parentOrg){ + String queryString = "from Organisation o where o.parentOrganisation.organisationId=?"; + return getHibernateTemplate().find(queryString,parentOrg.getOrganisationId()); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO#saveOrganisation(org.lamsfoundation.lams.usermanagement.Organisation) + */ + public void saveOrganisation(Organisation organisation) { + getHibernateTemplate().save(organisation); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO#updateOrganisation(org.lamsfoundation.lams.usermanagement.Organisation) + */ + public void updateOrganisation(Organisation organisation) { + getHibernateTemplate().update(organisation); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO#saveOrUpdateOrganisation(org.lamsfoundation.lams.usermanagement.Organisation) + */ + public void saveOrUpdateOrganisation(Organisation organisation) { + getHibernateTemplate().saveOrUpdate(organisation); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO#deleteOrganisation(org.lamsfoundation.lams.usermanagement.Organisation) + */ + public void deleteOrganisation(Organisation organisation) { + Iterator iter = organisation.getChildOrganisations().iterator(); + Organisation parentOrganisation = organisation.getParentOrganisation(); + while(iter.hasNext()){ + Organisation childOrganisation = (Organisation)iter.next(); + childOrganisation.setParentOrganisation(parentOrganisation); + iter.remove(); + } + getHibernateTemplate().delete(organisation); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO#deleteOrganisationById(java.lang.Integer) + */ + public void deleteOrganisationById(Integer organisationId) { + deleteOrganisation(getOrganisationById(organisationId)); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationTypeDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/OrganisationTypeDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationTypeDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,96 @@ +/* + * Created on Nov 25, 2004 + * + * Last modified on Nov 25, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import java.util.List; + +import org.springframework.orm.hibernate.support.HibernateDaoSupport; + +import org.lamsfoundation.lams.usermanagement.OrganisationType; +import org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO; + +/** + * OrganisationType DAO Hibernate Implementation. + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class OrganisationTypeDAO extends HibernateDaoSupport implements + IOrganisationTypeDAO { + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO#getAllOrganisationTypes() + */ + public List getAllOrganisationTypes() { + return getHibernateTemplate().find("from OrganisationType"); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO#getOrganisationTypeById(java.lang.Integer) + */ + public OrganisationType getOrganisationTypeById(Integer organisationTypeId) { + return (OrganisationType)getHibernateTemplate().get(OrganisationType.class, organisationTypeId); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO#getOrganisationTypeByName(java.lang.String) + */ + public OrganisationType getOrganisationTypeByName(String name) { + String queryString = "from OrganisationType ot where ot.name=?"; + List organisationTypes = getHibernateTemplate().find(queryString,name); + if(organisationTypes.size() == 0){ + return null; + }else{ + return (OrganisationType)organisationTypes.get(0); + } + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO#saveOrganisationType(org.lamsfoundation.lams.usermanagement.OrganisationType) + */ + public void saveOrganisationType(OrganisationType organisationType) { + getHibernateTemplate().save(organisationType); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO#updateOrganisationType(org.lamsfoundation.lams.usermanagement.OrganisationType) + */ + public void updateOrganisationType(OrganisationType organisationType) { + getHibernateTemplate().update(organisationType); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO#saveOrUpdateOrganisationType(org.lamsfoundation.lams.usermanagement.OrganisationType) + */ + public void saveOrUpdateOrganisationType(OrganisationType organisationType) { + getHibernateTemplate().saveOrUpdate(organisationType); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO#deleteOrganisationType(org.lamsfoundation.lams.usermanagement.OrganisationType) + */ + public void deleteOrganisationType(OrganisationType organisationType) { + getHibernateTemplate().delete(organisationType); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO#deleteOrganisationTypeById(java.lang.Integer) + */ + public void deleteOrganisationTypeById(Integer organisationTypeId) { + getHibernateTemplate().delete(getOrganisationTypeById(organisationTypeId)); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO#deleteOrganisationTypeByName(java.lang.String) + */ + public void deleteOrganisationTypeByName(String name) { + getHibernateTemplate().delete(getOrganisationTypeByName(name)); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,95 @@ +/* + * Created on Nov 22, 2004 + * + * Last modified on Nov 22, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import java.util.List; + +import org.springframework.orm.hibernate.support.HibernateDaoSupport; + +import org.lamsfoundation.lams.usermanagement.dao.IRoleDAO; +import org.lamsfoundation.lams.usermanagement.Role; + +/** + * TODO Add description here + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class RoleDAO extends HibernateDaoSupport implements IRoleDAO { + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IRoleDAO#getAllRoles() + */ + public List getAllRoles() { + return getHibernateTemplate().find("from Role"); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IRoleDAO#getRoleById(java.lang.Integer) + */ + public Role getRoleById(Integer roleId) { + return (Role)getHibernateTemplate().get(Role.class, roleId); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IRoleDAO#getRoleByName(java.lang.String) + */ + public Role getRoleByName(String name) { + String queryString = "from Role r where r.name=?"; + List roles = getHibernateTemplate().find(queryString,name); + if(roles.size() == 0){ + return null; + }else{ + return (Role)roles.get(0); + } + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IRoleDAO#saveRole(org.lamsfoundation.lams.usermanagement.Role) + */ + public void saveRole(Role role) { + getHibernateTemplate().save(role); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IRoleDAO#updateRole(org.lamsfoundation.lams.usermanagement.Role) + */ + public void updateRole(Role role) { + getHibernateTemplate().update(role); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IRoleDAO#saveOrUpdateRole(org.lamsfoundation.lams.usermanagement.Role) + */ + public void saveOrUpdateRole(Role role) { + getHibernateTemplate().saveOrUpdate(role); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IRoleDAO#deleteRole(org.lamsfoundation.lams.usermanagement.Role) + */ + public void deleteRole(Role role) { + getHibernateTemplate().delete(role); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IRoleDAO#deleteRoleById(java.lang.Integer) + */ + public void deleteRoleById(Integer roleId) { + deleteRole(getRoleById(roleId)); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IRoleDAO#deleteRoleByName(java.lang.String) + */ + public void deleteRoleByName(String name) { + deleteRole(getRoleByName(name)); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,188 @@ +/* + * Created on Nov 20, 2004 + * + * Last modified on 20 Nov, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import java.util.List; + +import org.springframework.orm.hibernate.support.HibernateDaoSupport; + +import org.lamsfoundation.lams.usermanagement.dao.IUserDAO; +import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.Workspace; + +/** + * This class interacts with Spring's HibernateTemplate to save/delete and + * retrieve User objects. + * + *

+ * View Source + *

+ * + * @author Fei Yang +*/ +public class UserDAO extends HibernateDaoSupport implements IUserDAO { + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#getAllUsers() + */ + public List getAllUsers() { + return getHibernateTemplate().find("from User"); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#getUserById(java.lang.Integer) + */ + public User getUserById(Integer userId) { + return (User)getHibernateTemplate().get(User.class, userId); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#getUserByLogin(java.lang.String) + */ + public User getUserByLogin(String login) { + String queryString = "from User u where u.login=?"; + List users = getHibernateTemplate().find(queryString,login); + if(users.size() == 0){ + return null; + }else{ + return (User)users.get(0); + } + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#getUsersByTitle(java.lang.String) + */ + public List getUsersByTitle(String title) { + String queryString = "from User u where u.title=?"; + return getHibernateTemplate().find(queryString,title); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#getUsersByFirstName(java.lang.String) + */ + public List getUsersByFirstName(String firstName) { + String queryString = "from User u where u.firstName=?"; + return getHibernateTemplate().find(queryString,firstName); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#getUsersByLastName(java.lang.String) + */ + public List getUsersByLastName(String lastName) { + String queryString = "from User u where u.lastName=?"; + return getHibernateTemplate().find(queryString,lastName); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#getUsersByFullName(java.lang.String) + */ + public List getUsersByFullName(String firstName, String lastName) { + String queryString = "from User u where u.firstName=? and u.lastName=?"; + return getHibernateTemplate().find(queryString, new Object[]{firstName,lastName}); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#getUsersByCity(java.lang.String) + */ + public List getUsersByCity(String city) { + String queryString = "from User u where u.city=?"; + return getHibernateTemplate().find(queryString,city); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#getUsersByState(java.lang.String) + */ + public List getUsersByState(String state) { + String queryString = "from User u where u.state=?"; + return getHibernateTemplate().find(queryString,state); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#getUsersByCountry(java.lang.String) + */ + public List getUsersByCountry(String country) { + String queryString = "from User u where u.country=?"; + return getHibernateTemplate().find(queryString,country); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#getUsersByDisabledFlag(java.lang.String) + */ + public List getUsersByDisabledFlag(Boolean disabledFlag) { + String queryString = "from User u where u.disabledFlag=?"; + return getHibernateTemplate().find(queryString,disabledFlag); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#getUsersByWorkspace(org.lamsfoundation.lams.usermanagement.Workspace) + */ + public List getUsersByWorkspace(Workspace workspace) { + String queryString = "from User u where u.workspace.workspaceId=?"; + return getHibernateTemplate().find(queryString,workspace.getWorkspaceId()); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#getUsersByAuthenticationMethod(org.lamsfoundation.lams.usermanagement.AuthenticationMethod) + */ + public List getUsersByAuthenticationMethod( + AuthenticationMethod authenticationMethod) { + String queryString = "from User u where u.authenticationMethod.authenticationMethodId=?"; + return getHibernateTemplate().find(queryString,authenticationMethod.getAuthenticationMethodId()); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#saveUser(org.lamsfoundation.lams.usermanagement.User) + */ + public void saveUser(User user) { + getHibernateTemplate().save(user); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#updateUser(org.lamsfoundation.lams.usermanagement.User) + */ + public void updateUser(User user) { + getHibernateTemplate().update(user); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#saveOrUpdateUser(org.lamsfoundation.lams.usermanagement.User) + */ + public void saveOrUpdateUser(User user) { + getHibernateTemplate().saveOrUpdate(user); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#deleteUser(org.lamsfoundation.lams.usermanagement.User) + */ + public void deleteUser(User user) { + getHibernateTemplate().delete(user); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#deleteUserById(java.lang.Integer) + */ + public void deleteUserById(Integer userId) { + getHibernateTemplate().delete(getUserById(userId)); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#deleteUserByLogin(java.lang.String) + */ + public void deleteUserByLogin(String login) { + getHibernateTemplate().delete(getUserByLogin(login)); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserDAO#updatePassword(java.lang.String,java.lang.String) + */ + public void updatePassword(String login, String newPassword){ + User user = getUserByLogin(login); + user.setPassword(newPassword); + updateUser(user); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,117 @@ +/* + * Created on Nov 25, 2004 + * + * Last modified on Nov 25, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import java.util.List; + +import org.springframework.orm.hibernate.support.HibernateDaoSupport; + +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.UserOrganisation; +import org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO; + +/** + * UserOrganisation DAO Hibernate Implementation. + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class UserOrganisationDAO extends HibernateDaoSupport implements + IUserOrganisationDAO { + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO#getAllUserOrganisations() + */ + public List getAllUserOrganisations() { + return getHibernateTemplate().find("from UserOrganisation"); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO#getUserOrganisationById(java.lang.Integer) + */ + public UserOrganisation getUserOrganisationById(Integer userOrganisationId) { + return (UserOrganisation)getHibernateTemplate().get(UserOrganisation.class, userOrganisationId); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO#getUserOrganisation(java.lang.Integer,java.lang.Integer) + */ + public UserOrganisation getUserOrganisation(Integer userId, Integer orgnisationId){ + String queryString = "from UserOrganisation uo where uo.user.userId=? and uo.organisation.organisationId=?"; + List list = getHibernateTemplate().find(queryString,new Object[]{userId,orgnisationId}); + if (list.size()==0) + { + return null; + } + else + { + return (UserOrganisation)list.get(0); + } + } + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO#getUserOrganisationsByUser(org.lamsfoundation.lams.usermanagement.User) + */ + public List getUserOrganisationsByUser(User user) { + String queryString = "from UserOrganisation uo where uo.user.userId=?"; + return getHibernateTemplate().find(queryString,user.getUserId()); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO#getUserOrganisationsByOrganisation(org.lamsfoundation.lams.usermanagement.Organisation) + */ + public List getUserOrganisationsByOrganisation(Organisation organisation) { + String queryString = "from UserOrganisation uo where uo.organisation.organisationId=?"; + return getHibernateTemplate().find(queryString,organisation.getOrganisationId()); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO#getUserOrganisationsByOrganisationId(int) + */ + public List getUserOrganisationsByOrganisationId(Integer organisationId) { + String queryString = "from UserOrganisation uo where uo.organisation.organisationId=?"; + return getHibernateTemplate().find(queryString,organisationId); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO#saveUserOrganisation(org.lamsfoundation.lams.usermanagement.UserOrganisation) + */ + public void saveUserOrganisation(UserOrganisation userOrganisation) { + getHibernateTemplate().save(userOrganisation); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO#updateUserOrganisation(org.lamsfoundation.lams.usermanagement.UserOrganisation) + */ + public void updateUserOrganisation(UserOrganisation userOrganisation) { + getHibernateTemplate().update(userOrganisation); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO#saveOrUpdateUserOrganisation(org.lamsfoundation.lams.usermanagement.UserOrganisation) + */ + public void saveOrUpdateUserOrganisation(UserOrganisation userOrganisation) { + getHibernateTemplate().saveOrUpdate(userOrganisation); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO#deleteUserOrganisation(org.lamsfoundation.lams.usermanagement.UserOrganisation) + */ + public void deleteUserOrganisation(UserOrganisation userOrganisation) { + getHibernateTemplate().delete(userOrganisation); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO#deleteUserOrganisationById(java.lang.Integer) + */ + public void deleteUserOrganisationById(Integer userOrganisationId) { + getHibernateTemplate().delete(getUserOrganisationById(userOrganisationId)); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationRoleDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/UserOrganisationRoleDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationRoleDAO.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,93 @@ +/* + * Created on 2005-1-12 + * + * Last modified on 2005-1-12 + */ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import java.util.List; + +import org.springframework.orm.hibernate.support.HibernateDaoSupport; + +import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; +import org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO; + +/** + * TODO Add description here + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class UserOrganisationRoleDAO extends HibernateDaoSupport implements + IUserOrganisationRoleDAO { + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO#getUserOrganisationRoleById(java.lang.Integer) + */ + public UserOrganisationRole getUserOrganisationRoleById(Integer userOrganisationRoleId) { + return (UserOrganisationRole)getHibernateTemplate().get(UserOrganisationRole.class, userOrganisationRoleId); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO#getUserOrganisationRole(java.lang.Integer, java.lang.Integer) + */ + public UserOrganisationRole getUserOrganisationRole(Integer userOrganisationId, Integer roleId) { + String queryString = "from UserOrganisationRole uor where uor.userOrganisation.userOrganisationId=? and uor.role.roleId=?"; + List list = getHibernateTemplate().find(queryString,new Object[]{userOrganisationId,roleId}); + if (list.size()==0) + { + return null; + } + else + { + return (UserOrganisationRole)list.get(0); + } + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO#getUserOrganisationRoles(java.lang.Integer) + */ + public List getUserOrganisationRoles(Integer userOrganisationId){ + String queryString="from UserOrganisationRole uor where uor.userOrganisation.userOrganisationId=?"; + return getHibernateTemplate().find(queryString,userOrganisationId); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO#saveUserOrganisationRole(org.lamsfoundation.lams.usermanagement.UserOrganisationRole) + */ + public void saveUserOrganisationRole(UserOrganisationRole userOrganisationRole) { + getHibernateTemplate().save(userOrganisationRole); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO#updateUserOrganisationRole(org.lamsfoundation.lams.usermanagement.UserOrganisationRole) + */ + public void updateUserOrganisationRole(UserOrganisationRole userOrganisationRole) { + getHibernateTemplate().update(userOrganisationRole); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO#saveOrUpdateUserOrganisationRole(org.lamsfoundation.lams.usermanagement.UserOrganisationRole) + */ + public void saveOrUpdateUserOrganisationRole(UserOrganisationRole userOrganisationRole) { + getHibernateTemplate().saveOrUpdate(userOrganisationRole); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO#deleteUserOrganisationRole(org.lamsfoundation.lams.usermanagement.UserOrganisationRole) + */ + public void deleteUserOrganisationRole(UserOrganisationRole userOrganisationRole) { + getHibernateTemplate().delete(userOrganisationRole); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO#deleteUserOrganisationRoleById(java.lang.Integer) + */ + public void deleteUserOrganisationRoleById(Integer userOrganisationRoleId) { + getHibernateTemplate().delete(getUserOrganisationRoleById(userOrganisationRoleId)); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,289 @@ +/* + * Created on Nov 22, 2004 + * + * Last modified on Nov 22, 2004 + */ +package org.lamsfoundation.lams.usermanagement.service; + +import java.util.List; +import org.lamsfoundation.lams.usermanagement.dao.IUserDAO; +import org.lamsfoundation.lams.usermanagement.dao.IRoleDAO; +import org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO; +import org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO; +import org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO; +import org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO; +import org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.OrganisationType; +import org.lamsfoundation.lams.usermanagement.UserOrganisation; +import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; +import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; + +/** + * User Management Service Interface to handle communication between + * web and persistence layer. + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public interface IUserManagementService { + + /** + * Set IUserDAO + * + * @param userDao + */ + public void setUserDAO(IUserDAO userDao); + + /** + * Set IRoleDAO + * + * @param roleDao + */ + public void setRoleDAO(IRoleDAO roleDao); + + /** + * Set IOrganisationDAO + * + * @param organisationDao + */ + public void setOrganisationDAO(IOrganisationDAO organisationDao); + + /** + * Set IOrganisationTypeDAO + * + * @param organisationTypeDao + */ + public void setOrganisationTypeDAO(IOrganisationTypeDAO organisationTypeDao); + + + /** + * Set IUserOrganisationDAO + * + * @param organisationDao + */ + public void setUserOrganisationDAO(IUserOrganisationDAO userOrganisationDao); + + /** + * Set IUserOrganisationRoleDAO + * + * @param organisationRoleDao + */ + public void setUserOrganisationRoleDAO(IUserOrganisationRoleDAO userOrganisationRoleDao); + + /** + * Set IAuthenticationMethodDAO + * + * @param authenticationMethodDao + */ + public void setAuthenticationMethodDAO(IAuthenticationMethodDAO authenticationMethodDao); + + /** + * Retrieves a user by userId. null will be returned + * if no user with the userId is found + * + * @param userId the user's userId + * @return User + */ + public User getUserById(Integer userId); + + + /** + * Retrieves a user by login. null will be returned + * if no user with the login is found + * + * @param login the user's login + * @return User + */ + public User getUserByLogin(String login); + + /** + * Retrieves a organisation by id. null will be returned + * if no organisation with the id is found + * + * @param organisationId the organisation's id + * @return Organisation + */ + public Organisation getOrganisationById(Integer organisationId); + + /** + * Retrieves a organisationType by name. null will be returned + * if no organisationType with the id is found + * + * @param name the organisation type's name + * @return OrganisationType + */ + public OrganisationType getOrganisationTypeByName(String name); + + /** + * Retrieves a role by name. null will be returned + * if no role with the name is found + * + * @param roleName role's name + * @return Role + */ + public Role getRoleByName(String roleName); + + /** + * Retrieves a userOrganisationRole by ids and name. null will be returned + * if no userOrganisationRole is found + * + * @param login the user's login + * @param organisationId the organisation's id + * @param roleName the role's name + * @return UserOrganisationRole + */ + public UserOrganisationRole getUserOrganisationRole(String login,Integer organisationId,String roleName); + + /** + * Retrieves a userOrganisation by login and id. null will be returned + * if no userOrganisation is found + * + * @param userId the user's Id + * @param organisationId the organisation's id + * @return UserOrganisation + */ + public UserOrganisation getUserOrganisation(Integer userId,Integer organisationId); + + + /** + * Retrieves organisations in which the user + * has the specified role + * + * @param user the user + * @param roleName role's name + * @return List of organisations + */ + public List getOrganisationsForUserByRole(User user, String roleName); + + /** + * Retrieves child organisations of the parentOrg + * + * @param parentOrg the parent organisation + * @return List of organisations + */ + public List getChildOrganisations(Organisation parentOrg); + + /** + * Retrieves userOrganisations for the user + * + * @param user the user + * @return List of organisations + */ + public List getUserOrganisationsForUser(User user); + + + /** + * Retrieves the base organisation + * + * @param organisation the organisation + * @return Base Organisation of the organisation specified by the + * parameter + */ + public Organisation getBaseOrganisation(Organisation organisation); + + /** + * Retrieves roles in which the user + * has the specified role + * + * @param user the user + * @param orgId organisation's id + * @return List of roles + */ + public List getRolesForUserByOrganisation(User user, Integer orgId); + + /** + * Retrieves users from the specified organisation + * + * @param orgId organisation's id + * @return List of users + */ + public List getUsersFromOrganisation(Integer orgId); + + /** + * Retrieves All the AuthenticationMethods + * + * @return List of AuthenticationMethods + */ + public List getAllAuthenticationMethods(); + + /** + * Retrieves AuthenticationMethod for the user + * specified by login + * + * @param login the user's login + * @return AuthenticationMethod for this user + */ + public AuthenticationMethod getAuthenticationMethodForUser(String login); + + /** + * Retrieves AuthenticationMethod + * specified by name + * + * @param name the method's name + * @return AuthenticationMethod with the name + */ + public AuthenticationMethod getAuthenticationMethodByName(String name); + + /** + * Creates a user + * + * @param user the user to be created + */ + public void createUser(User user); + + /** + * Updates a user's information + * + * @param user the user + */ + public void updateUser(User user); + + /** + * Save or Updates a user's information + * + * @param user the user + */ + public void saveOrUpdateUser(User user); + + /** + * Updates user's password + * @param login the user's login + * @param newPassword the user's new password + */ + public void updatePassword(String login, String newPassword); + + /** + * Removes a user from the organisation + * + * @param userOrganisation the user's memebership in the organisation + */ + public void removeUserOrganisation(UserOrganisation userOrganisation); + + /** + * Saves or updates an organisation + * + * @param organisation the organisation to be saved or updated + */ + public void saveOrUpdateOrganisation(Organisation organisation); + + /** + * Saves or updates an userOrganisation + * + * @param userOrganisation the userOrganisation to be saved or updated + */ + public void saveOrUpdateUserOrganisation(UserOrganisation userOrganisation); + + /** + * Saves or updates an userOrganisationRole + * + * @param userOrganisationRole the userOrganisationRole to be saved or updated + */ + public void saveOrUpdateUserOrganisationRole(UserOrganisationRole userOrganisationRole); + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,304 @@ +/* + * Created on Nov 22, 2004 + * + * Last modified on Nov 22, 2004 + */ +package org.lamsfoundation.lams.usermanagement.service; + +import java.util.List; +import java.util.ArrayList; +import java.util.Iterator; + +import org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO; +import org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO; +import org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO; +import org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO; +import org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO; +import org.lamsfoundation.lams.usermanagement.dao.IUserDAO; +import org.lamsfoundation.lams.usermanagement.dao.IRoleDAO; +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.OrganisationType; +import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.UserOrganisation; +import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; +import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; + +/** + * TODO Add description here + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class UserManagementService implements IUserManagementService { + + private IUserDAO userDAO; + private IRoleDAO roleDAO; + private IOrganisationDAO organisationDAO; + private IOrganisationTypeDAO organisationTypeDAO; + private IUserOrganisationDAO userOrganisationDAO; + private IUserOrganisationRoleDAO userOrganisationRoleDAO; + private IAuthenticationMethodDAO authenticationMethodDAO; + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setUserDAO(org.lamsfoundation.lams.usermanagement.dao.IUserDAO) + */ + public void setUserDAO(IUserDAO userDAO) { + this.userDAO = userDAO; + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setRoleDAO(org.lamsfoundation.lams.usermanagement.dao.IRoleDAO) + */ + public void setRoleDAO(IRoleDAO roleDAO) { + this.roleDAO = roleDAO; + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setOrganisationDAO(org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO) + */ + public void setOrganisationDAO(IOrganisationDAO organisationDAO) { + this.organisationDAO = organisationDAO; + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setOrganisationTypeDAO(org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO) + */ + public void setOrganisationTypeDAO(IOrganisationTypeDAO organisationTypeDAO){ + this.organisationTypeDAO = organisationTypeDAO; + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setUserOrganisationDAO(org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO) + */ + public void setUserOrganisationDAO(IUserOrganisationDAO userOrganisationDAO) { + this.userOrganisationDAO = userOrganisationDAO; + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setUserOrganisationRoleDAO(org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO) + */ + public void setUserOrganisationRoleDAO(IUserOrganisationRoleDAO userOrganisationRoleDAO) { + this.userOrganisationRoleDAO = userOrganisationRoleDAO; + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setOrganisationDAO(org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO) + */ + public void setAuthenticationMethodDAO(IAuthenticationMethodDAO authenticationMethodDAO){ + this.authenticationMethodDAO = authenticationMethodDAO; + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUserById(java.lang.Integer) + */ + public User getUserById(Integer userId){ + return userDAO.getUserById(userId); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUserByLogin(java.lang.String) + */ + public User getUserByLogin(String login) { + return userDAO.getUserByLogin(login); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getOrganisationById(java.lang.Integer) + */ + public Organisation getOrganisationById(Integer organisationId){ + return organisationDAO.getOrganisationById(organisationId); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getOrganisationTypeByName(java.lang.String) + */ + public OrganisationType getOrganisationTypeByName(String name){ + return organisationTypeDAO.getOrganisationTypeByName(name); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getBaseOrganisation(org.lamsfoundation.lams.usermanagement.Organisation) + */ + public Organisation getBaseOrganisation(Organisation organisation){ + if (organisation.getOrganisationType().getName().equals(OrganisationType.ROOT)){ + return null; + }else if(organisation.getOrganisationType().getName().equals(OrganisationType.BASE)){ + return organisation; + }else{ + return getBaseOrganisation(organisation.getParentOrganisation()); + } + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getRoleByName(java.lang.String) + */ + public Role getRoleByName(String roleName){ + return roleDAO.getRoleByName(roleName); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUserOrganisationRole(java.lang.String,java.lang.Integer,java.lang.String) + */ + public UserOrganisationRole getUserOrganisationRole(String login, Integer organisationId, String roleName){ + User user = userDAO.getUserByLogin(login); + if(user == null) + return null; + UserOrganisation userOrganisation = userOrganisationDAO.getUserOrganisation(user.getUserId(),organisationId); + if(userOrganisation==null) + return null; + Role role = roleDAO.getRoleByName(roleName); + if(role==null) + return null; + return userOrganisationRoleDAO.getUserOrganisationRole(userOrganisation.getUserOrganisationId(),role.getRoleId()); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUserOrganisationRole(java.lang.String,java.lang.Integer,java.lang.String) + */ + public UserOrganisation getUserOrganisation(Integer userId,Integer organisationId){ + return userOrganisationDAO.getUserOrganisation(userId,organisationId); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getAllAuthenticationMethods() + */ + public List getAllAuthenticationMethods(){ + return authenticationMethodDAO.getAllAuthenticationMethods(); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getAuthenticationMethodForUser(java.lang.String) + */ + public AuthenticationMethod getAuthenticationMethodForUser(String login) { + return authenticationMethodDAO.getAuthenticationMethodByUser(userDAO.getUserByLogin(login)); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getAuthenticationMethodByName(java.lang.String) + */ + public AuthenticationMethod getAuthenticationMethodByName(String name){ + return authenticationMethodDAO.getAuthenticationMethodByName(name); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUserOrganisationsForUser(org.lamsfoundation.lams.usermanagement.User) + */ + public List getUserOrganisationsForUser(User user){ + return userOrganisationDAO.getUserOrganisationsByUser(user); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getOrganisationsForUserByRole(org.lamsfoundation.lams.usermanagement.User, java.lang.String) + */ + public List getOrganisationsForUserByRole(User user, String roleName){ + List list = new ArrayList(); + Iterator i = userOrganisationDAO.getUserOrganisationsByUser(user).iterator(); + while(i.hasNext()){ + UserOrganisation userOrganisation = (UserOrganisation)i.next(); + Iterator i2 = userOrganisation.getUserOrganisationRoles().iterator(); + while(i2.hasNext()){ + UserOrganisationRole userOrgansiationRole = (UserOrganisationRole)i2.next(); + if(userOrgansiationRole.getRole().getName().equals(roleName)){ + list.add(userOrgansiationRole.getUserOrganisation().getOrganisation()); + } + } + } + return list; + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getChildOrganisations(org.lamsfoundation.lams.usermanagement.Organisation) + */ + public List getChildOrganisations(Organisation parentOrg){ + return organisationDAO.getChildOrganisations(parentOrg); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getRolesForUserByOrganisation(org.lamsfoundation.lams.usermanagement.User, java.lang.Integer) + */ + public List getRolesForUserByOrganisation(User user, Integer orgId){ + List list = new ArrayList(); + UserOrganisation userOrg = userOrganisationDAO.getUserOrganisation(user.getUserId(),orgId); + if(userOrg==null) + return null; + Iterator i = userOrganisationRoleDAO.getUserOrganisationRoles(userOrg.getUserOrganisationId()).iterator(); + while(i.hasNext()){ + UserOrganisationRole userOrgRole = (UserOrganisationRole)i.next(); + list.add(userOrgRole.getRole()); + } + return list; + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUsersFromOrganisation(int) + */ + public List getUsersFromOrganisation(Integer orgId){ + List list = new ArrayList(); + Iterator i = userOrganisationDAO.getUserOrganisationsByOrganisationId(orgId).iterator(); + while(i.hasNext()){ + UserOrganisation userOrganisation = (UserOrganisation)i.next(); + list.add(userOrganisation.getUser()); + } + return list; + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#createUser(org.lamsfoundation.lams.usermanagement.User) + */ + public void createUser(User user) { + userDAO.saveUser(user); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#updateUser(org.lamsfoundation.lams.usermanagement.User) + */ + public void updateUser(User user) { + userDAO.updateUser(user); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#saveOrUpdateUser(org.lamsfoundation.lams.usermanagement.User) + */ + public void saveOrUpdateUser(User user){ + userDAO.saveOrUpdateUser(user); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#updatePassword(java.lang.String,java.lang.String) + */ + public void updatePassword(String login, String newPassword){ + userDAO.updatePassword(login,newPassword); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#removeUserOrganisation(org.lamsfoundation.lams.usermanagement.UserOrganisation) + */ + public void removeUserOrganisation(UserOrganisation userOrganisation) { + userOrganisationDAO.deleteUserOrganisation(userOrganisation); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#saveOrUpdateOrganisation(org.lamsfoundation.lams.usermanagement.Organisation) + */ + public void saveOrUpdateOrganisation(Organisation organisation) { + organisationDAO.saveOrUpdateOrganisation(organisation); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#saveOrUpdateUserOrganisation(org.lamsfoundation.lams.usermanagement.UserOrganisation) + */ + public void saveOrUpdateUserOrganisation(UserOrganisation userOrganisation){ + userOrganisationDAO.saveOrUpdateUserOrganisation(userOrganisation); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#saveOrUpdateUserOrganisationRole(org.lamsfoundation.lams.usermanagement.UserOrganisationRole) + */ + public void saveOrUpdateUserOrganisationRole(UserOrganisationRole userOrganisationRole){ + userOrganisationRoleDAO.saveOrUpdateUserOrganisationRole(userOrganisationRole); + } +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/util/AdminPreparer.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/util/Attic/AdminPreparer.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/util/AdminPreparer.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,55 @@ +/* + * Created on 2005-1-28 + * + * Last modified on 2005-1-28 + */ +package org.lamsfoundation.lams.usermanagement.util; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import javax.servlet.http.HttpServletRequest; + +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; +import org.lamsfoundation.lams.usermanagement.service.UserManagementService; +import org.lamsfoundation.lams.web.AttributeNames; + +/** + * TODO Add description here + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class AdminPreparer { + + public static void prepare(Organisation org, HttpServletRequest request, UserManagementService service){ + UserOrganisationRole userOrgRole = null; + if(org.getParentOrganisation()!=null){ + userOrgRole = service.getUserOrganisationRole(request.getRemoteUser(),org.getParentOrganisation().getOrganisationId(),Role.ADMIN); + } + List childOrgs = service.getChildOrganisations(org); + for(int i=0; i + * View Source + *

+ * + * @author Fei Yang + */ +public class ExcelUserImportFileParser implements IUserImportFileParser{ + + /* + * start of definition of property keys used in the excel file + */ + private static final short LOGIN = 0; + private static final short PASSWORD = 1; + private static final short AUTH_METHOD = 2; + private static final short ROLE = 3; + private static final short STATUS = 4; + private static final short TITLE = 5; + private static final short FIRST_NAME = 6; + private static final short LAST_NAME = 7; + private static final short EMAIL = 8; + private static final short ADDRESS1 = 9; + private static final short ADDRESS2 = 10; + private static final short ADDRESS3 = 11; + private static final short CITY = 12; + private static final short STATE = 13; + private static final short COUNTRY = 14; + private static final short DAY_PHONE = 15; + private static final short EVE_PHONE = 16; + private static final short MOB_PHONE = 17; + private static final short FAX = 18; + + + private static String[] errMsgArray = + new String[]{LOGIN_REQUIRED,PASSWORD_REQUIRED,AUTH_METHOD_REQUIRED,ROLE_REQUIRED}; + //end of definition + + private boolean emptyRow; + private boolean hasError; + private String errMsgForRow; + private IUserManagementService service; + + public ExcelUserImportFileParser(IUserManagementService service){ + this.service = service; + } + + /** + * @see org.lamsfoundation.lams.usermanagement.util.IUserImportFileParser#parseUsersInOrganisation(FileItem fileItem, Organisation org, String adminLogin, boolean existingUsersOnly) + */ + public String parseUsersInOrganisation(FileItem fileItem, Organisation org, String adminLogin, boolean existingUsersOnly) throws IOException{ + String errorMessage = ""; + POIFSFileSystem fs = new POIFSFileSystem(fileItem.getInputStream()); + HSSFWorkbook wb = new HSSFWorkbook(fs); + HSSFSheet sheet = wb.getSheetAt(0); + int startRow = sheet.getFirstRowNum(); + int endRow = sheet.getLastRowNum(); + int count = 0; + Double dbl; + Long l; + HSSFCell cell = null; + for (int i = startRow + 1; i < endRow + 1; i++) + { + emptyRow = true; + hasError = false; + errMsgForRow = ""; + HSSFRow row = sheet.getRow(i); + User user = new User(); + Set roles = null; + + user.setLogin(parseStringCell(row.getCell(LOGIN),i,LOGIN)); + if(existingUsersOnly){//if existingUsersOnly, ignore all the other columns + user = service.getUserByLogin(user.getLogin()); + if(user==null) + { + errMsgForRow = errMsgForRow + ROW + i + SKIP + parseStringCell(row.getCell(LOGIN),i,LOGIN) + USER_NOT_EXIST ; + hasError = true; + } + else{//check if the admin is authorised + List userOrgs = service.getUserOrganisationsForUser(user); + Iterator iter = userOrgs.iterator(); + boolean userOrgExisted = false; + boolean authorised = false; + while(iter.hasNext()){ + UserOrganisation userOrg = (UserOrganisation)iter.next(); + if(userOrg.getOrganisation().getOrganisationId().equals(org.getOrganisationId())){ + userOrgExisted = true; + break; + } + User admin = service.getUserByLogin(adminLogin); + Iterator iter2 = service.getUserOrganisationsForUser(admin).iterator(); + while(iter2.hasNext()){ + UserOrganisation adminOrg = (UserOrganisation)iter2.next(); + if(adminOrg.getOrganisation().getOrganisationId().equals(userOrg.getOrganisation().getOrganisationId())){ + authorised = true; + break; + } + } + if(authorised) + break; + } + if(!authorised) + { + errMsgForRow = errMsgForRow + ROW + i + SKIP + parseStringCell(row.getCell(LOGIN),i,LOGIN) + NO_AUTHORISATION; + hasError = true; + } + if(userOrgExisted){ + errMsgForRow = errMsgForRow + ROW + i + SKIP + parseStringCell(row.getCell(LOGIN),i,LOGIN) + MEMBERSHIP_EXIST + org.getName(); + hasError = true; + } + roles = parseRoleCell(row.getCell(ROLE),i,ROLE); + } + }else{ + user.setPassword(parseStringCell(row.getCell(PASSWORD),i,PASSWORD)); + user.setAuthenticationMethod(parseAuthMethodCell(row.getCell(AUTH_METHOD),i,AUTH_METHOD)); + roles = parseRoleCell(row.getCell(ROLE),i,ROLE); + user.setDisabledFlag(parseStatusCell(row.getCell(STATUS),i)); + user.setTitle(parseStringCell(row.getCell(TITLE),i,-1)); + user.setFirstName(parseStringCell(row.getCell(FIRST_NAME),i,-1)); + user.setLastName(parseStringCell(row.getCell(LAST_NAME),i,-1)); + user.setEmail(parseStringCell(row.getCell(EMAIL),i,-1)); + user.setAddressLine1(parseStringCell(row.getCell(ADDRESS1),i,-1)); + user.setAddressLine2(parseStringCell(row.getCell(ADDRESS2),i,-1)); + user.setAddressLine3(parseStringCell(row.getCell(ADDRESS3),i,-1)); + user.setCity(parseStringCell(row.getCell(CITY),i,-1)); + user.setState(parseStringCell(row.getCell(STATE),i,-1)); + user.setCountry(parseStringCell(row.getCell(COUNTRY),i,-1)); + user.setDayPhone(parseStringCell(row.getCell(DAY_PHONE),i,-1)); + user.setEveningPhone(parseStringCell(row.getCell(EVE_PHONE),i,-1)); + user.setMobilePhone(parseStringCell(row.getCell(MOB_PHONE),i,-1)); + user.setFax(parseStringCell(row.getCell(FAX),i,-1)); + } + + if (emptyRow) + { + break; + } + if (hasError) + { + errorMessage = errorMessage + errMsgForRow; + continue; + } + else + { + try + { + if(!existingUsersOnly){ + user.setCreateDate(new Date()); + user.setBaseOrganisation(service.getBaseOrganisation(org)); + service.createUser(user); + } + UserOrganisation userOrg = new UserOrganisation(); + userOrg.setUser(user); + userOrg.setOrganisation(org); + service.saveOrUpdateUserOrganisation(userOrg); + Iterator iter = roles.iterator(); + while(iter.hasNext()){ + UserOrganisationRole userOrgRole = new UserOrganisationRole(); + userOrgRole.setUserOrganisation(userOrg); + userOrgRole.setRole((Role)iter.next()); + service.saveOrUpdateUserOrganisationRole(userOrgRole); + } + count++; + } + catch (Exception e) + { + errMsgForRow = + errMsgForRow + + ROW + + i + + FAIL_ADD + + user.getLogin() + + SKIP + + e.getMessage(); + errorMessage = errorMessage + errMsgForRow; + } + } + } + return (count + SUCCESS_ADD + errorMessage); + } + + private String parseStringCell(HSSFCell cell, int row, int msgIndex){ + if ((msgIndex!=-1)&&(cell == null)) + { + if (hasError) + { + errMsgForRow = errMsgForRow + errMsgArray[msgIndex]; + } + else + { + errMsgForRow = errMsgForRow + ROW + row + SKIP + errMsgArray[msgIndex]; + hasError = true; + } + return null; + } + else if(cell!=null) + { + try{ + cell.setCellType(HSSFCell.CELL_TYPE_STRING); + if(cell.getStringCellValue()!= null){ + if(cell.getStringCellValue().trim().length()!= 0){ + emptyRow = false; + } + }else{ + return null; + } + return cell.getStringCellValue().trim(); + }catch(Exception e) + { + cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); + double d = cell.getNumericCellValue(); + emptyRow = false; + return (new Long(new Double(d).longValue()).toString()); + } + } + return null; + } + + private AuthenticationMethod parseAuthMethodCell(HSSFCell cell, int row, int msgIndex){ + String authMethodName = parseStringCell(cell,row,msgIndex); + if(authMethodName==null){ + return null; + }else{ + return service.getAuthenticationMethodByName(authMethodName); + } + } + + private Set parseRoleCell(HSSFCell cell, int row, int msgIndex) + { + String roleDescription = ""; + if ((msgIndex!=-1)&&(cell == null)) + { + if (hasError) + { + errMsgForRow = errMsgForRow + errMsgArray[msgIndex]; + } + else + { + errMsgForRow = errMsgForRow + ROW + row + SKIP + errMsgArray[msgIndex]; + hasError = true; + } + return null; + } + else if(cell!=null) + { + try{ + cell.setCellType(HSSFCell.CELL_TYPE_STRING); + if(cell.getStringCellValue()!= null){ + if(cell.getStringCellValue().trim().length()!= 0){ + emptyRow = false; + } + }else{ + return null; + } + roleDescription = cell.getStringCellValue().trim(); + }catch(Exception e) + { + return null; + } + + } + Set roles = new HashSet(); + int fromIndex = 0; + int index = roleDescription.indexOf(SEPERATOR, fromIndex); + while (index != -1) + { + Role role = service.getRoleByName(roleDescription.substring(fromIndex, index)); + if(role!=null)//ignore wrong spelled role + { + roles.add(role); + } + fromIndex = index + 1; + index = roleDescription.indexOf(SEPERATOR, fromIndex); + } + Role role = service.getRoleByName(roleDescription.substring(fromIndex, roleDescription.length())); + if(role!=null){ + roles.add(role); + } + return roles; + } + + private Boolean parseStatusCell(HSSFCell cell, int row) + { + String status = parseStringCell(cell,row,-1); + return new Boolean(STATUS_DISABLED.equals(status)); + } +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/util/IUserImportFileParser.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/util/IUserImportFileParser.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/util/IUserImportFileParser.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,44 @@ +/* + * Created on 2005-1-19 + * + * Last modified on 2005-1-19 + */ +package org.lamsfoundation.lams.usermanagement.util; + +import java.io.IOException; + +import org.apache.commons.fileupload.FileItem; + +import org.lamsfoundation.lams.usermanagement.Organisation; + +/** + * TODO Add description here + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public interface IUserImportFileParser { + + public static final String STATUS_DISABLED = "disabled"; + public static final String SEPERATOR = "|"; + public static final String NO_AUTHORISATION = + "
You are not authorised to select the user!"; + public static final String ROW = "
Row "; + public static final String FAIL_ADD = ": Failed to add "; + public static final String SUCCESS_ADD = + " user(s) have been added successfully!"; + public static final String SKIP = ": Skipped. Error was: "; + public static final String USER_NOT_EXIST = " does not exist! "; + public static final String MEMBERSHIP_EXIST = " is already a member of the current org: "; + + public static final String LOGIN_REQUIRED = "Login is required."; + public static final String PASSWORD_REQUIRED = "Password is required."; + public static final String AUTH_METHOD_REQUIRED = "Authentication method is required."; + public static final String ROLE_REQUIRED = "Role is required."; + + public String parseUsersInOrganisation(FileItem fileItem, Organisation org, String adminLogin, boolean existingUsersOnly) throws IOException; + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/web/AdminAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/web/Attic/AdminAction.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/web/AdminAction.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,487 @@ +package org.lamsfoundation.lams.usermanagement.web; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.Iterator; +import java.util.List; +import java.util.ArrayList; +import java.util.Date; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileUploadException; +import org.apache.log4j.Logger; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.actions.DispatchAction; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.UserOrganisation; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.util.ExcelUserImportFileParser; +import org.lamsfoundation.lams.usermanagement.util.AdminPreparer; +import org.lamsfoundation.lams.usermanagement.service.UserManagementService; +import org.lamsfoundation.lams.web.HttpSessionManager; +import org.lamsfoundation.lams.web.AttributeNames; +import org.lamsfoundation.lams.util.UploadFileUtil; +import org.lamsfoundation.lams.usermanagement.web.UserActionForm; + +/** + * Main access calls for the normal user adminstration screens. + * + * @author Fei Yang + * + * @struts:action path="/admin" validate="false" parameter="method" + * @struts:action-forward name="admin" path=".admin" + * @struts:action-forward name="organisation" path=".admin.organisation" + * @struts:action-forward name="user" path=".admin.user" + * @struts:action-forward name="usersadd" path=".admin.usersadd" + * @struts:action-forward name="usersremove" path=".admin.usersremove" + * @struts:action-forward name="error" path=".admin.error" + */ +public class AdminAction extends DispatchAction { + + private static Logger log = Logger.getLogger(AdminAction.class); + + private static WebApplicationContext ctx = WebApplicationContextUtils + .getWebApplicationContext(HttpSessionManager.getInstance() + .getServletContext()); + + private static UserManagementService service = (UserManagementService) ctx + .getBean("userManagementServiceTarget"); + + public ActionForward getAdmin(ActionMapping mapping, + ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { + + log.debug("getAdmin"); + Integer orgId = null; + try { + if (request.getParameter("orgId") != null) { + orgId = new Integer(request.getParameter("orgId").trim()); + } + } catch (NumberFormatException e) { + } + + boolean error = false; + + if (orgId == null) { + log.error("There is no 'orgId' parameter in the request"); + error = true; + } else {//edit organisation + Organisation org = service.getOrganisationById(orgId); + if (org != null) { + log.debug("Copying properties from org " + org.toString()); + AdminPreparer.prepare(org,request,service); + } else { + log.error("Organisation id " + orgId + " not found"); + error = true; + } + } + + return mapping.findForward(error ? "error" : "admin"); + } + + + /** + * Initial call that loads up the form for editing the name/description of + * an organisation. + */ + public ActionForward getOrganisationEdit(ActionMapping mapping, + ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { + log.debug("getOrganisationEdit"); + + Integer orgId = null; + try { + if (request.getParameter("orgId") != null) { + orgId = new Integer(request.getParameter("orgId").trim()); + } + } catch (NumberFormatException e) { + } + + boolean error = false; + + OrganisationActionForm orgForm = new OrganisationActionForm(); + + if (orgId == null) { + log.error("There is no 'orgId' parameter in the request"); + error = true; + } else if (orgId.intValue() == -1) {//create child organisation + orgForm.setOrgId(new Integer(-1)); + orgForm.setName(""); + orgForm.setDescription(""); + Integer parentOrgId = new Integer(request.getParameter( + "parentOrgId").trim()); + Organisation parent = service.getOrganisationById(parentOrgId); + if (parent != null) { + orgForm.setParentOrgId(parent.getOrganisationId()); + orgForm.setParentOrgName(parent.getName()); + } else { + log + .error("Creating new top level organisation (parent organisation id not found)"); + error = true; + } + } else {//edit organisation + Organisation org = service.getOrganisationById(orgId); + if (org != null) { + log.debug("Copying properties from org " + org.toString()); + orgForm.setOrgId(org.getOrganisationId()); + orgForm.setName(org.getName()); + orgForm.setDescription(org.getDescription()); + } else { + log.error("Organisation id " + orgId + " not found"); + error = true; + } + } + + request.getSession(true).setAttribute(OrganisationActionForm.formName, + orgForm); + return mapping.findForward(error ? "error" : "organisation"); + } + + /** + * import users form file + * + * @return screen reference name - "error" or "admin" + */ + public ActionForward importUsersFromFile(ActionMapping mapping, + ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { + + boolean error = false; + if (request.getParameter("orgId") == null) { + error = true; + log.error("There is no 'orgId' parameter in the reuqest"); + } else { + Integer orgId = new Integer(request.getParameter("orgId").trim()); + Organisation org = service.getOrganisationById(orgId); + FileItem fileToUpload = null; + String errorMessage = null; + List items = null; + try { + items = UploadFileUtil.getUploadItems(request, false, null); + Iterator iter = items.iterator(); + while (iter.hasNext()) { + FileItem item = (FileItem) iter.next(); + log.debug("Request item: " + item.toString()); + if (!(item.getName() == null || item.getSize() == 0)) { + fileToUpload = item; + } + } + if (fileToUpload == null) { + error = true; + log.error("There is no file uploaded"); + } else { + ExcelUserImportFileParser parser = new ExcelUserImportFileParser( + service); + //TODO Test if existingUserOnly works + boolean existingUsersOnly = ((String) request + .getParameter("existingUsersOnly")).equals("true"); + errorMessage = parser.parseUsersInOrganisation( + fileToUpload, org, request.getRemoteUser(), + existingUsersOnly); + } + } catch (FileUploadException fue) { + log.error("Unable to upload file. Exception occured: ", fue); + errorMessage = "Unable to upload file. Error was:" + + fue.getMessage(); + } catch (IOException e) { + log + .error("IOException happened when processing uploaded file: " + + e); + errorMessage = "IOException happened when processing uploaded file: " + + e.getMessage(); + } catch (Exception e) { + log.error("Exception happened when uploading file: " + e); + errorMessage = "Exception happened when uploading file: " + + e.getMessage(); + } + AdminPreparer.prepare(org,request,service); + if (errorMessage != null) { + request.setAttribute(AttributeNames.ADMIN_ERR_MSG,errorMessage); + } + } + return mapping.findForward(error ? "error" : "admin"); + } + + /** + * Does the actual work that loads up the user form for editing. + * + * @return Screen reference name - "error" or "userentry" + */ + public ActionForward getUserEdit(ActionMapping mapping, ActionForm form, + HttpServletRequest request, HttpServletResponse response) + throws IOException, ServletException { + + log.debug("getUserEdit"); + Integer editUserId = null; // the user to modify + String adminUserLogin = null; + + try { + if (request.getParameter("userid") != null) { + editUserId = new Integer(request.getParameter("userid").trim()); + } + } catch (NumberFormatException e) { + } + + UserActionForm newForm = null; + boolean error = false; + + try { + + adminUserLogin = request.getRemoteUser(); + + Integer orgId = null; + try { + if (request.getParameter("orgId") != null) { + orgId = new Integer(request.getParameter("orgId").trim()); + } + } catch (NumberFormatException e) { + } + + Organisation org = service.getOrganisationById(orgId); + if (org == null) { + log.error("implUserEdit: Organisation not found " + orgId); + error = true; + } else { + request.setAttribute(AttributeNames.ADMIN_ORGANISATION, org); + User user = null; + if (editUserId == null) { + editUserId = new Integer(-1); + } else { + user = service.getUserById(editUserId); + } + + if (user != null) { + newForm = setupEditUserActionForm(editUserId, org, user); + } else { + newForm = setupNewUserActionForm(org); + } + + } + + } catch (IllegalAccessException e) { + log.error("Exception occured ", e); + error = true; + } catch (InvocationTargetException e) { + log.error("Exception occured ", e); + error = true; + } + + log.debug("getUserEdit: Form is " + newForm.toMap().toString()); + + // Form bean has to go in the session otherwise end up with two form + // beans + // floating around the system. + request.getSession(true).setAttribute(UserActionForm.formName, newForm); + return mapping.findForward(error ? "error" : "user"); + } + + private UserActionForm setupNewUserActionForm(Organisation org) { + UserActionForm newForm = new UserActionForm(); + + newForm.setOrgId(org.getOrganisationId()); + newForm.setCreateNew(true); + newForm.setDisabledFlag(new Boolean(false)); + newForm.setCreateDate(new Date()); + newForm.setRoleNames(new String[0]); + newForm.setNewMembershipOrganisationId(org.getOrganisationId()); + newForm.setAllAuthMethods(service.getAllAuthenticationMethods()); + newForm.setNewMembershipOrgName(org.getName()); + return newForm; + } + + private UserActionForm setupEditUserActionForm(Integer editUserId, + Organisation org, User user) throws IllegalAccessException, + InvocationTargetException { + + UserActionForm newForm = new UserActionForm(); + BeanUtils.copyProperties(newForm, user); + newForm.setPasswordConfirm(newForm.getPassword()); + newForm.setOrgId(org.getOrganisationId()); + newForm.setOtherMemberships(service.getUserOrganisationsForUser(user)); + newForm.setAllAuthMethods(service.getAllAuthenticationMethods()); + newForm.setCreateNew(false); + newForm.setRoleNames(getRoleNames(user, org.getOrganisationId())); + return newForm; + } + + // get the users roles + private String[] getRoleNames(User user, Integer orgId) { + + String rolenames[] = new String[service.getRolesForUserByOrganisation( + user, orgId).size()]; + Iterator iter = service.getRolesForUserByOrganisation(user, orgId) + .iterator(); + int i = 0; + while (iter.hasNext()) { + Role role = (Role) iter.next(); + rolenames[i] = role.getName(); + i++; + } + + return rolenames; + } + + /** + * Do the actual work that loads up the organisation add user form for + * editing + * + * @return screen reference name - "error" or "usersadd" + */ + public ActionForward getUsersAdd(ActionMapping mapping, ActionForm form, + HttpServletRequest request, HttpServletResponse response) { + + log.debug("getUsersAdd"); + Integer orgId = null; + try { + if (request.getParameter("orgId") != null) { + orgId = new Integer(request.getParameter("orgId").trim()); + } + } catch (NumberFormatException e) { + } + + UsersAddActionForm newForm = null; + boolean error = false; + + if (orgId == null) { + log.error("getUsersAdd: Missing parameter " + "orgId"); + error = true; + } else { + newForm = setupOrgAddUserForm(request, orgId); + } + + if (newForm == null || error) { + request.getSession(true).removeAttribute(UsersAddActionForm.formName); + return mapping.findForward("error"); + } else { + // has to go in the session otherwise end up with two form beans + // floating around the system. + request.getSession(true).setAttribute(UsersAddActionForm.formName,newForm); + return mapping.findForward("usersadd"); + } + } + + private UsersAddActionForm setupOrgAddUserForm(HttpServletRequest request, + Integer orgId) { + + boolean error = false; + UsersAddActionForm newForm = new UsersAddActionForm(); + try { + Organisation org = service.getOrganisationById(orgId); + if (org != null) { + log.debug("Copying properties from org " + org.toString()); + newForm.setName(org.getName()); + newForm.setDescription(org.getDescription()); + newForm.setOrgId(org.getOrganisationId()); + } else { + log.error("getUsersAdd: Organisation not found or not available to this user. Id #="+ orgId); + error = true; + } + + // get all the organisation that the user can select from. + User adminUser = service.getUserByLogin(request.getRemoteUser()); + List userOrgs = service.getUserOrganisationsForUser(adminUser); + newForm.setAvailableOrgs(getOrgsWithAdminRole(userOrgs, org)); + + newForm.setSelectedOrgId(new Integer(-1)); + + } catch (Exception e) { + log.error("Exception occured ", e); + error = true; + } + + if (error) { + newForm = null; + return null; + } else { + return newForm; + } + } + + private List getOrgsWithAdminRole(List userOrgs, Organisation currentOrg) { + List orgs = new ArrayList(); + Iterator iter = userOrgs.iterator(); + while (iter.hasNext()) { + UserOrganisation userOrg = (UserOrganisation) iter.next(); + List roles = service.getRolesForUserByOrganisation(userOrg + .getUser(), userOrg.getOrganisation().getOrganisationId()); + if (!userOrg.getOrganisation().getOrganisationId().equals( + currentOrg.getOrganisationId())) { + Iterator iter2 = roles.iterator(); + while (iter2.hasNext()) { + Role role = (Role) iter2.next(); + if (role.getName().equals(Role.ADMIN)) { + orgs.add(userOrg.getOrganisation()); + } + } + } + } + return orgs; + } + + /** + * Initial call that loads up the organisation remove user form for editing + */ + public ActionForward getUsersRemove(ActionMapping mapping, ActionForm form, + HttpServletRequest request, HttpServletResponse response) + throws IOException, ServletException { + + log.debug("getUsersRemove"); + Integer orgId = null; + try { + if (request.getParameter("orgId") != null) { + orgId = new Integer(request.getParameter("orgId").trim()); + } + } catch (NumberFormatException e) { + } + + UsersRemoveActionForm newForm = new UsersRemoveActionForm(); + log.debug("orgId=" + orgId); + boolean error = false; + + if (orgId == null) { + log.error("getOrganisationAddUsers: Missing parameter " + "orgId"); + error = true; + } else { + Organisation org = service.getOrganisationById(orgId); + if (org != null) { + log.debug("Copying properties from org " + org.toString()); + newForm.setName(org.getName()); + newForm.setDescription(org.getDescription()); + newForm.setOrgId(org.getOrganisationId()); + // need only the users who aren't home users! + List users = service.getUsersFromOrganisation(orgId); + for(int i=0; iActionErrors object that encapsulates any + * validation errors that have been found. If no errors are found, return + * null or an ActionErrors object with no + * recorded error messages. + *

+ * @param mapping The mapping used to select this instance + * @param request The servlet request we are processing + */ + public ActionErrors validate(ActionMapping mapping, + HttpServletRequest request) { + ActionErrors errors = super.validate(mapping, request); + + if (errors==null) errors = new ActionErrors(); + + if ( getName() == null || getName().length()==0) + { + errors.add("name", new ActionMessage("error.name.required")); + } + if ( getDescription() == null || getDescription().length()==0) + { + errors.add("description", new ActionMessage("error.description.required")); + } + if (errors.isEmpty()) return null; + else return errors; + + } + + /** + * Returns the parentOrgName. + * @return String + */ + public String getParentOrgName() { + return parentOrgName; + } + + /** + * Returns the parentOrgOrgId. + * @return Integer + */ + public Integer getParentOrgId() { + return parentOrgId; + } + + /** + * Sets the parentOrgName. + * @param parentOrgName The parentOrgName to set + */ + public void setParentOrgName(String parentOrgName) { + this.parentOrgName = parentOrgName; + } + + /** + * Sets the parentOrgId. + * @param parentOrgId The parentOrgId to set + */ + public void setParentOrgId(Integer parentOrgId) { + this.parentOrgId = parentOrgId; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/web/UserAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/web/Attic/UserAction.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/web/UserAction.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,151 @@ +package org.lamsfoundation.lams.usermanagement.web; + +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +import org.apache.commons.beanutils.BeanUtils; +import org.apache.log4j.Logger; +import org.apache.struts.action.Action; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.UserOrganisation; +import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; +import org.lamsfoundation.lams.usermanagement.service.UserManagementService; +import org.lamsfoundation.lams.usermanagement.util.AdminPreparer; +import org.lamsfoundation.lams.web.HttpSessionManager; + + +/** + * @author Fei Yang + * + * @struts:action path="/user" + * name="UserActionForm" + * input=".admin.user" + * scope="session" + * validate="true" + * + * @struts:action-forward name="admin" path=".admin" + * @struts:action-forward name="error" path=".admin.error" + * + */ +public class UserAction extends Action { + + private static Logger log = Logger.getLogger(UserAction.class); + private static WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(HttpSessionManager.getInstance().getServletContext()); + private static UserManagementService service = (UserManagementService) ctx.getBean("userManagementServiceTarget"); + + + /** + * Perform is called when the UserActionForm is processed. + * + * @param mapping The ActionMapping used to select this instance + * @param actionForm The optional ActionForm bean for this request (if any) + * @param request The HTTP request we are processing + * @param response The HTTP response we are creating + * + * @exception IOException if an input/output error occurs + * @exception ServletException if a servlet exception occurs + */ + public ActionForward execute(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws Exception + { + + ActionErrors errors = new ActionErrors(); + + UserActionForm userForm = (UserActionForm) form; + Integer editUserId = null; // id of the user being modified + Integer orgId = userForm.getOrgId(); + Organisation org = service.getOrganisationById(orgId); + + // -- isCancelled? + if (isCancelled(request)) { + AdminPreparer.prepare(org,request,service); + request.getSession(true).removeAttribute(UserActionForm.formName); + return mapping.findForward("admin"); + } + + // Okay, update the database + if (errors.isEmpty()) + { + log.debug("Call update user, based on form data "+userForm.toMap().toString()); + + User user = new User(); + + try { + + BeanUtils.copyProperties(user,userForm.toMap()); + log.debug("Copied values "+user.toString()); + String authMethodName = userForm.getAuthMethodName(); + user.setAuthenticationMethod(service.getAuthenticationMethodByName(authMethodName)); + service.saveOrUpdateUser(user); + editUserId = user.getUserId(); + UserOrganisation userOrg; + if(userForm.isCreateNew()){ + userOrg = new UserOrganisation(); + userOrg.setUser(user); + userOrg.setOrganisation(org); + service.saveOrUpdateUserOrganisation(userOrg); + }else{ + userOrg = service.getUserOrganisation(user.getUserId(),orgId); + } + + // interpret the role strings returned by the checkboxes. + String roleNames[] = userForm.getRoleNames(); + log.debug("Rolenames from form: "+roleNames); + + List roles = new ArrayList(); + for(int i=0; iActionErrors object that encapsulates any + * validation errors that have been found. If no errors are found, return + * null or an ActionErrors object with no + * recorded error messages. + *

+ * + * @param mapping + * The mapping used to select this instance + * @param request + * The servlet request we are processing + */ + public ActionErrors validate(ActionMapping mapping, + HttpServletRequest request) { + + ActionErrors errors = super.validate(mapping, request); + + if (errors == null) + errors = new ActionErrors(); + + if (getLogin() == null || getLogin().length() == 0) { + errors.add("login", new ActionMessage("error.username.required")); + } + if ((getAuthMethodName() == null) + || (getAuthMethodName().length() == 0)) { + errors.add("authmethod", new ActionMessage( + "error.authmethod.required")); + } + if ((getPassword() != null && getPassword().length() != 0) + || (getPasswordConfirm() != null && getPasswordConfirm() + .length() != 0)) { + // something entered in the password fields, make sure that they + // both the same + if (getPassword() == null + || !getPassword().equals(getPasswordConfirm())) { + errors.add("password", new ActionMessage("error.password.match")); + } + } + if (isCreateNew() + && (getPassword() == null || getPassword().length() == 0)) { + errors.add("password", new ActionMessage("error.password.required")); + } + if (getRoleNames() == null || getRoleNames().length == 0) { + errors.add("roles", new ActionMessage("error.role.required")); + } + + if (errors.isEmpty()) + return null; + else { + // don't want to pass back what they had as the password +System.err.println("=====>UserActionForm validation errors: " + errors); + setPassword(null); + setPasswordConfirm(null); + return errors; + } + + } + +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/web/UsersAddAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/web/Attic/UsersAddAction.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/web/UsersAddAction.java 28 Jan 2005 04:20:36 -0000 1.1 @@ -0,0 +1,201 @@ +package org.lamsfoundation.lams.usermanagement.web; + +import java.util.List; +import java.util.Map; +import java.util.HashMap; +import java.util.Iterator; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +import org.apache.log4j.Logger; +import org.apache.struts.action.Action; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +import org.lamsfoundation.lams.usermanagement.service.UserManagementService; +import org.lamsfoundation.lams.usermanagement.util.AdminPreparer; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.UserOrganisation; +import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; +import org.lamsfoundation.lams.web.HttpSessionManager; + +/** + * @author Fei Yang + * + * @struts:action path="/usersadd" + * name="UsersAddActionForm" + * input=".admin.usersadd" + * scope="session" + * validate="false" + * + * @struts:action-forward name="admin" path=".admin" + * @struts:action-forward name="usersadd" path=".admin.usersadd" + * @struts:action-forward name="error" path=".admin.error" + */ +public class UsersAddAction extends Action { + + private static Logger log = Logger.getLogger(UsersAddAction.class); + private static WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(HttpSessionManager.getInstance().getServletContext()); + private static UserManagementService service = (UserManagementService) ctx.getBean("userManagementServiceTarget"); + + public static final String SUBMIT_SHOW_USERS = "Show Users"; + public static final String SUBMIT_ADD_USERS = "Add Selected Users"; + + /** + * @param mapping The ActionMapping used to select this instance + * @param actionForm The optional ActionForm bean for this request (if any) + * @param request The HTTP request we are processing + * @param response The HTTP response we are creating + * + * @exception Exception if any error occurs + */ + public ActionForward execute(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws Exception + { + + UsersAddActionForm dataForm = (UsersAddActionForm) form; + // -- isCancelled? + if (isCancelled(request)) { + Organisation org = service.getOrganisationById(dataForm.getOrgId()); + AdminPreparer.prepare(org,request,service); + request.getSession(true).removeAttribute(UsersAddActionForm.formName); + return mapping.findForward("admin"); + } + + ActionErrors errors = new ActionErrors(); + + Integer orgId = null; + boolean finished = false; + + // Okay, update the database + if (errors.isEmpty()) + { + try { + log.debug("dataForm is "+dataForm); + orgId = dataForm.getOrgId(); + if ( orgId == null || orgId.intValue()==-1) + errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.system")); + else{ + if ( isShowUsers(request) ) + { + addUsersToForm(request, dataForm); + } + else + { + addUsersToOrg(request, dataForm,errors); + finished = true; + } + } + } catch (Exception e) { + log.error("Exception occured ",e); + errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.system")); + } + + } // end if errors empty + + // -- Report any errors + if (!errors.isEmpty()) { + addErrors(request, errors); + request.getSession(true).removeAttribute(UsersAddActionForm.formName); + if (mapping.getInput()!=null) + return (new ActionForward(mapping.getInput())); + // If no input page, use error forwarding + return (mapping.findForward("error")); + } + + if ( finished ) + { + request.getSession(true).removeAttribute(UsersAddActionForm.formName); + Organisation org = service.getOrganisationById(orgId); + AdminPreparer.prepare(org,request,service); + return ( mapping.findForward("admin") ); + } + else + { + return ( mapping.findForward("usersadd")); + } + } + + private void addUsersToOrg(HttpServletRequest request, + UsersAddActionForm dataForm,ActionErrors errors) + { + Integer orgId = dataForm.getOrgId(); + Organisation org = service.getOrganisationById(orgId); + String[] potentialRoleNames = dataForm.getPotentialRoleNames(); + String lastLogin=""; + UserOrganisation lastUserOrg = null; + for(int i=0; i + * View Source + *

+ * + * @author Fei Yang + */ +public class ConfigurationLoader { + + private static final String CONFIG_FILE_PATH_WINDOWS = "c:/lamsconf/lams.xml"; + + private static final String CONFIG_FILE_PATH_UNIX = "/usr/local/lamsconf/lams.xml"; + + private static String configFilePath; + + /** + * @return Returns the configFilePath. + */ + public static String getConfigFilePath() { + setConfigFilePath(); + return configFilePath; + } + /** + * @param configFilePath The configFilePath to set. + */ + private static void setConfigFilePath() { + //Suppose windows and unix are the only platforms where lams will be installed + //TODO make it complete + String osName = System.getProperty("os.name"); + if((osName.indexOf("Windows")!=-1)||(osName.indexOf("windows")!=-1)) + { + ConfigurationLoader.configFilePath = CONFIG_FILE_PATH_WINDOWS; + }else + { + ConfigurationLoader.configFilePath = CONFIG_FILE_PATH_UNIX; + } + } + + public static Map load() + { + setConfigFilePath(); + Map items = Collections.synchronizedMap(new HashMap()); + try{ + Document configureDoc = XmlFileLoader.getDocumentFromFilePath(configFilePath); + Element root = (Element)configureDoc.getElementsByTagName("Lams").item(0); + NodeList nodeList = root.getChildNodes(); + for(int i=0; iIOExcpetion in ConfigurationLoader "+e); + //nothing to do + }catch(SAXException e) + { +System.out.println("===>SAXExcpetion in ConfigurationLoader "+e); + //nothing to do + }catch(ParserConfigurationException e) + { +System.out.println("===>ParserConfigurationException in ConfigurationLoader "+e); + //nothing to do + } + return items; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/util/UploadFileUtil.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/UploadFileUtil.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/util/UploadFileUtil.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,165 @@ +package org.lamsfoundation.lams.util; + +import java.io.File; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.fileupload.DiskFileUpload; +import org.apache.commons.fileupload.FileUploadException; +import org.apache.log4j.Logger; + + +/** + * Wraps up interface to the Commons FileUpload as much as possible. Reads configuration + * information such the maximum size of a file from lams.xml using the ConfigurationService. + * + * @author fmalikoff + * Fei Yang + * + */ +public class UploadFileUtil { + + private static Logger log = Logger.getLogger(UploadFileUtil.class); + + private static final int DEFAULT_MAX_SIZE = 5000000; // 5 Meg + private static final int DEFAULT_MEMORY_SIZE = 4096; + + /** Given the current servlet request and the name of a temporary directory, + * get a list of all the uploaded items from a multipart form. This includes any + * uploaded files and the "normal" input fields on the form. Gets the temporary + * directory from the configuration file. Equivalent to getUploadItems(request, useLargeFileSize, null) + * @param request - current servlet request + * @param useLargeFileSize - use the large file size. If not true, use the standard file size. + * @return List of items, of type FileItem + */ + public static List getUploadItems(HttpServletRequest request, boolean useLargeFileSize ) + throws FileUploadException, Exception + { + return getUploadItems(request,useLargeFileSize,null); + } + + /** Given the current servlet request and the name of a temporary directory, + * get a list of all the uploaded items from a multipart form. This includes any + * uploaded files and the "normal" input fields on the form. + * @param request - current servlet request + * @param useLargeFileSize - use the large file size. If not true, use the standard file size. + * @param tempDirName - the name of the directory into which temporary files can be written + * @return List of items, of type FileItem + */ + public static List getUploadItems(HttpServletRequest request, boolean useLargeFileSize, String tempDirNameInput) + throws FileUploadException, Exception + { + + int max_size = DEFAULT_MAX_SIZE; + int max_memory_size; + String tempDirName = null; + + int tempInt=-1; + + if ( useLargeFileSize ) + { + tempInt = Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_LARGE_MAX_SIZE); + if(tempInt!=-1) + { + max_size = tempInt; + } + else + { + log.warn("Default Large Max Size for file upload missing, using "+DEFAULT_MAX_SIZE); + } + } + else + { + tempInt = Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_MAX_SIZE); + if ( tempInt != -1 ) + { + max_size = tempInt; + } + else + { + log.warn("Default Max Size for file upload missing, using "+DEFAULT_MAX_SIZE); + } + } + + tempInt = Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_MAX_MEMORY_SIZE); + if ( tempInt != -1 ) + { + max_memory_size = tempInt; + } + else + { + log.warn("Default Max Memory Size for file upload missing, using "+DEFAULT_MEMORY_SIZE); + max_memory_size = DEFAULT_MEMORY_SIZE; + } + + if ( tempDirNameInput != null ) + { + tempDirName = tempDirNameInput; + } + else + { + tempDirName = Configuration.get(ConfigurationKeys.LAMS_TEMP_DIR); + if ( tempDirName == null ) + { + log.warn("Default Temporary Directory missing, using null"); + } + } + // would be nice to only do this once! never mind. + if ( tempDirName != null ) + { + File dir = new File(tempDirName); + if ( ! dir.exists() ) + dir.mkdirs(); + } + + + // Create a new file upload handler + DiskFileUpload upload = new DiskFileUpload(); + + // Set upload parameters + upload.setSizeMax(max_size); + upload.setSizeThreshold(max_memory_size); + upload.setRepositoryPath(tempDirName); + + // Parse the request + List items = upload.parseRequest(request); + return items; + } + + + /** + * @return Maximum size (in megabytes) that a file may be. Standard size, use during running + * of sequence. + */ + public static float getMaxFileSize() + { + int max_size = DEFAULT_MAX_SIZE; + + int tempInt = Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_MAX_SIZE); + if ( tempInt != -1 ) + { + max_size = tempInt; + } + + return ( max_size != 0 ? (float) max_size / 1024 / 1024 : (float) 0 ); + } + + /** + * @return Maximum size (in megabytes) that a file may be. Large size, use during + * authoring only. + */ + public static float getMaxLargeFileSize() + { + int max_size = DEFAULT_MAX_SIZE; + + int tempInt = Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_LARGE_MAX_SIZE); + if ( tempInt != -1 ) + { + max_size = tempInt; + } + + return ( max_size != 0 ? (float) max_size / 1024 / 1024 : (float) 0 ); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/util/WDDXProcessor.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/Attic/WDDXProcessor.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/util/WDDXProcessor.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,265 @@ +package org.lamsfoundation.lams.util; + +import java.io.IOException; +import java.io.StringReader; +import java.io.StringWriter; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.xml.sax.InputSource; + +import com.allaire.wddx.WddxDeserializationException; +import com.allaire.wddx.WddxDeserializer; +import com.allaire.wddx.WddxSerializer; + + +/** + * @author Minhas + */ +public class WDDXProcessor { + private static Logger logger = Logger.getLogger(WDDXProcessor.class.getName()); + + WDDXProcessor m_theRealMe = null; + + /** + * Constructor for Serialiser. Private to ensure singleton behaviour + */ + private WDDXProcessor() + { + super(); + } + + + WDDXProcessor getInstance() + { + if ( m_theRealMe == null ) + m_theRealMe = new WDDXProcessor(); + return m_theRealMe; + } + + /** Replace any "%0D0A" in the wddx packet with true java characters + * Flash clients will put in "%0D0A" to get around the Flash code + * removing newlines before creating the packet. + *

+ * Made public as some parts of the system use the same format when + * sending from Flash clients, but not via a wddx packet (just a normal post). + */ + public static String replaceNewline(String inputPacket) + { + String ret = null; + if ( inputPacket != null ) + { + ret = StringUtils.replace(inputPacket,"%0D%0A","\r\n"); + } + return ret; + } + + /** + * Deserialize an arbitrary packet. + */ + public static Object deserialize(String wddxPacket) + throws WddxDeserializationException + { + String replacedString = replaceNewline(wddxPacket); + + // Create an input source (org.xml.sax.InputSource) bound to the packet + InputSource tempSource = new InputSource(new StringReader(replacedString)); + + // Create a WDDX deserializer (com.allaire.wddx.WddxDeserializer) + WddxDeserializer tempDeserializer = new WddxDeserializer("org.apache.xerces.parsers.SAXParser"); + + // Deserialize the WDDX packet + Object result; + try + { + result = tempDeserializer.deserialize(tempSource); + } + catch (IOException e) + { + throw new WddxDeserializationException( e ); + } + + return result; + } + + /** + * Serialize an arbitrary packet. + */ + public static String serialize(Object data) throws IOException + { + // Create a WDDX serializer + WddxSerializer tempws = new WddxSerializer(); + + // Create a writer to store the generated WDDX + StringWriter tempsw = new StringWriter(); + // Serialize the data + tempws.serialize(data, tempsw); + // Return the WDDX packet + return tempsw.toString(); + } + + /** Convert a string to an int, based on how WDDX usually passes numbers. + * @param identifier - name of value being converted - using in the exception thrown + * if the number cannot be converted. + * @param value - the value to be converted + * @return int value + * @throws Exception - will contain a message "Unable to convert value (identifier): (value) to an int" + */ + public static int convertToInt( String identifier, Object value) + throws WDDXProcessorConversionException + { + int result=-255; + if ( value == null ) + { + throw new WDDXProcessorConversionException(identifier+" is null, cannot convert to an int"); + } + + try { + // WDDX should give us a double + result = ((Number)value).intValue(); + return(result); + } catch (Exception e) {} + + try { + String textValue = (String) value; + if ( textValue.length() == 0 ) + return -1; + + double dTemp = Double.parseDouble(textValue); + result = (int) dTemp; + } catch ( Exception e2) { + throw new WDDXProcessorConversionException("Unable to convert value "+identifier+":"+value+" to an int"); + } + return(result); + } + + /** + * Some conversion doesn't allow null value. Doing so will result in hidden + * nullpointer exception. We do need this helper function. + * + * @param identifier + * @param value + * @return converted integer. + * @throws WDDXProcessorConversionException + * @author Jacky Fang + */ + public static Integer nullSafeCovertToInteger(String identifier,Object value) throws WDDXProcessorConversionException + { + if(value == null) + throw new IllegalArgumentException("["+identifier+"] is null. We can't convert null value to integer"); + //delegate to convertToInteger + return convertToInteger(identifier,value); + } + /** Convert a string to an integer, based on how WDDX usually passes numbers. + * As it is an integer, if the field is blank (or not there), then return null + * @param identifier - name of value being converted - using in the exception thrown + * if the number cannot be converted. + * @param value - the value to be converted + * @return integer value or null + * @throws Exception - will contain a message "Unable to convert value (identifier): (value) to an int" + */ + public static Integer convertToInteger( String identifier, Object value) + throws WDDXProcessorConversionException + { + Integer result = null; + if ( value == null ) + return null; + + try { + // WDDX should give us a double + result = new Integer (((Number)value).intValue() ); + return(result); + } catch (Exception e) {} + + try { + String textValue = (String) value; + if ( textValue.length() == 0 ) + return null; + + int posPeriod = textValue.indexOf('.'); + if ( posPeriod > 0 ) + { + textValue = textValue.substring(0,posPeriod); + } + result = new Integer (textValue); + } catch ( Exception e2) { + throw new WDDXProcessorConversionException("Unable to convert value "+identifier+":"+value+" to an int"); + } + return(result); + } + + /** Convert a String to an Long, based on how WDDX usually passes numbers. + * As it is a Long, if the field is blank (or not there), then return null + * @param identifier - name of value being converted - using in the exception thrown + * if the number cannot be converted. + * @param value - the value to be converted + * @return Long value or null + * @throws Exception - will contain a message "Unable to convert value (identifier): (value) to an int" + */ + public static Long convertToLong( String identifier, Object value) + throws WDDXProcessorConversionException + { + Long result = null; + if ( value == null ) + { + return null; + } + + try { + // WDDX should give us a double + result = new Long(((Number)value).intValue() ); + return(result); + } catch (Exception e) {} + + try { + String textValue = (String) value; + if ( textValue.length() == 0 ) + return null; + + int posPeriod = textValue.indexOf('.'); + if ( posPeriod > 0 ) + { + textValue = textValue.substring(0,posPeriod); + } + result = new Long (textValue); + } catch ( Exception e2) { + throw new WDDXProcessorConversionException("Unable to convert value "+identifier+":"+value+" to an int"); + } + return(result); + } + + /** Convert a String/Boolean to an Boolean + * @param identifier - name of value being converted - using in the exception thrown + * if the value cannot be converted. + * @param value - the value to be converted + * @return Boolean value or null + * @throws Exception - will contain a message "Unable to convert value (identifier): (value) to an int" + */ + public static Boolean convertToBoolean( String identifier, Object value) + throws WDDXProcessorConversionException + { + Boolean result = null; + if ( value == null ) + { + return null; + } + + try { + result = (Boolean) value; + logger.debug("identifier "+identifier+" was Boolean value "+value+" becomes "+result); + return(result); + } catch (Exception e) {} + + try { + String textValue = (String) value; + if ( textValue.length() == 0 ) + return null; + + result = new Boolean (textValue); + logger.debug("identifier "+identifier+" was String value "+value+" becomes "+result); + return(result); + } catch ( Exception e2) { + throw new WDDXProcessorConversionException("Unable to convert value "+identifier+":"+value+" to a Boolean"); + } + } +} Index: lams_common/src/java/org/lamsfoundation/lams/util/WDDXProcessorConversionException.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/Attic/WDDXProcessorConversionException.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/util/WDDXProcessorConversionException.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,49 @@ +package org.lamsfoundation.lams.util; + +/* ******************************************************************************** + * Copyright Notice + * ================= + * This file contains propriety information of WebMCQ Pty Ltd. + * Copying or reproduction with prior written permission is prohibited. + * Copyright (c) 2002 + ******************************************************************************** */ + +/** + * Thrown if an error occurs trying to get the numeric data from the wddx generated objects. + * @author fmalikoff + */ +public class WDDXProcessorConversionException extends Exception { + + /** + * Constructor for WDDXProcessorConversionException. + */ + public WDDXProcessorConversionException() { + super(); + } + + /** + * Constructor for WDDXProcessorConversionException. + * @param message + */ + public WDDXProcessorConversionException(String message) { + super(message); + } + + /** + * Constructor for WDDXProcessorConversionException. + * @param message + * @param cause + */ + public WDDXProcessorConversionException(String message, Throwable cause) { + super(message, cause); + } + + /** + * Constructor for WDDXProcessorConversionException. + * @param cause + */ + public WDDXProcessorConversionException(Throwable cause) { + super(cause); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,337 @@ +package org.lamsfoundation.lams.util; + +import java.security.Principal; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.apache.log4j.Logger; + +import org.lamsfoundation.lams.tool.ToolAccessMode; + +/** + * helper methods useful for servlets + */ +public class WebUtil +{ + + public static final String CURRENT_TASK_ID = "currentTaskId"; + public static final String COMPLETED_TASK_ID = "completedTaskId"; + public static final String TASK_TO_DISPLAY = "tasktodisplay"; + public static final String SEQUENCE_COMPLETED = "sequenceCompleted"; + public static final String REFRESH_PROGRESS_DATA = "refresh"; + public static final String IS_REUSABLE="isReusable"; + + + private static Logger log = Logger.getLogger(WebUtil.class); + + /** + */ + public static boolean isTokenValid(HttpServletRequest req, String tokenName) + { + if (req.getSession() != null) + { + String valueSession = (String) req.getSession() + .getAttribute(tokenName); + String valueRequest = (String) req.getParameter(tokenName); + log.debug("(Session Token) name : " + tokenName + " value : " + + valueSession); + log.debug("(Request Token) name : " + tokenName + " value : " + + valueRequest); + if ((valueSession != null) && (valueRequest != null)) + { + if (valueSession.equals(valueRequest)) + { + return true; + } + } + } + return false; + } + + /** + */ + public static void saveTaskURL(HttpServletRequest req, String[] urls) + { + if (urls != null) + { + if (urls.length == 1) + { + req.setAttribute("urlA", urls[0]); + } + else if (urls.length == 2) + { + req.setAttribute("urlA", urls[0]); + req.setAttribute("urlB", urls[1]); + } + } + } + + /** + * + * + * @param HttpServletRequest + */ + public static void setRefresh(HttpServletRequest req, boolean refreshValue) + { + req.getSession().setAttribute(REFRESH_PROGRESS_DATA, + Boolean.toString(refreshValue)); + } + + /** + * This method is called each time a task has to be displayed. In this + * method we are setting some attributes in the Http Session. + * + * @param HttpServletRequest + * @param DisplayTaskData - + * contains the data's task. + */ + public static void initTaskAttributes(HttpServletRequest req) + { + req.getSession().setAttribute(CURRENT_TASK_ID, "-1"); + req.getSession().setAttribute(COMPLETED_TASK_ID, "-1"); + req.getSession().setAttribute(TASK_TO_DISPLAY, null); + req.getSession().setAttribute(SEQUENCE_COMPLETED, "false"); + req.getSession().setAttribute(REFRESH_PROGRESS_DATA, "false"); + req.getSession().setAttribute(IS_REUSABLE,"false"); + } + + /** + */ + public static void saveToken(HttpServletRequest req, + String tokenName, + String tokenValue) + { + if (req.getSession().getAttribute(tokenName) != null) + { + resetToken(req, tokenName); + } + req.getSession().setAttribute(tokenName, tokenValue); + log.debug("(Save Session Token) name : " + tokenName + " value : " + + tokenValue); + + } + + /** + */ + public static String retrieveToken(HttpServletRequest req, String tokenName) + { + return (String) req.getSession().getAttribute(tokenName); + } + + /** + */ + public static void resetToken(HttpServletRequest req, String tokenName) + { + req.getSession().removeAttribute(tokenName); + } + + /** + * @exception IllegalArgumentException - + * if not set + */ + public static void checkString(String paramName, String paramValue) throws IllegalArgumentException + { + if ((paramValue == null) || (paramValue.length() < 1)) + { + throw new IllegalArgumentException(paramName + " is required '" + + paramValue + "'"); + } + } + + /** + * @return integer value of paramValue + * @exception IllegalArgumentException - + * if not set or not integer + */ + public static int checkInteger(String paramName, String paramValue) throws IllegalArgumentException + { + try + { + checkString(paramName, paramValue); + return Integer.parseInt(paramValue.trim()); + + } + catch (NumberFormatException e) + { + throw new IllegalArgumentException(paramName + + " should be an integer '" + paramValue + "'"); + } + } + + /** + * @return long value of paramValue + * @exception IllegalArgumentException - + * if not set or not long + */ + public static long checkLong(String paramName, String paramValue) throws IllegalArgumentException + { + try + { + checkString(paramName, paramValue); + return Long.parseLong(paramValue.trim()); + + } + catch (NumberFormatException e) + { + throw new IllegalArgumentException(paramName + + " should be a long '" + paramValue + "'"); + } + } + + /** + * @return boolean value of paramValue + * @exception IllegalArgumentException - + * if not set or not boolean + */ + public static boolean checkBoolean(String paramName, String paramValue) throws IllegalArgumentException + { + + checkString(paramName, paramValue); + return Boolean.valueOf(paramValue.trim()).booleanValue(); + } + + /** + * @param req - + * @param paramName - + * @return parameter value + */ + public static int readIntParam(HttpServletRequest req, String paramName) + { + return checkInteger(paramName, req.getParameter(paramName)); + } + + /** + * The helper method to get integer parameter + * @param req + * @param paramName + * @return + */ + public static int readIntParamFromUserSession(HttpServletRequest req, + String paramName) + { + HttpSession session = req.getSession(); + if (session.getAttribute(paramName)!= null) + { + return checkInteger(paramName,String.valueOf(((Integer)session.getAttribute(paramName)).intValue())); + } + else + { + return -1; + } + + } + + /** + * @param req - + * @param paramName - + * @return parameter value + */ + public static long readLongParam(HttpServletRequest req, String paramName) + { + return checkLong(paramName, req.getParameter(paramName)); + } + + /** + * @param req - + * @param paramName - + * @return parameter value + */ + public static String readStrParam(HttpServletRequest req, String paramName) + { + return readStrParam(req, paramName, false); + } + + /** + * @param req - + * @param paramName - + * @param isOptional + * @return parameter value + */ + public static String readStrParam(HttpServletRequest req, String paramName, boolean isOptional) + { + if (!isOptional) + checkString(paramName, req.getParameter(paramName)); + return req.getParameter(paramName); + } + + + /** + * @param req - + * @param paramName - + * @return parameter value + * @exception IllegalArgumentException - + * if valid boolean parameter value is not found + */ + public static boolean readBooleanParam(HttpServletRequest req, + String paramName) throws IllegalArgumentException + { + return checkBoolean(paramName, req.getParameter(paramName)); + } + + /** + * @param req - + * @param paramName - + * @param defaultValue - + * if valid boolean parameter value is not found, return this + * value + * @return parameter value + */ + public static boolean readBooleanParam(HttpServletRequest req, + String paramName, + boolean defaultValue) + { + try + { + return checkBoolean(paramName, req.getParameter(paramName)); + } + catch (IllegalArgumentException e) + { + return defaultValue; + } + } + + /** + * TODO default proper exception at lams level to replace RuntimeException + * @param req - + * @return username from principal object + */ + public static String getUsername(HttpServletRequest req) throws RuntimeException + { + Principal prin = req.getUserPrincipal(); + if (prin == null) + throw new RuntimeException("Trying to get username but principal object missing. Request is " + + req.toString()); + + String username = prin.getName(); + if (username == null) + throw new RuntimeException("Name missing from principal object. Request is " + + req.toString() + + " Principal object is " + + prin.toString()); + + return username; + } + + /** + * Retrieve the tool access mode from http request + * @param request + * @param param_mode + * @return the ToolAccessMode object + */ + public static ToolAccessMode readToolAccessModeParam(HttpServletRequest request, String param_mode,boolean optional) + { + String mode = readStrParam(request, param_mode,optional); + if(mode.equals(ToolAccessMode.AUTHOR.toString())) + return ToolAccessMode.AUTHOR; + else if(mode.equals(ToolAccessMode.LEARNER.toString())) + return ToolAccessMode.LEARNER; + else if(mode.equals(ToolAccessMode.TEACHER.toString())) + return ToolAccessMode.TEACHER; + else + throw new IllegalArgumentException("["+mode+"] is not a legal mode" + + "in LAMS"); + + } + +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/util/XmlFileLoader.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/Attic/XmlFileLoader.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/util/XmlFileLoader.java 28 Jan 2005 04:20:46 -0000 1.1 @@ -0,0 +1,113 @@ +/* + * Created on 9/12/2004 + * + * Last modified on 9/12/2004 + */ +package org.lamsfoundation.lams.util; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.io.File; +import java.io.FileInputStream; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.w3c.dom.Document; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + + +/** + * TODO Add description here + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ + +public class XmlFileLoader { + + private static boolean validating = true; + + /** + * @return Returns the validating. + */ + public static boolean isValidating() { + return validating; + } + /** + * @param validating The validating to set. + */ + public static void setValidating(boolean validating) { + XmlFileLoader.validating = validating; + } + + /** Get the xml file from the URL and parse it into a Document object. + * + * @param url the URL from which the xml doc is to be obtained. + * @return Document + */ + public static Document getDocumentFromURL(URL url) + throws IOException,SAXException,SAXParseException,ParserConfigurationException { + + InputStream is = null; + is = url.openStream(); + return getDocument(is); + } + + /** Get the xml file from the File Path and parse it into a Document object. + * + * @param filePath the file path from which the xml doc is to be obtained. + * @return Document + */ + public static Document getDocumentFromFilePath(String filePath) + throws IOException,SAXException,SAXParseException,ParserConfigurationException { + + InputStream is = null; + is = new FileInputStream(new File(filePath)); + return getDocument(is); + } + + /** Parses the xml document in is to create a DOM Document. DTD validation + * is enabled if validating is true + * + * @param is the InputStream containing the xml descriptor to parse + * @return Document + */ + private static Document getDocument(InputStream is) + throws IOException,SAXException,SAXParseException,ParserConfigurationException { + + try{ + InputSource is2 = new InputSource(is); + return getDocument(is2); + } + finally{ + is.close(); + } + } + + /** Parses the xml document in is to create a DOM Document. DTD validation + * is enabled if validating is true. + * + * @param is the InputSource containing the xml descriptor to parse + * @return Document + */ + private static Document getDocument(InputSource is) + throws IOException,SAXException,SAXParseException,ParserConfigurationException { + + DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory + .newInstance(); + // Enable DTD validation based on our validating flag + docBuilderFactory.setValidating(validating); + DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); + return docBuilder.parse(is); + } + +} + Index: lams_common/src/java/org/lamsfoundation/lams/web/AttributeNames.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/web/Attic/AttributeNames.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/web/AttributeNames.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,24 @@ +/* + * Created on 2005-1-14 + * + * Last modified on 2005-1-14 + */ +package org.lamsfoundation.lams.web; + +/** + * TODO Add description here + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class AttributeNames { + + public static final String ADMIN_ORGANISATION = "organisation"; + public static final String ADMIN_PARENT_ACCESS = "parentAccess"; + public static final String ADMIN_USER = "user"; + public static final String ADMIN_ERR_MSG = "errormsg"; + +} Index: lams_common/src/java/org/lamsfoundation/lams/web/HomeAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/web/Attic/HomeAction.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/web/HomeAction.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,222 @@ +package org.lamsfoundation.lams.web; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.actions.DispatchAction; + +import org.springframework.web.context.support.WebApplicationContextUtils; +import org.springframework.web.context.WebApplicationContext; + +import org.lamsfoundation.lams.usermanagement.service.UserManagementService; +import org.lamsfoundation.lams.web.PasswordChangeActionForm; +import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.util.AdminPreparer; + +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; + + +/** + * this is an action where all lams client environments launch. + * initial configuration of the individual environment setting is done here. + * + * @struts:action path="/home" + * validate="false" + * parameter="method" + * @struts:action-forward name="admin" path=".admin" + * @struts:action-forward name="learner" path="/learner.jsp" + * @struts:action-forward name="author" path="/author.jsp" + * @struts:action-forward name="staff" path="/staff.jsp" + * @struts:action-forward name="error" path=".error" + * @struts:action-forward name="passwordChange" path=".passwordChange" + * + */ +public class HomeAction extends DispatchAction { + + private static Logger log = Logger.getLogger(HomeAction.class); + private static WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(HttpSessionManager.getInstance().getServletContext()); + private static UserManagementService service = (UserManagementService) ctx.getBean("userManagementServiceTarget"); + + + private boolean isUserInRole(String login,int orgId, String roleName) + { + if (service.getUserOrganisationRole(login, new Integer(orgId),roleName)==null) + return false; + return true; + } + + /** + * request for sysadmin environment + */ + public ActionForward admin(ActionMapping mapping, ActionForm form, + HttpServletRequest req, HttpServletResponse res) + throws IOException, ServletException { + + try { + log.debug("request admin"); + + String login = req.getRemoteUser(); + + int orgId = new Integer(req.getParameter("orgId")).intValue(); + + if ( isUserInRole(login,orgId,Role.ADMIN)) + { + log.debug("user is admin"); + Organisation org = service.getOrganisationById(new Integer(orgId)); + AdminPreparer.prepare(org,req,service); + return mapping.findForward("admin"); + } + else + { + log.error("User "+login+" tried to get admin screen but isn't admin in organisation: "+orgId); + return mapping.findForward("error"); + } + + } catch (Exception e) { + e.printStackTrace(); + return mapping.findForward("error"); + } + } + + /** + * request for learner environment + */ + public ActionForward learner(ActionMapping mapping, ActionForm form, + HttpServletRequest req, HttpServletResponse res) + throws IOException, ServletException { + + try { + log.debug("request learner"); + + String login = req.getRemoteUser(); + + int orgId = new Integer(req.getParameter("orgId")).intValue(); + + if ( isUserInRole(login,orgId,Role.LEARNER) ) + { + log.debug("user is learner"); + + String serverUrl = Configuration.get(ConfigurationKeys.SERVER_URL); + + req.setAttribute("serverUrl", serverUrl); + return mapping.findForward("learner"); + } + else + { + log.error("User "+login+" tried to get learner screen but isn't learner in organisation: "+orgId); + return mapping.findForward("error"); + } + + } catch (Exception e) { + e.printStackTrace(); + return mapping.findForward("error"); + } + } + + + /** + * request for author environment + */ + public ActionForward author(ActionMapping mapping, ActionForm form, + HttpServletRequest req, HttpServletResponse res) + throws IOException, ServletException { + + try { + log.debug("request author"); + + String login = req.getRemoteUser(); + + int orgId = new Integer(req.getParameter("orgId")).intValue(); + + if ( isUserInRole(login,orgId,Role.AUTHOR) ) + { + log.debug("user is author"); + + String serverUrl = Configuration.get(ConfigurationKeys.SERVER_URL); + + req.setAttribute("serverUrl", serverUrl); + return mapping.findForward("author"); + } + else + { + log.error("User "+login+" tried to get author screen but isn't author in organisation: "+orgId); + return mapping.findForward("error"); + } + + } catch (Exception e) { + e.printStackTrace(); + return mapping.findForward("error"); + } + } + + + /** + * request for staff environment + */ + public ActionForward staff(ActionMapping mapping, ActionForm form, + HttpServletRequest req, HttpServletResponse res) + throws IOException, ServletException { + + try { + log.debug("request staff"); + + String login = req.getRemoteUser(); + + int orgId = new Integer(req.getParameter("orgId")).intValue(); + + if (isUserInRole(login, orgId, Role.STAFF)) { + log.debug("user is staff"); + + String serverUrl = Configuration + .get(ConfigurationKeys.SERVER_URL); + + req.setAttribute("serverUrl", serverUrl); + return mapping.findForward("staff"); + } else { + log + .error("User " + + login + + " tried to get staff screen but isn't staff in organisation: " + + orgId); + return mapping.findForward("error"); + } + + } catch (Exception e) { + e.printStackTrace(); + return mapping.findForward("error"); + } + } + + /** + * Loads up the user password change form + * @return screen reference name - "passwordChange" + */ + public ActionForward passwordChange( + ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) + throws IOException, ServletException { + + String login = request.getRemoteUser(); + + PasswordChangeActionForm newForm = new PasswordChangeActionForm(); + newForm.setLogin(login); + + request.getSession(true).setAttribute( + PasswordChangeActionForm.formName, + newForm); + + return mapping.findForward("passwordChange"); + } + +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/web/HttpSessionManager.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/web/Attic/HttpSessionManager.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/web/HttpSessionManager.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,136 @@ +package org.lamsfoundation.lams.web; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Enumeration; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionEvent; + +import org.apache.log4j.Logger; + +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; + + +/** + * It is used to manage HttpSession according to lams configuration (in lams.xml file). + * There are 2 configuration items related to it. + * One is AllowMultipleLogin, the other is UserInactiveTimeout + *

+ * When running with the test harness, need to set a configuration parameter allowMultipleLogins=true + * This disables the invalidation of older + * duplicated sessions - so that the poll and application test threads will run together. + * It shouldn't be run with this set to true in production as not all the sessions are + * tracked properly - only one session is tracked for each user. + *

+ * Why isn't this class a servlet rather than a singleton? Because it doesn't directly + * serve data back to a webpage - its primary function is to return data to the controller. + * Yet it is in the "web" part of the system, so there + * is some argument for it being a servlet. An advantage of it being a servlet would be + * that we could probably make it directly a listener (rather than having a listener + * which calls this class), and we wouldn't need the test servlet ReportHttpSessionDataServlet + * to dump the current status to a webpage. + * + * @author Fei Yang + * + */ +public class HttpSessionManager +{ + private static Logger log = Logger.getLogger(HttpSessionManager.class); + + private static HttpSessionManager realMe = null; + + private static ServletContext context = null; //for UniversalLoginModule to use + + private Map HttpSessionsByLogin = null; // allows checking for two sessions + private int timeout;//in seconds + private boolean allowMultipleLogin; // must only be true for the test harness. + + private HttpSessionManager() + { + HttpSessionsByLogin = Collections.synchronizedMap(new HashMap()); + + timeout = Configuration.getAsInt(ConfigurationKeys.INACTIVE_TIME); + + allowMultipleLogin = Configuration.getAsBoolean(ConfigurationKeys.ALLOW_MULTIPLE_LOGIN); + } + + public static HttpSessionManager getInstance() + { + if (realMe == null) + realMe= new HttpSessionManager(); + + return realMe; + } + + /** + * Get the user http session. + */ + public HttpSession getHttpSessionByLogin(String login) + { + return (HttpSession)HttpSessionsByLogin.get(login); + } + + /** + * Update the user record + */ + public void updateHttpSessionByLogin(HttpSession session, String login) + { + if(!allowMultipleLogin) + { + if (login == null || session == null) + return; + HttpSession oldSession = (HttpSession)HttpSessionsByLogin.get(login); + if (oldSession != null) + { + if(oldSession.getId().equals(session.getId())) + return; + try + { + copySessionAttributes(oldSession,session); + oldSession.invalidate(); + }catch(IllegalStateException e) + { + //it's already invalidated + //do nothing + } + } + HttpSessionsByLogin.put(login,session); + } + } + + private void copySessionAttributes(HttpSession oldSession,HttpSession session) + { + Enumeration enu = oldSession.getAttributeNames(); + while(enu.hasMoreElements()) + { + String name = (String)enu.nextElement(); + session.setAttribute(name,oldSession.getAttribute(name)); + } + } + + public ServletContext getServletContext() + { + return context; + } + + /** + * Matches sessionCreated in SessionListener, which implements the + * HttpSessionListener interface. SessionListener passes the session event + * to here. Can't be accessed directly (ie defined in web.xml) in this class as + * this class is a singleton and the creation method is private. + */ + public void sessionCreated(HttpSessionEvent se) + { + if (se == null) + return; + HttpSession session= se.getSession(); + session.setMaxInactiveInterval(timeout); + context = session.getServletContext(); + } +} + + \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/web/PasswordChangeAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/web/Attic/PasswordChangeAction.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/web/PasswordChangeAction.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,112 @@ +package org.lamsfoundation.lams.web; + + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.lamsfoundation.lams.usermanagement.service.UserManagementService; + +import org.springframework.web.context.support.WebApplicationContextUtils; +import org.springframework.web.context.WebApplicationContext; + + +import org.apache.log4j.Logger; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.Action; + +/** + * @author Fei Yang + * + * @struts:action path="/passwordChanged" + * name="PasswordChangeActionForm" + * input=".passwordChange" + * validate="true" + * + * @struts:action-forward name="okay" path=".passwordChangeOk" + * @struts:action-forward name="cancelled" path="/index.jsp" + */ +public class PasswordChangeAction extends Action { + + private static Logger log = Logger.getLogger(PasswordChangeAction.class); + + /** + * @param mapping The ActionMapping used to select this instance + * @param actionForm The optional ActionForm bean for this request (if any) + * @param request The HTTP request we are processing + * @param response The HTTP response we are creating + * + */ + public ActionForward execute(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) + throws Exception + { + // -- isCancelled? + if (isCancelled(request)) { + request.getSession().removeAttribute(PasswordChangeActionForm.formName); + return mapping.findForward("cancelled"); + } + + + ActionErrors errors = new ActionErrors(); + + PasswordChangeActionForm passwordChangeForm = (PasswordChangeActionForm) form; + + if (errors.isEmpty()) + { + try { + + String loggedInUser = request.getRemoteUser(); + String login = passwordChangeForm.getLogin(); + String oldPassword = passwordChangeForm.getOldPassword(); + String password = passwordChangeForm.getPassword(); + + if ( loggedInUser == null || ! loggedInUser.equals(login) ) + { + errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.authorisation")); + } + else + { + + WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(request.getSession(true).getServletContext()); + UserManagementService service = (UserManagementService)ctx.getBean("userManagementServiceTarget"); + if(!service.getUserByLogin(login).getPassword().equals(oldPassword)) + { + errors.add("oldPassword", new ActionMessage("error.oldpassword.mismatch")); + } + else + { + service.updatePassword(login, password ); + } + } + + } catch (Exception e) { + log.error("Exception occured ",e); + errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(e.getMessage())); + } + + } // end if no errors + + // -- Report any errors + if (!errors.isEmpty()) { + addErrors(request, errors); + if (mapping.getInput()!=null) + { + passwordChangeForm.reset(mapping,request); + return (new ActionForward(mapping.getInput())); + } + // If no input page, use error forwarding + return (mapping.findForward("error")); + } + return mapping.findForward("okay"); + + } +} + + Index: lams_common/src/java/org/lamsfoundation/lams/web/PasswordChangeActionForm.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/web/Attic/PasswordChangeActionForm.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/web/PasswordChangeActionForm.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,145 @@ +package org.lamsfoundation.lams.web; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionMapping; + +/** + * @author fmalikoff + * @Modified by Fei Yang + * + * @struts:form name="PasswordChangeActionForm" + * include-pk="true" + * include-all="true" + */ +public class PasswordChangeActionForm extends ActionForm { + + public static final String formName = "PasswordChangeActionForm"; // must match name in @struts:action section above + + private static Logger log = Logger.getLogger(PasswordChangeActionForm.class); + + private String oldPassword; + + private String password; + + private String passwordConfirm; + + private String login; + + public PasswordChangeActionForm() { + } + + /** + * Returns the login. + * @return String + */ + public String getLogin() { + return login; + } + + /** + * Returns the password. + * @return String + */ + public String getPassword() { + return password; + } + + /** + * Returns the passwordConfirm. + * @return String + */ + public String getPasswordConfirm() { + return passwordConfirm; + } + + /** + * Sets the login. + * @param login The login to set + */ + public void setLogin(String login) { + this.login = StringUtils.trimToEmpty(login); + } + + /** + * Sets the password. + * @param password The password to set + */ + public void setPassword(String password) { + this.password = StringUtils.trimToEmpty(password); + } + + /** + * Sets the passwordConfirm. + * @param passwordConfirm The passwordConfirm to set + */ + public void setPasswordConfirm(String passwordConfirm) { + this.passwordConfirm = StringUtils.trimToEmpty(passwordConfirm); + } + + /** + * @return Returns the oldPassword. + */ + public String getOldPassword() { + return oldPassword; + } + + /** + * @param oldPassword The oldPassword to set. + */ + public void setOldPassword(String oldPassword) { + this.oldPassword = StringUtils.trimToEmpty(oldPassword); + } + + /** + * Reset all properties to their default values. + * + * @param mapping The mapping used to select this instance + * @param request The servlet request we are processing + */ + public void reset(ActionMapping mapping, HttpServletRequest request) { + setOldPassword(null); + setPassword(null); + setPasswordConfirm(null); + } + + /** + * Validate the properties that have been set from this HTTP request, + * and return an ActionErrors object that encapsulates any + * validation errors that have been found. If no errors are found, return + * null or an ActionErrors object with no + * recorded error messages. + *

+ * @param mapping The mapping used to select this instance + * @param request The servlet request we are processing + */ + public ActionErrors validate(ActionMapping mapping, + HttpServletRequest request) { + ActionErrors errors = super.validate(mapping, request); + + if (errors == null) + errors = new ActionErrors(); + + if (getPassword() == null || getPassword().length() == 0 + || !getPassword().equals(getPasswordConfirm())) { + errors.add("password", new ActionMessage("error.newpassword.mismatch")); + } + + if (errors.isEmpty()) + return null; + else { + // don't want to pass back what they had as the password + setOldPassword(null); + setPassword(null); + setPasswordConfirm(null); + return errors; + } + + } + +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/web/SessionListener.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/web/Attic/SessionListener.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/web/SessionListener.java 28 Jan 2005 04:20:45 -0000 1.1 @@ -0,0 +1,39 @@ +package org.lamsfoundation.lams.web; + +import javax.servlet.http.HttpSessionEvent; +import javax.servlet.http.HttpSessionListener; + +import org.apache.log4j.Logger; + + +/** + * Listens for the creation and destruction of http sessions, and reports back to + * the ClientSessionInfoManager. + * + * @web.listener + */ +/* Should come out in web.xml as: + * + * + * + * com.webmcq.ld.controller.web.SessionListener + * + * + */ +public class SessionListener implements HttpSessionListener +{ + private static Logger log = Logger.getLogger(SessionListener.class); + + /** HttpSessionListener interface */ + public void sessionCreated(HttpSessionEvent se) + { + HttpSessionManager.getInstance().sessionCreated(se); + } + + /** HttpSessionListener interface */ + public void sessionDestroyed(HttpSessionEvent se) + { + //nothing to do + } + +} Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/BaseTestCase.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/learningdesign/Attic/BaseTestCase.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/BaseTestCase.java 28 Jan 2005 04:21:00 -0000 1.1 @@ -0,0 +1,24 @@ +package org.lamsfoundation.lams.learningdesign; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import junit.framework.TestCase; +/* + * Created on Dec 4, 2004 + */ + +/** + * @author manpreet + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class BaseTestCase extends TestCase { + protected ApplicationContext context; + + public BaseTestCase(){ + String path ="/com/lamsinternational/lams/learningdesign/learningDesignApplicationContext.xml"; + context = new ClassPathXmlApplicationContext(path); + } +} Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/dbConnection.properties =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/learningdesign/Attic/dbConnection.properties,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/dbConnection.properties 28 Jan 2005 04:21:00 -0000 1.1 @@ -0,0 +1,19 @@ +# Properties file with JDBC-related settings. +# Applied by PropertyPlaceholderConfigurer from "learningDesignApplicationContext.xml". +# Targetted at system administrators, to avoid touching the context XML files. + +#jdbc configuration +jdbc.driverClassName=com.mysql.jdbc.Driver +jdbc.url=jdbc:mysql://localhost/lams11 +jdbc.username=root +jdbc.password=rootpwd + +#Hibernate configuration +hibernate.show_sql=false +hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect + +#Connection Pooling configuration +hibernate.c3p0.minPoolSize=5 +hibernate.c3p0.maxPoolSize=20 +hibernate.c3p0.timeout=1800 +hibernate.c3p0.max_statement=50 \ No newline at end of file Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/learningDesignApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/learningdesign/Attic/learningDesignApplicationContext.xml,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/learningDesignApplicationContext.xml 28 Jan 2005 04:21:00 -0000 1.1 @@ -0,0 +1,142 @@ + + + + + + + + + + + + + /com/lamsinternational/lams/learningdesign/dbConnection.properties + + + + + messages + + + + + + + + ${jdbc.driverClassName} + ${jdbc.url} + ${jdbc.username} + ${jdbc.password} + + + + + + + + + + + com/lamsinternational/lams/learningdesign/Activity.hbm.xml + com/lamsinternational/lams/learningdesign/ActivityType.hbm.xml + com/lamsinternational/lams/learningdesign/Group.hbm.xml + com/lamsinternational/lams/learningdesign/Grouping.hbm.xml + com/lamsinternational/lams/learningdesign/GroupingType.hbm.xml + com/lamsinternational/lams/learningdesign/GateActivityLevel.hbm.xml + com/lamsinternational/lams/learningdesign/LearningDesign.hbm.xml + com/lamsinternational/lams/learningdesign/LearningLibrary.hbm.xml + com/lamsinternational/lams/learningdesign/Transition.hbm.xml + + + + com/lamsinternational/lams/lesson/LearnerProgress.hbm.xml + com/lamsinternational/lams/lesson/Lesson.hbm.xml + com/lamsinternational/lams/lesson/LessonLearner.hbm.xml + com/lamsinternational/lams/lesson/LessonState.hbm.xml + com/lamsinternational/lams/lesson/ProgressCompleted.hbm.xml + com/lamsinternational/lams/lesson/ProgressCurrent.hbm.xml + com/lamsinternational/lams/lesson/UserGroup.hbm.xml + com/lamsinternational/lams/lesson/UserToolSession.hbm.xml + com/lamsinternational/lams/lesson/UserToolSessionState.hbm.xml + + + com/lamsinternational/lams/tool/Tool.hbm.xml + com/lamsinternational/lams/tool/ToolSession.hbm.xml + com/lamsinternational/lams/tool/ToolsessionState.hbm.xml + + + com/lamsinternational/lams/usermanagement/AuthenticationMethod.hbm.xml + com/lamsinternational/lams/usermanagement/AuthenticationMethodType.hbm.xml + com/lamsinternational/lams/usermanagement/Organisation.hbm.xml + com/lamsinternational/lams/usermanagement/OrganisationType.hbm.xml + com/lamsinternational/lams/usermanagement/Role.hbm.xml + com/lamsinternational/lams/usermanagement/User.hbm.xml + com/lamsinternational/lams/usermanagement/UserOrganisation.hbm.xml + com/lamsinternational/lams/usermanagement/UserOrganisationRole.hbm.xml + com/lamsinternational/lams/usermanagement/Workspace.hbm.xml + com/lamsinternational/lams/usermanagement/WorkspaceFolder.hbm.xml + + + + + + ${hibernate.dialect} + ${hibernate.show_sql} + ${hibernate.c3p0.minPoolSize} + ${hibernate.c3p0.maxPoolSize} + ${hibernate.c3p0.timeout} + ${hibernate.c3p0.max_statement} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED,readOnly + + + + + + + + + + + + + + + + + + + + + Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestActivityDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/Attic/TestActivityDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestActivityDAO.java 28 Jan 2005 04:20:59 -0000 1.1 @@ -0,0 +1,103 @@ +package org.lamsfoundation.lams.learningdesign.dao; + +import java.util.Date; + +import org.lamsfoundation.lams.learningdesign.dao.hibernate.ActivityDAO; +import org.lamsfoundation.lams.learningdesign.*; +import org.lamsfoundation.lams.learningdesign.BaseTestCase; +/* + * Created on Dec 3, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ + +/** + * @author MMINHAS + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class TestActivityDAO extends BaseTestCase { + + protected ActivityDAO activityDAO; + protected Activity activity; + + public void setUp() throws Exception { + super.setUp(); + activityDAO =(ActivityDAO) context.getBean("activityDAO"); + } + + /*protected void tearDown() throws Exception { + super.tearDown(); + } + + public void testGetActivityById() { + } + + public void testGetActivityByParentActivityId() { + } + + public void testGetAllActivities() { + } + + public void testGetActivitiesByLearningDesignId() { + }*/ + + /*public void testInsertActivity() { + OptionsActivity optActivity = new OptionsActivity(); + + optActivity.setDefineLater(new Boolean(false)); + + ActivityType activityType = new ActivityType(); + activityType.setLearningActivityTypeId(new Integer(8)); + optActivity.setActivityType(activityType); + + optActivity.setDescription("Optional Activity Description"); + optActivity.setTitle("Optional Activity Title"); + + LearningDesign ld = new LearningDesign(); + ld.setLearningDesignId(new Long(1)); + optActivity.setLearningDesign(ld); + + LearningLibrary lb = new LearningLibrary(); + lb.setLearningLibraryId(new Long(1)); + optActivity.setLearningLibrary(lb); + + optActivity.setCreateDateTime(new Date()); + + activityDAO.insertActivity(optActivity); + //activity.setOrderId(new Integer(2)); + //assertNotNull("Primary Key assigned",optActivity.getActivityId()); + }*/ + public void testInsertActivity() { + OptionsActivity optActivity = new OptionsActivity(); + + optActivity.setDefineLater(new Boolean(false)); + + optActivity.setDescription("Optional Activity Description"); + optActivity.setTitle("Optional Activity Title"); + + LearningDesign ld = new LearningDesign(); + ld.setLearningDesignId(new Long(1)); + optActivity.setLearningDesign(ld); + + LearningLibrary lb = new LearningLibrary(); + lb.setLearningLibraryId(new Long(1)); + optActivity.setLearningLibrary(lb); + + optActivity.setCreateDateTime(new Date()); + + activityDAO.insertActivity(optActivity); + //activity.setOrderId(new Integer(2)); + //assertNotNull("Primary Key assigned",optActivity.getActivityId()); + } + + /*public void testUpdateActivity() { + } + + public void testDeleteActivity() { + }*/ + +} + Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestGroupDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/Attic/TestGroupDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestGroupDAO.java 28 Jan 2005 04:20:59 -0000 1.1 @@ -0,0 +1,17 @@ +/* + * Created on Dec 6, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.dao; +import org.lamsfoundation.lams.learningdesign.BaseTestCase; +/** + * @author MMINHAS + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class TestGroupDAO extends BaseTestCase { + +} Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestGroupingDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/Attic/TestGroupingDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestGroupingDAO.java 28 Jan 2005 04:20:59 -0000 1.1 @@ -0,0 +1,17 @@ +/* + * Created on Dec 6, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.dao; +import org.lamsfoundation.lams.learningdesign.BaseTestCase; +/** + * @author MMINHAS + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class TestGroupingDAO extends BaseTestCase { + +} Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestLearningDesignDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/Attic/TestLearningDesignDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestLearningDesignDAO.java 28 Jan 2005 04:20:59 -0000 1.1 @@ -0,0 +1,78 @@ +/* + * Created on Dec 6, 2004 + */ +package org.lamsfoundation.lams.learningdesign.dao; + +import org.lamsfoundation.lams.learningdesign.BaseTestCase; +import org.lamsfoundation.lams.learningdesign.LearningDesign; +import org.lamsfoundation.lams.learningdesign.dao.hibernate.LearningDesignDAO; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.dao.hibernate.UserDAO; + +/** + * @author MMINHAS + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class TestLearningDesignDAO extends BaseTestCase { + + private LearningDesignDAO learningDesignDAO; + private UserDAO userDAO; + private User user; + private LearningDesign learningDesign; + + public void setUp() throws Exception{ + learningDesignDAO =(LearningDesignDAO)context.getBean("learningDesignDAO"); + } + /*public void testGetLearningDesignByUserId(){ + List list = learningDesignDAO.getLearningDesignByUserId(new Long(1)); + LearningDesign d = (LearningDesign) list.get(0); + System.out.println("Size: " + list.size()); + System.out.println("Title: " + d.getTitle()); + assertNotNull(list); + }*/ + /*public TestLearningDesignDAO(){ + learningDesignDAO =(LearningDesignDAO)context.getBean("learningDesignDAO"); + userDAO =(UserDAO)context.getBean("userDAO"); + initUserData(); + initLearningDesignData(); + + } + public void initUserData(){ + user = userDAO.getUserById(new Integer(1)); + } + public void initLearningDesignData(){ + learningDesign = new LearningDesign(); + learningDesign.setId(new Integer(20)); + learningDesign.setTitle("Title for 20"); + learningDesign.setDescription("Description for 20"); + learningDesign.setFirstActivityId(new Long(1)); + learningDesign.setMaxId(new Integer(4)); + learningDesign.setDateReadOnly(new Date()); + learningDesign.setReadAccess(new Long(1)); + learningDesign.setWriteAccess(new Long(1)); + learningDesign.setHelpText("Help"); + learningDesign.setOpenDateTime(new Date()); + learningDesign.setCloseDateTime(new Date()); + learningDesign.setValidDesign(new Boolean(true)); + learningDesign.setReadOnly(new Boolean(false)); + learningDesign.setLessonCopy(new Boolean(false)); + learningDesign.setCreateDateTime(new Date()); + learningDesign.setVersion("1.1"); + learningDesign.setLearningDesign(null); + learningDesign.setUser(user); + } + + public void testSaveLearningDesign(){ + learningDesignDAO.insert(learningDesign); + //assertNotNull(learningDesignDAO.getLearningDesignById(new Long(20))); + } + /*public void testDeleteLearningDesign(){ + learningDesignDAO.delete(learningDesignDAO.getLearningDesignById(new Long(20))); + } */ + public void testGetLearningDesignByID(){ + learningDesign = learningDesignDAO.getLearningDesignById(new Long(1)); + assertNotNull(learningDesign); + } +} Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestLearningLibraryDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/Attic/TestLearningLibraryDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestLearningLibraryDAO.java 28 Jan 2005 04:20:59 -0000 1.1 @@ -0,0 +1,43 @@ +/* + * Created on Dec 4, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.dao; +import org.lamsfoundation.lams.learningdesign.BaseTestCase; +import java.util.Date; +import java.util.List; + +import org.lamsfoundation.lams.learningdesign.LearningLibrary; +import org.lamsfoundation.lams.learningdesign.dao.hibernate.LearningLibraryDAO; + + +/** + * @author manpreet + */ +public class TestLearningLibraryDAO extends BaseTestCase { + + protected LearningLibraryDAO libraryDAO; + protected LearningLibrary library; + + public void setUp() throws Exception{ + libraryDAO =(LearningLibraryDAO) context.getBean("learningLibraryDAO"); + } + + /*public void testInsert(){ + library = new LearningLibrary(); + library.setDescription("Description for 2nd Trial"); + library.setTitle("Title for 2nd Trial"); + library.setCreateDateTime(new Date("20040111")); + + libraryDAO.insert(library); + //assertNotNull(libraryDAO.getLearningLibraryByTitle("Title for 1st Trial")); + }*/ + public void testGetAllLibraries(){ + //List list = libraryDAO.getAllLearningLibraries(); + LearningLibrary lib = libraryDAO.getLearningLibraryById(new Long(8)); + assertNotNull(lib.getTitle()); + System.out.println(lib.getTitle()); + } +} Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestTransitionDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/Attic/TestTransitionDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestTransitionDAO.java 28 Jan 2005 04:20:59 -0000 1.1 @@ -0,0 +1,17 @@ +/* + * Created on Dec 6, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.dao; +import org.lamsfoundation.lams.learningdesign.BaseTestCase; +/** + * @author MMINHAS + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class TestTransitionDAO extends BaseTestCase { + +} Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/service/TestAuthoringService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/learningdesign/service/Attic/TestAuthoringService.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/service/TestAuthoringService.java 28 Jan 2005 04:21:00 -0000 1.1 @@ -0,0 +1,53 @@ +/* + * Created on Dec 7, 2004 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.learningdesign.service; + +import org.lamsfoundation.lams.learningdesign.LearningDesign; +import org.lamsfoundation.lams.learningdesign.BaseTestCase; +import org.lamsfoundation.lams.learningdesign.dao.hibernate.LearningDesignDAO; +import org.lamsfoundation.lams.learningdesign.dao.hibernate.LearningLibraryDAO; + + +/** + * @author MMINHAS + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class TestAuthoringService extends BaseTestCase { + + private AuthoringService authService; + private LearningDesign learningDesign; + private LearningLibraryDAO learningLibraryDAO; + private LearningDesignDAO learningDesignDAO; + + protected void setUp()throws Exception{ + super.setUp(); + learningLibraryDAO =(LearningLibraryDAO) context.getBean("learningLibraryDAO"); + learningDesignDAO =(LearningDesignDAO)context.getBean("learningDesignDAO"); + + authService =(AuthoringService)context.getBean("authoringServiceTarget"); + authService.setLearningLibraryDAO(learningLibraryDAO); + authService.setLearningDesignDAO(learningDesignDAO); + } + + /*public void testGetLearningDesignByID(){ + + learningDesign = authService.getLearningDesign(new Long(20)); + assertNotNull(learningDesign.getTitle()); + }*/ + public void testRequestLearningLibraryWDDX(){ + //String wddxpacket = authService.requestLearningLibraryWDDX(); + String wddxpacket = authService.requestLearningDesignWDDX(new Long(1)); + System.out.println("WDDXPACKET:" + wddxpacket); + //ClientStatusMessage statusMessage = new ClientStatusMessage(ClientStatusMessage.ERROR, + // "Some Error Message", + //""); + //String str = authService.serializeStatusMessages(statusMessage); + //System.out.println(str); + } +} Index: lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAOTest.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/OrganisationDAOTest.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAOTest.java 28 Jan 2005 04:20:59 -0000 1.1 @@ -0,0 +1,55 @@ +/* + * Created on Nov 26, 2004 + * + * Last modified on Nov 26, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import java.util.Date; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.FileSystemXmlApplicationContext; + +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.Workspace; +import org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO; + +import junit.framework.TestCase; + +/** + * TODO Add description here + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class OrganisationDAOTest extends TestCase { + private Organisation organisation = null; + private String errorMessage = ""; + private OrganisationTypeDAO organisationDAO = null; + private ApplicationContext ctx; + + protected void setUp() throws Exception{ + ctx = new FileSystemXmlApplicationContext("applicationContext.xml"); + organisationDAO = (OrganisationTypeDAO)ctx.getBean("organisationDAO"); + } + + protected void tearDown() throws Exception{ + organisationDAO = null; + } + + public void testSaveOrganisation(){ + /* + IOrganisationTypeDAO organisationTypeDAO = (IOrganisationTypeDAO)ctx.getBean("organisationTypeDAO"); + organisation = new Organisation("Root","",null,new Date(), new Workspace(), organisationTypeDAO.getOrganisationTypeById(new Integer(1)),null,null); + organisationTypeDAO = null; + organisationDAO.saveOrganisation(organisation); + assertTrue(organisationDAO.getAllOrganisations().size()==1); + */ + } + + public void testGetOrganisationById(){ + } + +} Index: lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationTypeDAOTest.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/OrganisationTypeDAOTest.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationTypeDAOTest.java 28 Jan 2005 04:20:59 -0000 1.1 @@ -0,0 +1,64 @@ +/* + * Created on Nov 26, 2004 + * + * Last modified on Nov 26, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.FileSystemXmlApplicationContext; + +import org.lamsfoundation.lams.usermanagement.OrganisationType; + +import junit.framework.TestCase; + +/** + * TODO Add description here + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class OrganisationTypeDAOTest extends TestCase { + private OrganisationType organisationType = null; + private String errorMessage = ""; + private OrganisationTypeDAO organisationTypeDAO = null; + private ApplicationContext ctx; + + protected void setUp() throws Exception{ + ctx = new FileSystemXmlApplicationContext("applicationContext.xml"); + organisationTypeDAO = (OrganisationTypeDAO)ctx.getBean("organisationTypeDAO"); + } + + protected void tearDown() throws Exception{ + organisationTypeDAO = null; + } + + public void testSaveOrganisationType(){ + organisationType = new OrganisationType("TEST","for test purpose only", null); + organisationTypeDAO.saveOrganisationType(organisationType); + assertNotNull(organisationTypeDAO.getOrganisationTypeByName("TEST")); + } + + public void testGetOrganisationTypeById(){ + errorMessage = "The name of the organisationType gotten by Id 1 is not ROOT ORGANISATION"; + organisationType = organisationTypeDAO.getOrganisationTypeById(new Integer(1)); + assertEquals(errorMessage,"ROOT ORGANISATION",organisationType.getName()); + } + + public void testGetOrganisationTypeByName(){ + errorMessage = "The id of the organisationType gotten by name ROOT ORGANISATION is not 1"; + organisationType = organisationTypeDAO.getOrganisationTypeByName("ROOT ORGANISATION"); + assertEquals(errorMessage,new Integer(1),organisationType.getOrganisationTypeId()); + } + + public void testDeleteOrganisationType() + { + organisationType = organisationTypeDAO.getOrganisationTypeByName("TEST"); + organisationTypeDAO.deleteOrganisationType(organisationType); + assertNull(organisationTypeDAO.getOrganisationTypeByName("TEST")); + } + +} Index: lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAOTest.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/RoleDAOTest.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAOTest.java 28 Jan 2005 04:20:59 -0000 1.1 @@ -0,0 +1,55 @@ +/* + * Created on Nov 26, 2004 + * + * Last modified on Nov 26, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.FileSystemXmlApplicationContext; + +import org.lamsfoundation.lams.usermanagement.Role; + +import junit.framework.TestCase; + +/** + * TODO Add description here + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class RoleDAOTest extends TestCase { + + private Role role = null; + private String errorMessage = ""; + private RoleDAO roleDAO = null; + private ApplicationContext ctx; + + protected void setUp() throws Exception{ + ctx = new FileSystemXmlApplicationContext("applicationContext.xml"); + roleDAO = (RoleDAO)ctx.getBean("roleDAO"); + } + + protected void tearDown() throws Exception{ + roleDAO = null; + } + + public void testGetAllRoles(){ + assertTrue(roleDAO.getAllRoles().size()==5); + } + + public void testGetRoleById(){ + errorMessage = "The name of the role gotten by Id 1 is not SYSADMIN"; + role = roleDAO.getRoleById(new Integer(1)); + assertEquals(errorMessage,"SYSADMIN",role.getName()); + } + + public void testGetRoleByName(){ + errorMessage = "The Id of the role gotten by name 'SYSADMIN' is not 1"; + role = roleDAO.getRoleByName("SYSADMIN"); + assertEquals(errorMessage,new Integer(1),role.getRoleId()); + } +} Index: lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAOTest.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/UserDAOTest.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAOTest.java 28 Jan 2005 04:20:59 -0000 1.1 @@ -0,0 +1,41 @@ +/* + * Created on Nov 22, 2004 + * + * Last modified on Nov 22, 2004 + */ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import junit.framework.TestCase; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.FileSystemXmlApplicationContext; + +import org.lamsfoundation.lams.usermanagement.User; + +/** + * TODO Add description here + * + *

+ * View Source + *

+ * + * @author Fei Yang + */ +public class UserDAOTest extends TestCase { + private User user = null; + private UserDAO userDAO = null; + private ApplicationContext ctx; + + protected void setUp() throws Exception{ + ctx = new FileSystemXmlApplicationContext("applicationContext.xml"); + userDAO = (UserDAO)ctx.getBean("userDAO"); + } + + protected void tearDown() throws Exception{ + userDAO = null; + } + + public void testGetAllUsers(){ + assertTrue(userDAO.getAllUsers().size()==0); + } + +} Index: lams_common/test/java/org/lamsfoundation/lams/util/TestWebUtil.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/util/Attic/TestWebUtil.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/test/java/org/lamsfoundation/lams/util/TestWebUtil.java 28 Jan 2005 04:20:59 -0000 1.1 @@ -0,0 +1,94 @@ +/* ******************************************************************************** + * Copyright Notice + * ================= + * This file contains propriety information of LAMS Foundation. + * Copying or reproduction with prior written permission is prohibited. + * Copyright (c) 2005 + * Created on 2005-1-10 + ******************************************************************************** */ + +package org.lamsfoundation.lams.util; + +import javax.servlet.http.HttpSession; + +import org.lamsfoundation.lams.tool.ToolAccessMode; + +import servletunit.HttpServletRequestSimulator; +import servletunit.struts.MockStrutsTestCase; + + +/** + * + * @author Jacky Fang 2005-1-10 + * + */ +public class TestWebUtil extends MockStrutsTestCase +{ + HttpServletRequestSimulator req; + HttpSession session; + /* + * @see TestCase#setUp() + */ + protected void setUp() throws Exception + { + super.setUp(); + req = (HttpServletRequestSimulator)getRequest(); + session = getSession(); + } + + /* + * @see TestCase#tearDown() + */ + protected void tearDown() throws Exception + { + super.tearDown(); + } + + /** + * Constructor for TestWebUtil. + * @param name + */ + public TestWebUtil(String name) + { + super(name); + } + + public void testReadToolAccessModeParam() + { + addRequestParameter("mode", ToolAccessMode.LEARNER.toString()); + ToolAccessMode mode = WebUtil.readToolAccessModeParam(req,"mode",false); + assertTrue("Validating the reading of tool access mode",mode==ToolAccessMode.LEARNER); + } + + public void testReadIllegalToolAccessModeParam() + { + addRequestParameter("mode", "IllegalMode"); + try + { + ToolAccessMode mode = WebUtil.readToolAccessModeParam(req,"mode",false); + fail("IllegalArgumentException expected"); + } + catch (RuntimeException e) + { + if (e instanceof IllegalArgumentException) + assertTrue(true); + else + fail("IllegalArgumentException expected"); + } + } + public void testReadNullToolAccessModeParam() + { + try + { + ToolAccessMode mode = WebUtil.readToolAccessModeParam(req,"mode",false); + fail("IllegalArgumentException expected"); + } + catch (RuntimeException e) + { + if (e instanceof IllegalArgumentException) + assertTrue(true); + else + fail("IllegalArgumentException expected"); + } + } +} Index: lams_common/web/adminHeader.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/Attic/adminHeader.jsp,v diff -u -r1.2 -r1.3 --- lams_common/web/adminHeader.jsp 10 Jan 2005 02:34:31 -0000 1.2 +++ lams_common/web/adminHeader.jsp 28 Jan 2005 04:21:08 -0000 1.3 @@ -1,15 +1,15 @@ @@ -18,7 +18,7 @@ -->
- + spacer.gif
- + learner_header_logo.jpg - + learner_header_right.gif
- + spacer.gif
Index: lams_common/web/header.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/Attic/header.jsp,v diff -u -r1.3 -r1.4 --- lams_common/web/header.jsp 10 Jan 2005 02:38:56 -0000 1.3 +++ lams_common/web/header.jsp 28 Jan 2005 04:21:08 -0000 1.4 @@ -4,14 +4,14 @@ - + spacer.gif [HELP] - + spacer.gif Index: lams_common/web/index.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/Attic/index.jsp,v diff -u -r1.6 -r1.7 --- lams_common/web/index.jsp 12 Jan 2005 00:38:10 -0000 1.6 +++ lams_common/web/index.jsp 28 Jan 2005 04:21:08 -0000 1.7 @@ -1,6 +1,6 @@ <%@ taglib uri="/WEB-INF/struts/struts-tiles.tld" prefix="tiles" %> -<%@ page import="com.lamsinternational.lams.security.JspRedirectStrategy" %> -<%@ page import="com.lamsinternational.lams.web.HttpSessionManager" %> +<%@ page import="org.lamsfoundation.lams.security.JspRedirectStrategy" %> +<%@ page import="org.lamsfoundation.lams.web.HttpSessionManager" %> <%JspRedirectStrategy.welcomePageStatusUpdate(request,response);%> <%HttpSessionManager.getInstance().updateHttpSessionByLogin(request.getSession(),request.getRemoteUser()); %> Index: lams_common/web/indexContent.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/Attic/indexContent.jsp,v diff -u -r1.3 -r1.4 --- lams_common/web/indexContent.jsp 17 Jan 2005 05:15:47 -0000 1.3 +++ lams_common/web/indexContent.jsp 28 Jan 2005 04:21:08 -0000 1.4 @@ -2,8 +2,8 @@ <%@ page import="java.util.List" %> <%@ page import="org.springframework.web.context.support.WebApplicationContextUtils" %> <%@ page import="org.springframework.web.context.WebApplicationContext" %> -<%@ page import="com.lamsinternational.lams.usermanagement.service.UserManagementService" %> -<%@ page import="com.lamsinternational.lams.usermanagement.*" %> +<%@ page import="org.lamsfoundation.lams.usermanagement.service.UserManagementService" %> +<%@ page import="org.lamsfoundation.lams.usermanagement.*" %> <%@ taglib uri="/WEB-INF/jstl/c.tld" prefix="c" %> @@ -13,7 +13,7 @@
- + - +
spacer.gif
@@ -118,7 +118,7 @@
launch_page_graphic.jpg
Index: lams_common/web/login.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/Attic/login.jsp,v diff -u -r1.5 -r1.6 --- lams_common/web/login.jsp 10 Jan 2005 02:40:01 -0000 1.5 +++ lams_common/web/login.jsp 28 Jan 2005 04:21:08 -0000 1.6 @@ -1,6 +1,6 @@ <%@ taglib uri="/WEB-INF/struts/struts-tiles.tld" prefix="tiles" %> -<%@ page import="com.lamsinternational.lams.security.JspRedirectStrategy" %> +<%@ page import="org.lamsfoundation.lams.security.JspRedirectStrategy" %> <% if (JspRedirectStrategy.loginPageRedirected(request,response)) { Index: lams_common/web/loginContent.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/Attic/loginContent.jsp,v diff -u -r1.1 -r1.2 --- lams_common/web/loginContent.jsp 10 Jan 2005 02:40:58 -0000 1.1 +++ lams_common/web/loginContent.jsp 28 Jan 2005 04:21:08 -0000 1.2 @@ -2,12 +2,12 @@
- + spacer.gif
-

+

customer_logo.gif

  @@ -56,7 +56,7 @@
- + spacer.gif Index: lams_common/web/loginHeader.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/Attic/loginHeader.jsp,v diff -u -r1.1 -r1.2 --- lams_common/web/loginHeader.jsp 10 Jan 2005 02:41:56 -0000 1.1 +++ lams_common/web/loginHeader.jsp 28 Jan 2005 04:21:08 -0000 1.2 @@ -1,18 +1,18 @@
- + spacer.gif
- + learner_header_right.gif
Welcome - + spacer.gif
Index: lams_common/web/passwordChangeContent.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/Attic/passwordChangeContent.jsp,v diff -u -r1.1 -r1.2 --- lams_common/web/passwordChangeContent.jsp 12 Jan 2005 00:39:17 -0000 1.1 +++ lams_common/web/passwordChangeContent.jsp 28 Jan 2005 04:21:08 -0000 1.2 @@ -1,8 +1,8 @@ -<%@page import="com.lamsinternational.lams.web.PasswordChangeActionForm" %> +<%@page import="org.lamsfoundation.lams.web.PasswordChangeActionForm" %> <%@ taglib uri="/WEB-INF/struts/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts/struts-bean.tld" prefix="bean" %> - + - - - - - + + + + - + <% WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext()); UserManagementService service = (UserManagementService)ctx.getBean("userManagementServiceTarget"); Index: lams_common/web/admin/organisationContent.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/admin/Attic/organisationContent.jsp,v diff -u -r1.2 -r1.3 --- lams_common/web/admin/organisationContent.jsp 20 Jan 2005 06:08:12 -0000 1.2 +++ lams_common/web/admin/organisationContent.jsp 28 Jan 2005 04:21:09 -0000 1.3 @@ -1,5 +1,5 @@ <%@ page contentType="text/html; charset=iso-8859-1" language="java" %> -<%@ page import="com.lamsinternational.lams.usermanagement.web.OrganisationActionForm" %> +<%@ page import="org.lamsfoundation.lams.usermanagement.web.OrganisationActionForm" %> <%@ taglib uri="/WEB-INF/jstl/c.tld" prefix="c" %> <%@ taglib uri="/WEB-INF/struts/struts-html.tld" prefix="html" %> Index: lams_common/web/admin/userContent.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/admin/Attic/userContent.jsp,v diff -u -r1.2 -r1.3 --- lams_common/web/admin/userContent.jsp 24 Jan 2005 05:08:18 -0000 1.2 +++ lams_common/web/admin/userContent.jsp 28 Jan 2005 04:21:08 -0000 1.3 @@ -1,14 +1,14 @@ <%@ page contentType="text/html; charset=iso-8859-1" language="java" %> -<%@ page import="com.lamsinternational.lams.usermanagement.UserOrganisation" %> -<%@ page import="com.lamsinternational.lams.usermanagement.Organisation" %> -<%@ page import="com.lamsinternational.lams.usermanagement.Role" %> -<%@ page import="com.lamsinternational.lams.usermanagement.User" %> +<%@ page import="org.lamsfoundation.lams.usermanagement.UserOrganisation" %> +<%@ page import="org.lamsfoundation.lams.usermanagement.Organisation" %> +<%@ page import="org.lamsfoundation.lams.usermanagement.Role" %> +<%@ page import="org.lamsfoundation.lams.usermanagement.User" %> <%@ taglib uri="/WEB-INF/jstl/c.tld" prefix="c" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -'" method="post"> +
Index: lams_common/web/WEB-INF/applicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/WEB-INF/Attic/applicationContext.xml,v diff -u -r1.14 -r1.15 --- lams_common/web/WEB-INF/applicationContext.xml 21 Jan 2005 04:22:56 -0000 1.14 +++ lams_common/web/WEB-INF/applicationContext.xml 28 Jan 2005 04:21:09 -0000 1.15 @@ -39,35 +39,41 @@ - com/lamsinternational/lams/usermanagement/AuthenticationMethod.hbm.xml - com/lamsinternational/lams/usermanagement/AuthenticationMethodType.hbm.xml - com/lamsinternational/lams/usermanagement/Organisation.hbm.xml - com/lamsinternational/lams/usermanagement/OrganisationType.hbm.xml - com/lamsinternational/lams/usermanagement/Role.hbm.xml - com/lamsinternational/lams/usermanagement/User.hbm.xml - com/lamsinternational/lams/usermanagement/UserOrganisation.hbm.xml - com/lamsinternational/lams/usermanagement/UserOrganisationRole.hbm.xml - com/lamsinternational/lams/usermanagement/Workspace.hbm.xml - com/lamsinternational/lams/usermanagement/WorkspaceFolder.hbm.xml + org/lamsfoundation/lams/usermanagement/AuthenticationMethod.hbm.xml + org/lamsfoundation/lams/usermanagement/AuthenticationMethodType.hbm.xml + org/lamsfoundation/lams/usermanagement/Organisation.hbm.xml + org/lamsfoundation/lams/usermanagement/OrganisationType.hbm.xml + org/lamsfoundation/lams/usermanagement/Role.hbm.xml + org/lamsfoundation/lams/usermanagement/User.hbm.xml + org/lamsfoundation/lams/usermanagement/UserOrganisation.hbm.xml + org/lamsfoundation/lams/usermanagement/UserOrganisationRole.hbm.xml + org/lamsfoundation/lams/usermanagement/Workspace.hbm.xml + org/lamsfoundation/lams/usermanagement/WorkspaceFolder.hbm.xml - com/lamsinternational/lams/learningdesign/Activity.hbm.xml - com/lamsinternational/lams/learningdesign/Group.hbm.xml - com/lamsinternational/lams/learningdesign/Grouping.hbm.xml - com/lamsinternational/lams/learningdesign/LearningDesign.hbm.xml - com/lamsinternational/lams/learningdesign/LearningLibrary.hbm.xml - com/lamsinternational/lams/learningdesign/Transition.hbm.xml + org/lamsfoundation/lams/learningdesign/Activity.hbm.xml + org/lamsfoundation/lams/learningdesign/Group.hbm.xml + org/lamsfoundation/lams/learningdesign/Grouping.hbm.xml + org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml + org/lamsfoundation/lams/learningdesign/LearningLibrary.hbm.xml + org/lamsfoundation/lams/learningdesign/Transition.hbm.xml - com/lamsinternational/lams/lesson/LearnerProgress.hbm.xml - com/lamsinternational/lams/lesson/Lesson.hbm.xml - com/lamsinternational/lams/lesson/LessonClass.hbm.xml + org/lamsfoundation/lams/lesson/LearnerProgress.hbm.xml + org/lamsfoundation/lams/lesson/Lesson.hbm.xml + org/lamsfoundation/lams/lesson/LessonState.hbm.xml + org/lamsfoundation/lams/lesson/ProgressCompleted.hbm.xml + org/lamsfoundation/lams/lesson/ProgressCurrent.hbm.xml + org/lamsfoundation/lams/lesson/UserToolSession.hbm.xml + org/lamsfoundation/lams/lesson/UserGroup.hbm.xml + org/lamsfoundation/lams/lesson/UserToolSessionState.hbm.xml - com/lamsinternational/lams/tool/Tool.hbm.xml - com/lamsinternational/lams/tool/ToolSession.hbm.xml - com/lamsinternational/lams/tool/ToolSessionState.hbm.xml + org/lamsfoundation/lams/tool/Tool.hbm.xml + org/lamsfoundation/lams/tool/ToolContent.hbm.xml + org/lamsfoundation/lams/tool/ToolSession.hbm.xml + org/lamsfoundation/lams/tool/ToolSessionState.hbm.xml @@ -94,7 +100,7 @@ - @@ -122,31 +128,31 @@ - + - + - + - + - + - + - + Index: lams_common/web/WEB-INF/log4j.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/WEB-INF/Attic/log4j.xml,v diff -u -r1.1 -r1.2 --- lams_common/web/WEB-INF/log4j.xml 9 Dec 2004 00:58:30 -0000 1.1 +++ lams_common/web/WEB-INF/log4j.xml 28 Jan 2005 04:21:09 -0000 1.2 @@ -145,7 +145,7 @@ - + Index: lams_common/web/WEB-INF/web.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/WEB-INF/Attic/web.xml,v diff -u -r1.7 -r1.8 --- lams_common/web/WEB-INF/web.xml 10 Jan 2005 02:53:21 -0000 1.7 +++ lams_common/web/WEB-INF/web.xml 28 Jan 2005 04:21:09 -0000 1.8 @@ -36,7 +36,7 @@ - com.lamsinternational.lams.web.SessionListener + org.lamsfoundation.lams.web.SessionListener http://java.sun.com/jstl/core @@ -174,7 +214,7 @@ http://java.sun.com/jstl/xml_rt /WEB-INF/jstl/x-rt.tld - + Index: lams_common/web/WEB-INF/struts/struts-bean.tld =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/WEB-INF/struts/Attic/struts-bean.tld,v diff -u -r1.1 -r1.2 --- lams_common/web/WEB-INF/struts/struts-bean.tld 7 Dec 2004 07:18:33 -0000 1.1 +++ lams_common/web/WEB-INF/struts/struts-bean.tld 28 Jan 2005 04:21:08 -0000 1.2 @@ -8,10 +8,10 @@ -1.0 +1.2 1.1 bean -http://jakarta.apache.org/struts/tags-bean-1.0.1 +http://struts.apache.org/tags-bean cookie org.apache.struts.taglib.bean.CookieTag @@ -20,7 +20,7 @@ id true -true +false multiple @@ -42,11 +42,11 @@ define org.apache.struts.taglib.bean.DefineTag org.apache.struts.taglib.bean.DefineTei -empty +JSP id true -true +false name @@ -87,7 +87,7 @@ id true -true +false multiple @@ -128,7 +128,7 @@ id true -true +false name @@ -182,14 +182,29 @@ key -true +false true locale false true + +name +false +true + + +property +false +true + + +scope +false +true + page @@ -199,7 +214,7 @@ id true -true +false property @@ -215,7 +230,7 @@ id true -true +false multiple @@ -241,7 +256,7 @@ id true -true +false input @@ -267,7 +282,7 @@ id true -true +false name @@ -293,7 +308,7 @@ id true -true +false formBean @@ -316,16 +331,36 @@ org.apache.struts.taglib.bean.WriteTag empty +bundle +false +true + + filter false true +format +false +true + + +formatKey +false +true + + ignore false true +locale +false +true + + name true true Index: lams_common/web/WEB-INF/struts/struts-config.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/WEB-INF/struts/Attic/struts-config.xml,v diff -u -r1.8 -r1.9 --- lams_common/web/WEB-INF/struts/struts-config.xml 24 Jan 2005 05:10:50 -0000 1.8 +++ lams_common/web/WEB-INF/struts/struts-config.xml 28 Jan 2005 04:21:08 -0000 1.9 @@ -14,19 +14,19 @@ + type="org.lamsfoundation.lams.web.PasswordChangeActionForm" /> + type="org.lamsfoundation.lams.usermanagement.web.OrganisationActionForm" /> + type="org.lamsfoundation.lams.usermanagement.web.UserActionForm" /> + type="org.lamsfoundation.lams.usermanagement.web.UsersAddActionForm" /> + type="org.lamsfoundation.lams.usermanagement.web.UsersRemoveActionForm" /> @@ -48,7 +48,7 @@ @@ -68,7 +68,7 @@ @@ -82,13 +82,16 @@ + + - - - + Fisheye: Tag 1.2 refers to a dead (removed) revision in file `lams_common/web/WEB-INF/struts/struts-form.tld'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/web/WEB-INF/struts/struts-html.tld =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/WEB-INF/struts/Attic/struts-html.tld,v diff -u -r1.1 -r1.2 --- lams_common/web/WEB-INF/struts/struts-html.tld 7 Dec 2004 07:18:33 -0000 1.1 +++ lams_common/web/WEB-INF/struts/struts-html.tld 28 Jan 2005 04:21:08 -0000 1.2 @@ -8,10 +8,10 @@ -1.0 +1.2 1.1 html -http://jakarta.apache.org/struts/tags-html-1.0.1 +http://struts.apache.org/tags-html base org.apache.struts.taglib.html.BaseTag @@ -21,6 +21,11 @@ false true + +server +false +true + button @@ -31,11 +36,26 @@ true +alt +false +true + + +altKey +false +true + + disabled false true +indexed +false +true + + onblur false true @@ -126,6 +146,16 @@ true +title +false +true + + +titleKey +false +true + + value false true @@ -140,6 +170,16 @@ true +alt +false +true + + +altKey +false +true + + disabled false true @@ -235,6 +275,16 @@ true +title +false +true + + +titleKey +false +true + + value false true @@ -249,11 +299,26 @@ true +alt +false +true + + +altKey +false +true + + disabled false true +indexed +false +true + + name false true @@ -349,6 +414,16 @@ true +title +false +true + + +titleKey +false +true + + value false true @@ -393,11 +468,26 @@ true +alt +false +true + + +altKey +false +true + + disabled false true +indexed +false +true + + maxlength false true @@ -503,6 +593,16 @@ true +title +false +true + + +titleKey +false +true + + value false true @@ -518,6 +618,11 @@ true +acceptCharset +false +true + + enctype false true @@ -528,12 +633,12 @@ true -method +focusIndex false true -name +method false true @@ -548,7 +653,7 @@ true -scope +scriptLanguage false true @@ -572,36 +677,291 @@ false true + + +frame +org.apache.struts.taglib.html.FrameTag -type +action false true + +module +false +true + + +anchor +false +true + + +forward +false +true + + +frameborder +false +true + + +frameName +false +true + + +href +false +true + + +longdesc +false +true + + +marginheight +false +true + + +marginwidth +false +true + + +name +false +true + + +noresize +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +scrolling +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + hidden org.apache.struts.taglib.html.HiddenTag +empty +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + name false true +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + property true true +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + value false true + +write +false +true + html org.apache.struts.taglib.html.HtmlTag JSP +lang +false +true + + locale false true @@ -651,6 +1011,11 @@ true +indexed +false +true + + locale false true @@ -756,11 +1121,26 @@ true +styleId +false +true + + tabindex false true +title +false +true + + +titleKey +false +true + + value false true @@ -771,11 +1151,6 @@ org.apache.struts.taglib.html.ImgTag empty -accesskey -false -true - - align false true @@ -801,6 +1176,11 @@ true +contextRelative +false +true + + height false true @@ -836,6 +1216,16 @@ true +onclick +false +true + + +ondblclick +false +true + + onkeydown false true @@ -851,6 +1241,31 @@ true +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + paramId false true @@ -866,6 +1281,16 @@ true +action +false +true + + +module +false +true + + paramName false true @@ -916,6 +1341,21 @@ true +title +false +true + + +titleKey +false +true + + +useLocalEncoding +false +true + + usemap false true @@ -932,6 +1372,56 @@ +javascript +org.apache.struts.taglib.html.JavascriptValidatorTag +empty + +cdata +false +true + + +dynamicJavascript +false +false + + +formName +false +true + + +method +false +true + + +page +false +true + + +scriptLanguage +false +true + + +src +false +true + + +staticJavascript +false +false + + +htmlComment +false +true + + + link org.apache.struts.taglib.html.LinkTag @@ -940,6 +1430,16 @@ true +action +false +true + + +module +false +true + + anchor false true @@ -955,6 +1455,16 @@ true +indexed +false +true + + +indexId +false +true + + linkName false true @@ -1090,12 +1600,68 @@ true +titleKey +false +true + + transaction false true + +useLocalEncoding +false +true + +messages +org.apache.struts.taglib.html.MessagesTag +org.apache.struts.taglib.html.MessagesTei +JSP + +id +true +false + + +bundle +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +header +false +true + + +footer +false +true + + +message +false +true + + + multibox org.apache.struts.taglib.html.MultiboxTag @@ -1104,6 +1670,16 @@ true +alt +false +true + + +altKey +false +true + + disabled false true @@ -1204,6 +1780,16 @@ true +title +false +true + + +titleKey +false +true + + value false true @@ -1238,6 +1824,11 @@ true +styleId +false +true + + styleClass false true @@ -1258,6 +1849,11 @@ true +filter +false +true + + labelName false true @@ -1289,6 +1885,46 @@ +optionsCollection +org.apache.struts.taglib.html.OptionsCollectionTag +empty + +filter +false +true + + +label +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +value +false +true + + + password org.apache.struts.taglib.html.PasswordTag @@ -1297,11 +1933,26 @@ true +alt +false +true + + +altKey +false +true + + disabled false true +indexed +false +true + + maxlength false true @@ -1417,6 +2068,16 @@ true +title +false +true + + +titleKey +false +true + + value false true @@ -1431,11 +2092,26 @@ true +alt +false +true + + +altKey +false +true + + disabled false true +indexed +false +true + + name false true @@ -1491,6 +2167,26 @@ true +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + style false true @@ -1511,10 +2207,25 @@ true +title +false +true + + +titleKey +false +true + + value true true + +idName +false +true + reset @@ -1525,6 +2236,16 @@ true +alt +false +true + + +altKey +false +true + + disabled false true @@ -1595,6 +2316,11 @@ true +property +false +true + + style false true @@ -1615,6 +2341,16 @@ true +title +false +true + + +titleKey +false +true + + value false true @@ -1625,6 +2361,16 @@ org.apache.struts.taglib.html.RewriteTag empty +action +false +true + + +module +false +true + + anchor false true @@ -1684,22 +2430,37 @@ false true + +useLocalEncoding +false +true + select org.apache.struts.taglib.html.SelectTag JSP -accesskey +alt false true +altKey +false +true + + disabled false true +indexed +false +true + + multiple false true @@ -1805,6 +2566,16 @@ true +title +false +true + + +titleKey +false +true + + value false true @@ -1819,11 +2590,26 @@ true +alt +false +true + + +altKey +false +true + + disabled false true +indexed +false +true + + onblur false true @@ -1914,6 +2700,16 @@ true +title +false +true + + +titleKey +false +true + + value false true @@ -1928,11 +2724,26 @@ true +alt +false +true + + +altKey +false +true + + disabled false true +indexed +false +true + + maxlength false true @@ -2043,6 +2854,16 @@ true +title +false +true + + +titleKey +false +true + + value false true @@ -2057,6 +2878,16 @@ true +alt +false +true + + +altKey +false +true + + cols false true @@ -2067,6 +2898,11 @@ true +indexed +false +true + + name false true @@ -2172,10 +3008,25 @@ true +title +false +true + + +titleKey +false +true + + value false true + +xhtml +org.apache.struts.taglib.html.XhtmlTag +empty + Index: lams_common/web/WEB-INF/struts/struts-logic.tld =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/WEB-INF/struts/Attic/struts-logic.tld,v diff -u -r1.1 -r1.2 --- lams_common/web/WEB-INF/struts/struts-logic.tld 7 Dec 2004 07:18:33 -0000 1.1 +++ lams_common/web/WEB-INF/struts/struts-logic.tld 28 Jan 2005 04:21:08 -0000 1.2 @@ -7,11 +7,31 @@ -1.0 +1.2 1.1 logic -http://jakarta.apache.org/struts/tags-logic-1.0.1 +http://struts.apache.org/tags-logic +empty +org.apache.struts.taglib.logic.EmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + equal org.apache.struts.taglib.logic.EqualTag JSP @@ -154,12 +174,12 @@ id true -true +false indexId false -true +false length @@ -318,6 +338,66 @@ +messagesNotPresent +org.apache.struts.taglib.logic.MessagesNotPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +messagesPresent +org.apache.struts.taglib.logic.MessagesPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +notEmpty +org.apache.struts.taglib.logic.NotEmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + notEqual org.apache.struts.taglib.logic.NotEqualTag JSP @@ -496,6 +576,11 @@ redirect org.apache.struts.taglib.logic.RedirectTag +action +false +true + + anchor false true @@ -555,6 +640,11 @@ false true + +useLocalEncoding +false +true + Index: lams_common/web/WEB-INF/struts/struts-nested.tld =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/WEB-INF/struts/Attic/struts-nested.tld,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/web/WEB-INF/struts/struts-nested.tld 28 Jan 2005 04:21:08 -0000 1.1 @@ -0,0 +1,2886 @@ + + + + + + + + + +1.2 +1.1 +nested +http://struts.apache.org/tags-nested + +nest +org.apache.struts.taglib.nested.NestedPropertyTag +JSP + +property +false +true + + + +writeNesting +org.apache.struts.taglib.nested.NestedWriteNestingTag +org.apache.struts.taglib.nested.NestedWriteNestingTei +JSP + +property +false +true + + +id +false +true + + +filter +false +true + + + +root +org.apache.struts.taglib.nested.NestedRootTag +JSP + +name +false +true + + + +define +org.apache.struts.taglib.nested.bean.NestedDefineTag +org.apache.struts.taglib.nested.bean.NestedDefineTei +empty + +id +true +true + + +name +false +true + + +property +false +true + + +scope +false +true + + +toScope +false +true + + +type +false +true + + +value +false +true + + + +message +org.apache.struts.taglib.nested.bean.NestedMessageTag +empty + +arg0 +false +true + + +arg1 +false +true + + +arg2 +false +true + + +arg3 +false +true + + +arg4 +false +true + + +bundle +false +true + + +key +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +size +org.apache.struts.taglib.nested.bean.NestedSizeTag +org.apache.struts.taglib.bean.SizeTei +empty + +collection +false +true + + +id +true +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +write +org.apache.struts.taglib.nested.bean.NestedWriteTag +empty + +bundle +false +true + + +filter +false +true + + +format +false +true + + +formatKey +false +true + + +ignore +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +checkbox +org.apache.struts.taglib.nested.html.NestedCheckboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +errors +org.apache.struts.taglib.nested.html.NestedErrorsTag +empty + +bundle +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + + +file +org.apache.struts.taglib.nested.html.NestedFileTag + +accesskey +false +true + + +accept +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +form +org.apache.struts.taglib.nested.html.NestedFormTag +JSP + +action +true +true + + +enctype +false +true + + +focus +false +true + + +method +false +true + + +onreset +false +true + + +onsubmit +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +target +false +true + + + +hidden +org.apache.struts.taglib.nested.html.NestedHiddenTag + +alt +false +true + + +altKey +false +true + + +indexed +false +true + + +name +false +true + + +property +true +true + + +title +false +true + + +titleKey +false +true + + +styleClass +false +true + + +styleId +false +true + + +value +false +true + + +write +false +true + + + +image +org.apache.struts.taglib.nested.html.NestedImageTag + +accesskey +false +true + + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +locale +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +pageKey +false +true + + +property +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +img +org.apache.struts.taglib.nested.html.NestedImgTag +empty + +accesskey +false +true + + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +height +false +true + + +hspace +false +true + + +imageName +false +true + + +ismap +false +true + + +locale +false +true + + +lowsrc +false +true + + +name +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +paramId +false +true + + +page +false +true + + +pageKey +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +usemap +false +true + + +vspace +false +true + + +width +false +true + + + +link +org.apache.struts.taglib.nested.html.NestedLinkTag + +accesskey +false +true + + +action +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +indexed +false +true + + +indexId +false +true + + +linkName +false +true + + +name +false +true + + +onblur +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +target +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + + +messages +org.apache.struts.taglib.nested.html.NestedMessagesTag +org.apache.struts.taglib.html.MessagesTei +JSP + +id +true +true + + +bundle +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +header +false +true + + +footer +false +true + + +message +false +true + + + +multibox +org.apache.struts.taglib.nested.html.NestedMultiboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +options +org.apache.struts.taglib.nested.html.NestedOptionsTag +empty + +collection +false +true + + +filter +false +true + + +labelName +false +true + + +labelProperty +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + + +optionsCollection +org.apache.struts.taglib.nested.html.NestedOptionsCollectionTag +empty + +filter +false +true + + +label +false +true + + +name +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +value +false +true + + + +password +org.apache.struts.taglib.nested.html.NestedPasswordTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +redisplay +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +size +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +radio +org.apache.struts.taglib.nested.html.NestedRadioTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +property +true +true + + +onmousedown +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +true +true + + + +select +org.apache.struts.taglib.nested.html.NestedSelectTag +JSP + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +multiple +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +size +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +submit +org.apache.struts.taglib.nested.html.NestedSubmitTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +text +org.apache.struts.taglib.nested.html.NestedTextTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +disabled +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +textarea +org.apache.struts.taglib.nested.html.NestedTextareaTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +cols +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +rows +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +empty +org.apache.struts.taglib.nested.logic.NestedEmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +equal +org.apache.struts.taglib.nested.logic.NestedEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +greaterEqual +org.apache.struts.taglib.nested.logic.NestedGreaterEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +greaterThan +org.apache.struts.taglib.nested.logic.NestedGreaterThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +iterate +org.apache.struts.taglib.nested.logic.NestedIterateTag +org.apache.struts.taglib.nested.logic.NestedIterateTei +JSP + +collection +false +true + + +id +false +true + + +indexId +false +true + + +length +false +true + + +name +false +true + + +offset +false +true + + +property +false +true + + +scope +false +true + + +type +false +true + + + +lessEqual +org.apache.struts.taglib.nested.logic.NestedLessEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +lessThan +org.apache.struts.taglib.nested.logic.NestedLessThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +match +org.apache.struts.taglib.nested.logic.NestedMatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +messagesNotPresent +org.apache.struts.taglib.nested.logic.NestedMessagesNotPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +messagesPresent +org.apache.struts.taglib.nested.logic.NestedMessagesPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +notEmpty +org.apache.struts.taglib.nested.logic.NestedNotEmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +notEqual +org.apache.struts.taglib.nested.logic.NestedNotEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notMatch +org.apache.struts.taglib.nested.logic.NestedNotMatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notPresent +org.apache.struts.taglib.nested.logic.NestedNotPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +present +org.apache.struts.taglib.nested.logic.NestedPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + + + + Fisheye: Tag 1.2 refers to a dead (removed) revision in file `lams_common/web/WEB-INF/struts/struts-template.tld'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/web/WEB-INF/struts/struts-tiles-el.tld =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/WEB-INF/struts/Attic/struts-tiles-el.tld,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/web/WEB-INF/struts/struts-tiles-el.tld 28 Jan 2005 04:21:08 -0000 1.1 @@ -0,0 +1,343 @@ + + + + + + + + + + +1.2 +1.1 +tiles +http://struts.apache.org/tags-tiles-el + +insert +org.apache.strutsel.taglib.tiles.ELInsertTag +JSP + +template +false +true + + +component +false +true + + +page +false +true + + +definition +false +true + + +attribute +false +false + + +name +false +true + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +flush +false +false + + +ignore +false +true + + +role +false +true + + +controllerUrl +false +true + + +controllerClass +false +true + + + +definition +org.apache.strutsel.taglib.tiles.ELDefinitionTag +JSP + +id +true +false + + +scope +false +false + + +template +false +true + + +page +false +true + + +role +false +true + + +extends +false +true + + + +put +org.apache.strutsel.taglib.tiles.ELPutTag +JSP + +name +false +false + + +value +false +true + + +content +false +true + + +direct +false +false + + +type +false +false + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +role +false +true + + + +putList +org.apache.strutsel.taglib.tiles.ELPutListTag +JSP + +name +true +false + + + +add +org.apache.strutsel.taglib.tiles.ELAddTag +JSP + +value +false +false + + +content +false +true + + +direct +false +false + + +type +false +false + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +role +false +true + + + +get +org.apache.strutsel.taglib.tiles.ELGetTag +empty + +name +true +true + + +ignore +false +true + + +flush +false +false + + +role +false +true + + + +getAsString +org.apache.strutsel.taglib.tiles.ELGetAttributeTag +empty + +name +true +true + + +ignore +false +true + + +role +false +true + + + +useAttribute +org.apache.strutsel.taglib.tiles.ELUseAttributeTag +empty + +id +false +false + + +classname +false +false + + +scope +false +false + + +name +true +true + + +ignore +false +true + + + +importAttribute +org.apache.strutsel.taglib.tiles.ELImportAttributeTag +empty + +name +false +true + + +scope +false +false + + +ignore +false +true + + + +initComponentDefinitions +org.apache.strutsel.taglib.tiles.ELInitDefinitionsTag +empty + +file +true +false + + +classname +false +false + + + + + + Fisheye: Tag 1.2 refers to a dead (removed) revision in file `lams_common/web/WEB-INF/struts/struts.tld'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/web/WEB-INF/tiles/tiles-defs.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/WEB-INF/tiles/Attic/tiles-defs.xml,v diff -u -r1.7 -r1.8 --- lams_common/web/WEB-INF/tiles/tiles-defs.xml 24 Jan 2005 05:10:59 -0000 1.7 +++ lams_common/web/WEB-INF/tiles/tiles-defs.xml 28 Jan 2005 04:21:09 -0000 1.8 @@ -63,14 +63,6 @@ - - - - - - - - Index: lams_common/web/admin/adminContent.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/admin/Attic/adminContent.jsp,v diff -u -r1.3 -r1.4 --- lams_common/web/admin/adminContent.jsp 24 Jan 2005 05:07:34 -0000 1.3 +++ lams_common/web/admin/adminContent.jsp 28 Jan 2005 04:21:09 -0000 1.4 @@ -6,10 +6,14 @@ <%@ page import="javax.servlet.http.HttpServletRequest" %> <%@ page import="org.springframework.web.context.support.WebApplicationContextUtils" %> <%@ page import="org.springframework.web.context.WebApplicationContext" %> -<%@ page import="com.lamsinternational.lams.usermanagement.service.UserManagementService" %> -<%@ page import="com.lamsinternational.lams.usermanagement.Organisation" %> -<%@ page import="com.lamsinternational.lams.usermanagement.Role" %> -<%@ page import="com.lamsinternational.lams.usermanagement.User" %> +<%@ page import="org.lamsfoundation.lams.usermanagement.service.UserManagementService" %> +<%@ page import="org.lamsfoundation.lams.usermanagement.Organisation" %> +<%@ page import="org.lamsfoundation.lams.usermanagement.Role" %> +<%@ page import="org.lamsfoundation.lams.usermanagement.User" %> +<%@ page import="org.lamsfoundation.lams.web.AttributeNames" %> +<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> +<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> +<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <%@ taglib uri="/WEB-INF/jstl/c.tld" prefix="c" %> @@ -18,19 +22,19 @@ -
UserRoles UserRolesAuthentication 
Index: lams_common/web/admin/usersaddContent.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_common/web/admin/Attic/usersaddContent.jsp,v diff -u -r1.1 -r1.2 --- lams_common/web/admin/usersaddContent.jsp 24 Jan 2005 05:09:16 -0000 1.1 +++ lams_common/web/admin/usersaddContent.jsp 28 Jan 2005 04:21:08 -0000 1.2 @@ -2,10 +2,11 @@ <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %> <%@ taglib uri="/WEB-INF/jstl/c.tld" prefix="c" %> -<%@ page import="com.lamsinternational.lams.usermanagement.web.UsersAddActionForm"%> -<%@ page import="com.lamsinternational.lams.usermanagement.User"%> +<%@ page import="java.util.Map"%> +<%@ page import="org.lamsfoundation.lams.usermanagement.web.UsersAddActionForm"%> +<%@ page import="org.lamsfoundation.lams.usermanagement.User"%> +<%@ page import="org.lamsfoundation.lams.usermanagement.web.UsersAddAction"%> @@ -15,16 +16,15 @@
@@ -50,11 +50,11 @@ - Username (Login name): + Login: * - * + @@ -65,25 +65,14 @@
- Authentication Method: + Authentication Method: * - - - - - + + - - - - - - - - - - + +