001: /*
002: * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/admin/importexport/mvnforum/MvnForumAttachmentXML.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.admin.AttachmentXML;
043: import net.myvietnam.mvncore.exception.*;
044:
045: /**
046: * @author Igor Manic
047: * @version $Revision: 1.7 $, $Date: 2007/01/15 10:27:35 $
048: * <br/>
049: * <code>MvnForumAttachmentXML</code> class encapsulates processing of
050: * attachments' definitions found in the backup XML file. It implements
051: * methods to be called from XML parsing routine, adds some additional
052: * processing and checking, and calls corresponding methods of
053: * <code>AttachmentXML</code> and other neccessary classes in order to perform
054: * the actual creation of an attachment.
055: */
056: public class MvnForumAttachmentXML {
057:
058: private AttachmentXML attachmentXML = null;
059: private boolean attachmentCreated = false;
060: private MvnForumPostXML parentPost = null;
061:
062: String attachMemberName = null;
063: String attachFilename = null;
064: String attachFileSize = null;
065: String attachMimeType = null;
066: String attachDesc = null;
067: String attachCreationIP = null;
068: String attachCreationDate = null;
069: String attachModifiedDate = null;
070: String attachDownloadCount = null;
071: String attachOption = null;
072: String attachStatus = null;
073:
074: public MvnForumAttachmentXML() {
075: super ();
076: attachmentXML = new AttachmentXML();
077: attachmentCreated = false;
078: parentPost = null;
079: }
080:
081: public int getAttachmentID() {
082: return attachmentXML.getAttachmentID();
083: }
084:
085: public void setAttachmentID(String id) {
086: if (id != null)
087: attachmentXML.setAttachmentID(id);
088: }
089:
090: /**
091: * This method simply calls <code>setAttachmentID()</code>.
092: * It's defined only to avoid property-setter problems with digester
093: * (since it doesn't seem to recognize <code>setAttachmentID()</code> as a setter
094: * method for <code>attachmentID</code> property).
095: */
096: public void setAttachmentId(String id) {
097: setAttachmentID(id);
098: }
099:
100: public int getParentCategoryID() {
101: return attachmentXML.getParentCategoryID(); //==parentPost.getParentCategoryID();
102: }
103:
104: public int getParentForumID() {
105: return attachmentXML.getParentForumID(); //==parentPost.getParentForumID();
106: }
107:
108: public int getParentThreadID() {
109: return attachmentXML.getParentThreadID(); //==parentPost.getParentThreadID();
110: }
111:
112: public int getParentPostID() {
113: return attachmentXML.getParentPostID(); //==parentPost.getPostID();
114: }
115:
116: public void setParentPost(Object o)
117: throws ForeignKeyNotFoundException {
118: if (o instanceof MvnForumPostXML) {
119: parentPost = (MvnForumPostXML) o;
120: //warning: parent post might be not added to database yet
121: } else {
122: throw new ForeignKeyNotFoundException(
123: "Can't find parent post.");
124: }
125: }
126:
127: public void setAttachMemberName(String value) {
128: attachMemberName = value;
129: }
130:
131: public void setAttachFilename(String value) {
132: attachFilename = value;
133: }
134:
135: public void setAttachFileSize(String value) {
136: attachFileSize = value;
137: }
138:
139: public void setAttachMimeType(String value) {
140: attachMimeType = value;
141: }
142:
143: public void setAttachDesc(String value) {
144: attachDesc = value;
145: }
146:
147: public void setAttachCreationIP(String value) {
148: attachCreationIP = value;
149: }
150:
151: public void setAttachCreationDate(String value) {
152: attachCreationDate = value;
153: }
154:
155: public void setAttachModifiedDate(String value) {
156: attachModifiedDate = value;
157: }
158:
159: public void setAttachDownloadCount(String value) {
160: attachDownloadCount = value;
161: }
162:
163: public void setAttachOption(String value) {
164: attachOption = value;
165: }
166:
167: public void setAttachStatus(String value) {
168: attachStatus = value;
169: }
170:
171: public void addAttachment() throws CreateException,
172: DuplicateKeyException, ObjectNotFoundException,
173: DatabaseException, ForeignKeyNotFoundException,
174: BadInputException {
175: /* First, check if the digester already called this method.
176: * It will happen even under normal circumstances, if this attachment has
177: * subelements that need it already be defined, so they first call
178: * this method to create attachment before creating data that refer him.
179: */
180: if (attachmentCreated)
181: return;
182: /* Second, create parent post if it's not yet created. */
183: if (parentPost != null) {
184: parentPost.addPost();
185: attachmentXML.setParentPostID(parentPost.getPostID());
186: attachmentXML.setParentThreadID(parentPost
187: .getParentThreadID());
188: attachmentXML.setParentForumID(parentPost
189: .getParentForumID());
190: attachmentXML.setParentCategoryID(parentPost
191: .getParentCategoryID());
192: }
193:
194: ImportMvnForum.addMessage("Adding attachment \""
195: + attachFilename + "\".");
196: //AttachmentXML.addAttachment() will check itself if the ID is assigned, as it should be
197: attachmentXML.addAttachment(attachMemberName, attachFilename,
198: attachFileSize, attachMimeType, attachDesc,
199: attachCreationIP, attachCreationDate,
200: attachModifiedDate, attachDownloadCount, attachOption,
201: attachStatus);
202: attachmentCreated = true;
203:
204: if (parentPost != null) {
205: parentPost.updateAddedAttachment(this);
206: }
207: }
208:
209: }
|