001: /*
002: * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/admin/importexport/mvnforum/MvnForumGroupXML.java,v 1.7 2007/01/15 10:27:35 dungbtm Exp $
003: * $Author: dungbtm $
004: * $Revision: 1.7 $
005: * $Date: 2007/01/15 10:27:35 $
006: *
007: * ====================================================================
008: *
009: * Copyright (C) 2002-2007 by MyVietnam.net
010: *
011: * All copyright notices regarding mvnForum MUST remain
012: * intact in the scripts and in the outputted HTML.
013: * The "powered by" text/logo with a link back to
014: * http://www.mvnForum.com and http://www.MyVietnam.net in
015: * the footer of the pages MUST remain visible when the pages
016: * are viewed on the internet or intranet.
017: *
018: * This program is free software; you can redistribute it and/or modify
019: * it under the terms of the GNU General Public License as published by
020: * the Free Software Foundation; either version 2 of the License, or
021: * any later version.
022: *
023: * This program is distributed in the hope that it will be useful,
024: * but WITHOUT ANY WARRANTY; without even the implied warranty of
025: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
026: * GNU General Public License for more details.
027: *
028: * You should have received a copy of the GNU General Public License
029: * along with this program; if not, write to the Free Software
030: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
031: *
032: * Support can be obtained from support forums at:
033: * http://www.mvnForum.com/mvnforum/index
034: *
035: * Correspondence and Marketing Questions can be sent to:
036: * info at MyVietnam net
037: *
038: * @author: Igor Manic
039: */
040: package com.mvnforum.admin.importexport.mvnforum;
041:
042: import com.mvnforum.MVNForumConstant;
043: import com.mvnforum.admin.GroupXML;
044: import net.myvietnam.mvncore.exception.*;
045:
046: /**
047: * @author Igor Manic
048: * @version $Revision: 1.7 $, $Date: 2007/01/15 10:27:35 $
049: * <br/>
050: * <code>MvnForumGroupXML</code> class encapsulates processing of
051: * groups' definitions found in the backup XML file. It implements
052: * methods to be called from XML parsing routine, adds some additional
053: * processing and checking, and calls corresponding methods of
054: * <code>GroupXML</code> and other neccessary classes in order to perform
055: * the actual creation of a group, as well as other related items (like
056: * group members and group permissions). It also ensures that default
057: * virtual <code>"Registered Members"</code> group is created, even if it
058: * wasn't found in the XML.
059: */
060: public class MvnForumGroupXML {
061:
062: private GroupXML groupXML = null;
063: private boolean groupCreated = false;
064: private boolean isRegisteredMembersGroup = false;
065:
066: String groupOwnerName = null;
067: String groupName = null;
068: String groupDesc = null;
069: String groupOption = null;
070: String groupCreationDate = null;
071: String groupModifiedDate = null;
072:
073: public MvnForumGroupXML() {
074: super ();
075: groupXML = new GroupXML();
076: groupCreated = false;
077: isRegisteredMembersGroup = false;
078: }
079:
080: public int getGroupID() {
081: return groupXML.getGroupID();
082: }
083:
084: public void setGroupID(String id) {
085: groupXML.setGroupID(id);
086: }
087:
088: /**
089: * This method simply calls <code>setGroupID()</code>.
090: * It's defined only to avoid property-setter problems with digester
091: * (since it doesn't seem to recognize <code>setGroupID()</code> as a setter
092: * method for <code>groupID</code> property).
093: */
094: public void setGroupId(String id) {
095: setGroupID(id);
096: }
097:
098: public void setGroupClass(String groupClass) {
099: if (groupClass != null) {
100: if (groupClass.equalsIgnoreCase("RegisteredMembers")) {
101: groupXML
102: .setGroupID(Integer
103: .toString(MVNForumConstant.GROUP_ID_OF_REGISTERED_MEMBERS));
104: isRegisteredMembersGroup = true;
105: }
106: }
107: }
108:
109: public void setGroupOwnerName(String value) {
110: groupOwnerName = value;
111: }
112:
113: public void setGroupName(String value) {
114: groupName = value;
115: }
116:
117: public void setGroupDesc(String value) {
118: groupDesc = value;
119: }
120:
121: public void setGroupOption(String value) {
122: groupOption = value;
123: }
124:
125: public void setGroupCreationDate(String value) {
126: groupCreationDate = value;
127: }
128:
129: public void setGroupModifiedDate(String value) {
130: groupModifiedDate = value;
131: }
132:
133: public void addGroup() throws CreateException,
134: DuplicateKeyException, ObjectNotFoundException,
135: DatabaseException, ForeignKeyNotFoundException,
136: BadInputException {
137: /* First, check if the digester already called this method.
138: * It will happen even under normal circumstances, if this group has
139: * subelements that need it already be defined, so they first call
140: * this method to create group before creating data that refer him.
141: */
142: if (groupCreated)
143: return;
144: /* Then, check if "Registered Members" group is created.
145: * It must be the first one to be created, otherwise, DBMS might have
146: * added some other (non-reserved) group with this ID
147: * that is supposed to be reserved for "Registered Members".
148: */
149: if (!isRegisteredMembersGroup)
150: MvnForumXML.checkRegisteredMembersGroup();
151:
152: ImportMvnForum
153: .addMessage("Adding group \"" + groupName + "\".");
154: groupXML.addGroup(groupOwnerName, groupName, groupDesc,
155: groupOption, groupCreationDate, groupModifiedDate);
156: groupCreated = true;
157: if (isRegisteredMembersGroup)
158: MvnForumXML.addedRegisteredMembersGroup = true;
159: }
160:
161: public void addGroupPermission(String permission)
162: throws CreateException, DuplicateKeyException,
163: ObjectNotFoundException, DatabaseException,
164: ForeignKeyNotFoundException, BadInputException {
165: if ((!groupCreated) || (groupXML.getGroupID() < 0)) {
166: addGroup();
167: }
168: ImportMvnForum.addMessage("Adding group permission \""
169: + permission + "\".");
170: groupXML.addGroupPermission(permission);
171: }
172:
173: public void addGroupMember(String memberName, String privilege,
174: String creationDate, String modifiedDate)
175: throws CreateException, DuplicateKeyException,
176: ObjectNotFoundException, DatabaseException,
177: ForeignKeyNotFoundException, BadInputException {
178: if ((!groupCreated) || (groupXML.getGroupID() < 0)) {
179: addGroup();
180: }
181: ImportMvnForum.addMessage("Adding group member \"" + memberName
182: + "\".");
183: groupXML.addMemberGroup(memberName, privilege, creationDate,
184: modifiedDate);
185: }
186:
187: }
|