KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > blojsom > upgrade > Blojsom2ToBlojsom3Utility


1 /**
2  * Copyright (c) 2003-2006, David A. Czarnecki
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * Redistributions of source code must retain the above copyright notice, this list of conditions and the
9  * following disclaimer.
10  * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
11  * following disclaimer in the documentation and/or other materials provided with the distribution.
12  * Neither the name of "David A. Czarnecki" and "blojsom" nor the names of its contributors may be used to
13  * endorse or promote products derived from this software without specific prior written permission.
14  * Products derived from this software may not be called "blojsom", nor may "blojsom" appear in their name,
15  * without prior written permission of David A. Czarnecki.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
18  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
19  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
20  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
21  * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
26  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */

31 package org.blojsom.upgrade;
32
33 import org.apache.commons.io.FileUtils;
34 import org.apache.commons.logging.Log;
35 import org.apache.commons.logging.LogFactory;
36 import org.blojsom.blog.Blog;
37 import org.blojsom.blog.*;
38 import org.blojsom.blog.database.*;
39 import org.blojsom.fetcher.Fetcher;
40 import org.blojsom.fetcher.FetcherException;
41 import org.blojsom.plugin.common.ResponseConstants;
42 import org.blojsom.util.BlojsomConstants;
43 import org.blojsom.util.BlojsomMetaDataConstants;
44 import org.blojsom2.BlojsomException;
45 import org.blojsom2.blog.*;
46 import org.blojsom2.blog.Pingback;
47 import org.blojsom2.blog.Trackback;
48 import org.blojsom2.fetcher.BlojsomFetcher;
49 import org.blojsom2.fetcher.BlojsomFetcherException;
50 import org.blojsom2.util.BlojsomProperties;
51 import org.blojsom2.util.BlojsomUtils;
52 import org.springframework.beans.FatalBeanException;
53 import org.springframework.beans.InvalidPropertyException;
54
55 import javax.servlet.ServletConfig JavaDoc;
56 import javax.servlet.ServletException JavaDoc;
57 import java.io.File JavaDoc;
58 import java.io.FileInputStream JavaDoc;
59 import java.io.IOException JavaDoc;
60 import java.io.InputStream JavaDoc;
61 import java.util.*;
62
63 /**
64  * Utility class to migrate from blojsom 2 to blojsom 3
65  *
66  * @author David Czarnecki
67  * @since blojsom 3
68  * @version $Id: Blojsom2ToBlojsom3Utility.java,v 1.10 2006/09/29 15:49:56 czarneckid Exp $
69  */

70 public class Blojsom2ToBlojsom3Utility {
71
72     private static Log _logger = LogFactory.getLog(Blojsom2ToBlojsom3Utility.class);
73
74     private ServletConfig JavaDoc _servletConfig;
75     private Fetcher _fetcher;
76
77     private BlojsomFetcher _blojsom2Fetcher;
78     private BlojsomConfiguration _blojsomConfiguration;
79
80     private String JavaDoc _blojsom2Path;
81     private String JavaDoc _blojsom3Path;
82
83     /**
84      * Construct a new instance of the blojsom 2 to blojsom 3 utility
85      */

86     public Blojsom2ToBlojsom3Utility() {
87     }
88
89     /**
90      * Set the path to the blojsom 2 installation directory
91      *
92      * @param blojsom2Path blojsom 2 installation directory
93      */

94     public void setBlojsom2Path(String JavaDoc blojsom2Path) {
95         _blojsom2Path = blojsom2Path;
96     }
97
98     /**
99      * Set the path to the blojsom 3 installation directory
100      *
101      * @param blojsom3Path blojsom 3 installation directory
102      */

103     public void setBlojsom3Path(String JavaDoc blojsom3Path) {
104         _blojsom3Path = blojsom3Path;
105     }
106
107     /**
108      * Set the {@link Fetcher}
109      *
110      * @param fetcher {@link Fetcher}
111      */

112     public void setFetcher(Fetcher fetcher) {
113         _fetcher = fetcher;
114     }
115
116     /**
117      * Set the {@link ServletConfig}
118      *
119      * @param servletConfig {@link ServletConfig}
120      */

121     public void setServletConfig(ServletConfig JavaDoc servletConfig) {
122         _servletConfig = servletConfig;
123     }
124
125     /**
126      * Configure the {@link BlojsomFetcher} that will be used to fetch categories and
127      * entries
128      *
129      * @param servletConfig Servlet configuration information
130      * @param blojsomConfiguration blojsom properties
131      * @throws javax.servlet.ServletException If the {@link BlojsomFetcher} class could not be loaded and/or initialized
132      */

133     protected void configureFetcher(ServletConfig JavaDoc servletConfig, BlojsomConfiguration blojsomConfiguration) throws ServletException JavaDoc {
134         String JavaDoc fetcherClassName = blojsomConfiguration.getFetcherClass();
135         try {
136             Class JavaDoc fetcherClass = Class.forName(fetcherClassName);
137             _blojsom2Fetcher = (BlojsomFetcher) fetcherClass.newInstance();
138             _blojsom2Fetcher.init(servletConfig, blojsomConfiguration);
139             _logger.info("Added blojsom fetcher: " + fetcherClassName);
140         } catch (ClassNotFoundException JavaDoc e) {
141             _logger.error(e);
142             throw new ServletException JavaDoc(e);
143         } catch (InstantiationException JavaDoc e) {
144             _logger.error(e);
145             throw new ServletException JavaDoc(e);
146         } catch (IllegalAccessException JavaDoc e) {
147             _logger.error(e);
148             throw new ServletException JavaDoc(e);
149         } catch (BlojsomFetcherException e) {
150             _logger.error(e);
151             throw new ServletException JavaDoc(e);
152         }
153     }
154
155     /**
156      * Load the blojsom 2 configuration information
157      */

158     private void loadBlojsom2Configuration() {
159         String JavaDoc blojsomPropertiesPath = _blojsom2Path + "/" + BlojsomConstants.DEFAULT_CONFIGURATION_BASE_DIRECTORY + "/blojsom.properties";
160         BlojsomProperties _blojsomProperties;
161         try {
162             _blojsomProperties = new BlojsomProperties();
163             _blojsomProperties.load(new FileInputStream JavaDoc(blojsomPropertiesPath));
164         } catch (IOException JavaDoc e) {
165             if (_logger.isErrorEnabled()) {
166                 _logger.error(e);
167             }
168
169             _blojsomProperties = null;
170         }
171
172         if (_blojsomProperties == null) {
173             throw new FatalBeanException("Unable to load blojsom properties file: " + blojsomPropertiesPath);
174         }
175
176         try {
177             _blojsomConfiguration = new BlojsomConfiguration(_servletConfig, org.blojsom.util.BlojsomUtils.propertiesToMap(_blojsomProperties));
178         } catch (BlojsomConfigurationException e) {
179             if (_logger.isErrorEnabled()) {
180                 _logger.error(e);
181             }
182         }
183
184         if (_blojsomConfiguration == null) {
185             throw new FatalBeanException("Unable to construct blojsom configuration object");
186         }
187
188         try {
189             configureFetcher(_servletConfig, _blojsomConfiguration);
190         } catch (ServletException JavaDoc e) {
191             if (_logger.isErrorEnabled()) {
192                 _logger.error(e);
193             }
194
195             throw new FatalBeanException("Unable to construct blojsom 2 fetcher object", e);
196         }
197     }
198
199     /**
200      * Upgrade the blojsom 2 instance to blojsom 3
201      */

202     public void upgrade() {
203         if (org.blojsom.util.BlojsomUtils.checkNullOrBlank(_blojsom2Path)) {
204             throw new InvalidPropertyException(Blojsom2ToBlojsom3Utility.class, "blojsom2Path", "blojsom2Path property was null or blank");
205         }
206
207         if (org.blojsom.util.BlojsomUtils.checkNullOrBlank(_blojsom3Path)) {
208             throw new InvalidPropertyException(Blojsom2ToBlojsom3Utility.class, "blojsom3Path", "blojsom3Path property was null or blank");
209         }
210
211         if (_logger.isDebugEnabled()) {
212             _logger.debug("blojsom 2 path: " + _blojsom2Path);
213             _logger.debug("blojsom 3 path: " + _blojsom3Path);
214         }
215
216         loadBlojsom2Configuration();
217
218         // Migrate each blog
219
String JavaDoc[] blojsom2IDs = _blojsomConfiguration.getBlojsomUsers();
220         for (int i = 0; i < blojsom2IDs.length; i++) {
221             String JavaDoc blojsom2ID = blojsom2IDs[i];
222             Blog blog;
223
224             // Try and load the blog in the blojsom 3 installation, otherwise, create a new blog
225
try {
226                 blog = _fetcher.loadBlog(blojsom2ID);
227
228                 if (_logger.isDebugEnabled()) {
229                     _logger.debug("Updating existing blog: " + blojsom2ID);
230                 }
231             } catch (FetcherException e) {
232                 if (_logger.isDebugEnabled()) {
233                     _logger.debug("Creating new blog: " + blojsom2ID);
234                 }
235
236                 blog = new DatabaseBlog();
237                 blog.setBlogId(blojsom2ID);
238             }
239
240             BlogUser blogUser;
241             try {
242                 blogUser = _blojsomConfiguration.loadBlog(blojsom2ID);
243             } catch (BlojsomException e) {
244                 if (_logger.isErrorEnabled()) {
245                     _logger.error("Unable to load blojsom 2 blog ID: " + blojsom2ID);
246                     _logger.error(e);
247                 }
248
249                 continue;
250             }
251
252             // Migrate the properties
253
Map blojsom2BlogProperties = blogUser.getBlog().getBlogProperties();
254             Properties blogProperties = org.blojsom2.util.BlojsomUtils.mapToProperties(blojsom2BlogProperties);
255             // Remove unused blog properties in blojsom 3
256
blogProperties.remove("blog-home");
257             blogProperties.remove("blog-directory-depth");
258             blogProperties.remove("blog-file-extensions");
259             blogProperties.remove("blog-entry-meta-data-extension");
260             blogProperties.remove("blog-properties-extensions");
261             blogProperties.remove("blog-default-category-mapping");
262             blogProperties.remove("blog-comments-directory");
263             blogProperties.remove("blog-trackbacks-directory");
264             blogProperties.remove("blog-pingbacks-directory");
265             blogProperties.remove("blog-xmlrpc-entry-extension");
266             blogProperties.remove("blog-directory-filter");
267             blogProperties.remove("blog-blacklist-file");
268             blog.setProperties(org.blojsom.util.BlojsomUtils.propertiesToMap(blogProperties));
269             // Sanitize some properties
270
String JavaDoc url = blog.getBlogURL();
271             url = org.blojsom.util.BlojsomUtils.removeTrailingSlash(url);
272             blog.setBlogURL(url);
273
274             url = blog.getBlogBaseURL();
275             url = org.blojsom.util.BlojsomUtils.removeTrailingSlash(url);
276             blog.setBlogBaseURL(url);
277
278             blog.setBlogBaseAdminURL(url);
279
280             url = blog.getBlogAdminURL();
281             url = org.blojsom.util.BlojsomUtils.removeTrailingSlash(url);
282             blog.setBlogAdminURL(url);
283
284             // Migrate the plugin chains
285
Map blojsom2PluginChains = blogUser.getPluginChain();
286             Map blojsom3PluginChains = new HashMap();
287             Iterator pluginIterator = blojsom2PluginChains.keySet().iterator();
288             while (pluginIterator.hasNext()) {
289                 String JavaDoc pluginChainForFlavor = (String JavaDoc) pluginIterator.next();
290                 String JavaDoc[] flavorForPluginChain = pluginChainForFlavor.split("\\.");
291                 if (flavorForPluginChain.length == 2) {
292                     blojsom3PluginChains.put(flavorForPluginChain[0], blojsom2PluginChains.get(pluginChainForFlavor));
293                 } else {
294                     blojsom3PluginChains.put("default", blojsom2PluginChains.get(pluginChainForFlavor));
295                 }
296             }
297             blog.setPlugins(blojsom3PluginChains);
298
299             // Migrate the flavor and template mappings
300
Map blojsom2BlogFlavors = blogUser.getFlavors();
301             Map blojsom3FlavorToTemplate = new HashMap();
302             Iterator flavorIterator = blojsom2BlogFlavors.keySet().iterator();
303             while (flavorIterator.hasNext()) {
304                 String JavaDoc flavor = (String JavaDoc) flavorIterator.next();
305                 blojsom3FlavorToTemplate.put(flavor, blogUser.getFlavorToTemplate().get(flavor).toString() + ", " + blogUser.getFlavorToContentType().get(flavor).toString());
306             }
307             blog.setTemplates(blojsom3FlavorToTemplate);
308
309             // Save the blojsom 3 blog
310
try {
311                 _fetcher.saveBlog(blog);
312                 blog = _fetcher.loadBlog(blog.getBlogId());
313             } catch (FetcherException e) {
314                 if (_logger.isErrorEnabled()) {
315                     _logger.error(e);
316                 }
317
318                 continue;
319             }
320
321             // Migrate the users and permissions for each user
322
String JavaDoc blogPermissionsPath = _blojsom2Path + "/" + BlojsomConstants.DEFAULT_CONFIGURATION_BASE_DIRECTORY + "/" + blogUser.getId() + "/permissions.properties";
323             Map blojsom2PermissionsForBlog = new HashMap();
324             try {
325                 InputStream JavaDoc is = new FileInputStream JavaDoc(blogPermissionsPath);
326                 BlojsomProperties permissions = new BlojsomProperties(true);
327                 permissions.load(is);
328                 is.close();
329
330                 blojsom2PermissionsForBlog = org.blojsom2.util.BlojsomUtils.propertiesToMap(permissions);
331
332                 if (_logger.isDebugEnabled()) {
333                     _logger.debug("Loaded permissions for blojsom 2 blog: " + blogUser.getId());
334                 }
335             } catch (IOException JavaDoc e) {
336                 if (_logger.isErrorEnabled()) {
337                     _logger.error(e);
338                 }
339             }
340
341             Map authorizationMap = blogUser.getBlog().getAuthorization();
342             Iterator blojsom2UserIterator = authorizationMap.keySet().iterator();
343             while (blojsom2UserIterator.hasNext()) {
344                 String JavaDoc userID = (String JavaDoc) blojsom2UserIterator.next();
345                 if (_logger.isDebugEnabled()) {
346                     _logger.debug("Migrating blojsom 2 user: " + userID);
347                 }
348
349                 User blojsom3User = new DatabaseUser();
350
351                 blojsom3User.setBlogId(blog.getId());
352                 blojsom3User.setUserLogin(userID);
353                 blojsom3User.setUserName(userID);
354                 blojsom3User.setUserRegistered(new Date());
355                 blojsom3User.setUserStatus("new");
356                 String JavaDoc[] parsedPasswordAndEmail = BlojsomUtils.parseLastComma((String JavaDoc) authorizationMap.get(userID));
357                 blojsom3User.setUserPassword(parsedPasswordAndEmail[0]);
358                 if (parsedPasswordAndEmail.length == 2) {
359                     blojsom3User.setUserEmail(parsedPasswordAndEmail[1]);
360                 } else {
361                     blojsom3User.setUserEmail(blogUser.getBlog().getBlogOwnerEmail());
362                 }
363
364                 Map blojsom3UserMetadata = new HashMap();
365
366                 if (blojsom2PermissionsForBlog.containsKey(userID)) {
367                     Object JavaDoc permissionsForUser = blojsom2PermissionsForBlog.get(userID);
368
369                     // Check where user has multiple permissions
370
if (permissionsForUser instanceof List) {
371                         List permissions = (List) permissionsForUser;
372                         for (int j = 0; j < permissions.size(); j++) {
373                             String JavaDoc permission = (String JavaDoc) permissions.get(j);
374                             String JavaDoc updatedPermission;
375
376                             if ("*".equals(permission)) {
377                                 updatedPermission = "all_permissions_permission";
378                             } else {
379                                 updatedPermission = permission.replaceAll("-", "_");
380                             }
381
382                             blojsom3UserMetadata.put(updatedPermission, "true");
383                         }
384                     // Check where user has only a single permission
385
} else {
386                         if ("*".equals(permissionsForUser)) {
387                             blojsom3UserMetadata.put("all_permissions_permission", "true");
388                         } else {
389                             blojsom3UserMetadata.put(permissionsForUser.toString().replaceAll("-", "_"), "true");
390                         }
391                     }
392                 }
393
394                 blojsom3User.setMetaData(blojsom3UserMetadata);
395
396                 try {
397                     _fetcher.saveUser(blog, blojsom3User);
398                 } catch (FetcherException e) {
399                     if (_logger.isErrorEnabled()) {
400                         _logger.error(e);
401                     }
402                 }
403             }
404
405             // Migrate the categories
406
Map blojsom2CategoriesMap = new HashMap();
407             Map blojsom3CategoriesMap = new HashMap();
408             try {
409                 BlogCategory[] blojsom2Categories = _blojsom2Fetcher.fetchCategories(null, blogUser);
410                 for (int j = 0; j < blojsom2Categories.length; j++) {
411                     BlogCategory blojsom2Category = blojsom2Categories[j];
412                     Category blojsom3Category = new DatabaseCategory();
413                     blojsom3Category.setBlogId(blog.getId());
414                     if (org.blojsom.util.BlojsomUtils.checkNullOrBlank(blojsom2Category.getDescription())) {
415                         blojsom3Category.setDescription(blojsom2Category.getEncodedCategory().replaceAll("/", " "));
416                     } else {
417                         blojsom3Category.setDescription(blojsom2Category.getDescription());
418                     }
419                     blojsom3Category.setName(blojsom2Category.getEncodedCategory());
420                     blojsom3Category.setParentCategoryId(null);
421                     blojsom3Category.setMetaData(blojsom2Category.getMetaData());
422
423                     try {
424                         _fetcher.saveCategory(blog, blojsom3Category);
425                         if (_logger.isDebugEnabled()) {
426                             _logger.debug("Created blojsom 3 category: " + blojsom3Category.getName());
427                         }
428
429                         blojsom3Category = _fetcher.loadCategory(blog, blojsom3Category.getName());
430                         blojsom2CategoriesMap.put(blojsom2Category.getEncodedCategory(), blojsom2Category);
431                         blojsom3CategoriesMap.put(blojsom2Category.getEncodedCategory(), blojsom3Category);
432                     } catch (FetcherException e) {
433                         if (_logger.isErrorEnabled()) {
434                             _logger.error(e);
435                         }
436                     }
437                 }
438             } catch (BlojsomFetcherException e) {
439                 if (_logger.isErrorEnabled()) {
440                     _logger.error(e);
441                 }
442
443                 continue;
444             }
445
446             // Migrate the entries
447
Iterator blojsom2CategoriesIterator = blojsom2CategoriesMap.keySet().iterator();
448             while (blojsom2CategoriesIterator.hasNext()) {
449                 String JavaDoc categoryName = (String JavaDoc) blojsom2CategoriesIterator.next();
450                 BlogCategory blogCategory = (BlogCategory) blojsom2CategoriesMap.get(categoryName);
451
452                 Map fetchParameters = new HashMap();
453                 fetchParameters.put(BlojsomFetcher.FETCHER_CATEGORY, blogCategory);
454                 fetchParameters.put(BlojsomFetcher.FETCHER_NUM_POSTS_INTEGER, new Integer JavaDoc(-1));
455                 try {
456                     BlogEntry[] entries = _blojsom2Fetcher.fetchEntries(fetchParameters, blogUser);
457
458                     if (_logger.isDebugEnabled()) {
459                         _logger.debug("Migrating " + entries.length + " entries from blojsom 2 category: " + blogCategory.getEncodedCategory());
460                     }
461
462                     for (int j = 0; j < entries.length; j++) {
463                         BlogEntry entry = entries[j];
464                         Entry blojsom3Entry = new DatabaseEntry();
465                         blojsom3Entry.setBlogId(blog.getId());
466
467                         Category category = (Category) blojsom3CategoriesMap.get(blogCategory.getEncodedCategory());
468                         blojsom3Entry.setBlogCategoryId(category.getId());
469                         if (entry.getMetaData().get("blog-entry-author") != null) {
470                             blojsom3Entry.setAuthor(entry.getMetaData().get("blog-entry-author").toString());
471                         }
472
473                         if (entry.supportsComments()) {
474                             blojsom3Entry.setAllowComments(new Integer JavaDoc(1));
475                         } else {
476                             blojsom3Entry.setAllowComments(new Integer JavaDoc(0));
477                         }
478
479                         blojsom3Entry.setDate(entry.getDate());
480                         blojsom3Entry.setDescription(entry.getDescription());
481                         blojsom3Entry.setMetaData(entry.getMetaData());
482                         blojsom3Entry.setModifiedDate(entry.getDate());
483
484                         if (entry.supportsPingbacks()) {
485                             blojsom3Entry.setAllowPingbacks(new Integer JavaDoc(1));
486                         } else {
487                             blojsom3Entry.setAllowPingbacks(new Integer JavaDoc(0));
488                         }
489
490                         blojsom3Entry.setPostSlug(entry.getPermalink());
491                         blojsom3Entry.setStatus(BlojsomMetaDataConstants.PUBLISHED_STATUS);
492                         blojsom3Entry.setTitle(entry.getTitle());
493
494                         if (entry.supportsTrackbacks()) {
495                             blojsom3Entry.setAllowTrackbacks(new Integer JavaDoc(1));
496                         } else {
497                             blojsom3Entry.setAllowTrackbacks(new Integer JavaDoc(0));
498                         }
499
500                         try {
501                             _fetcher.saveEntry(blog, blojsom3Entry);
502                         } catch (FetcherException e) {
503                             if (_logger.isErrorEnabled()) {
504                                 _logger.error(e);
505                             }
506                         }
507
508                         // Migrate the comments
509
BlogComment[] comments = entry.getCommentsAsArray();
510                         for (int k = 0; k < comments.length; k++) {
511                             BlogComment comment = comments[k];
512                             Comment blojsom3Comment = new DatabaseComment();
513
514                             blojsom3Comment.setAuthor(comment.getAuthor());
515                             blojsom3Comment.setAuthorEmail(comment.getAuthorEmail());
516                             blojsom3Comment.setAuthorURL(comment.getAuthorURL());
517                             blojsom3Comment.setBlogEntryId(blojsom3Entry.getId());
518                             blojsom3Comment.setBlogId(blog.getId());
519                             blojsom3Comment.setComment(comment.getComment());
520                             blojsom3Comment.setCommentDate(comment.getCommentDate());
521                             blojsom3Comment.setIp((String JavaDoc) comment.getMetaData().get("BLOJSOM_COMMENT_PLUGIN_METADATA_IP"));
522                             blojsom3Comment.setMetaData(comment.getMetaData());
523                             blojsom3Comment.setStatus(ResponseConstants.APPROVED_STATUS);
524
525                             try {
526                                 _fetcher.saveComment(blog, blojsom3Comment);
527                             } catch (FetcherException e) {
528                                 if (_logger.isErrorEnabled()) {
529                                     _logger.error(e);
530                                 }
531                             }
532                         }
533
534                         // Migrate the trackbacks
535
Trackback[] trackbacks = entry.getTrackbacksAsArray();
536                         for (int k = 0; k < trackbacks.length; k++) {
537                             Trackback trackback = trackbacks[k];
538                             DatabaseTrackback blojsom3Trackback = new DatabaseTrackback();
539
540                             blojsom3Trackback.setBlogName(trackback.getBlogName());
541                             blojsom3Trackback.setExcerpt(trackback.getExcerpt());
542                             blojsom3Trackback.setTitle(trackback.getTitle());
543                             blojsom3Trackback.setUrl(trackback.getUrl());
544                             blojsom3Trackback.setTrackbackDate(trackback.getTrackbackDate());
545                             blojsom3Trackback.setBlogEntryId(blojsom3Entry.getId());
546                             blojsom3Trackback.setBlogId(blog.getId());
547                             blojsom3Trackback.setIp((String JavaDoc) trackback.getMetaData().get("BLOJSOM_TRACKBACK_PLUGIN_METADATA_IP"));
548                             blojsom3Trackback.setMetaData(trackback.getMetaData());
549                             blojsom3Trackback.setStatus(ResponseConstants.APPROVED_STATUS);
550
551                             try {
552                                 _fetcher.saveTrackback(blog, blojsom3Trackback);
553                             } catch (FetcherException e) {
554                                 if (_logger.isErrorEnabled()) {
555                                     _logger.error(e);
556                                 }
557                             }
558                         }
559
560                         // Migrate the pingbacks
561
Pingback[] pingbacks = entry.getPingbacksAsArray();
562                         for (int k = 0; k < pingbacks.length; k++) {
563                             Pingback pingback = pingbacks[k];
564                             DatabasePingback blojsom3Pingback = new DatabasePingback();
565
566                             blojsom3Pingback.setBlogName(pingback.getBlogName());
567                             blojsom3Pingback.setExcerpt(pingback.getExcerpt());
568                             blojsom3Pingback.setTitle(pingback.getTitle());
569                             blojsom3Pingback.setUrl(pingback.getUrl());
570                             blojsom3Pingback.setTrackbackDate(pingback.getTrackbackDate());
571                             blojsom3Pingback.setBlogEntryId(blojsom3Entry.getId());
572                             blojsom3Pingback.setBlogId(blog.getId());
573                             blojsom3Pingback.setIp((String JavaDoc) pingback.getMetaData().get("BLOJSOM_PINGBACK_PLUGIN_METADATA_IP"));
574                             blojsom3Pingback.setMetaData(pingback.getMetaData());
575                             blojsom3Pingback.setStatus(ResponseConstants.APPROVED_STATUS);
576                             blojsom3Pingback.setSourceURI(pingback.getUrl());
577                             blojsom3Pingback.setTargetURI(pingback.getTitle());
578
579                             try {
580                                 _fetcher.savePingback(blog, blojsom3Pingback);
581                             } catch (FetcherException e) {
582                                 if (_logger.isErrorEnabled()) {
583                                     _logger.error(e);
584                                 }
585                             }
586                         }
587                     }
588                 } catch (BlojsomFetcherException e) {
589                     if (_logger.isErrorEnabled()) {
590                         _logger.error(e);
591                     }
592                 }
593             }
594
595             // Migrate the resources and templates
596
File JavaDoc blojsom2BlogResourcesPath = new File JavaDoc(_blojsom2Path + "/resources/" + blojsom2ID + "/");
597             File JavaDoc blojsom3BlogResourcesPath = new File JavaDoc(_blojsom3Path + "/resources/" + blojsom2ID + "/");
598             try {
599                 FileUtils.copyDirectory(blojsom2BlogResourcesPath, blojsom3BlogResourcesPath);
600                 if (_logger.isDebugEnabled()) {
601                     _logger.debug("Copied blojsom 2 blog resources from: " + blojsom2BlogResourcesPath.toString() + " to: " +
602                         blojsom3BlogResourcesPath.toString());
603                 }
604             } catch (IOException JavaDoc e) {
605                 if (_logger.isErrorEnabled()) {
606                     _logger.error(e);
607                 }
608             }
609
610             File JavaDoc blojsom2BlogPath = new File JavaDoc(_blojsom2Path + BlojsomConstants.DEFAULT_CONFIGURATION_BASE_DIRECTORY + "/" + blojsom2ID + "/");
611             File JavaDoc blojsom3BlogPath = new File JavaDoc(_blojsom2Path + BlojsomConstants.DEFAULT_CONFIGURATION_BASE_DIRECTORY + "/blogs/" + blojsom2ID + "/");
612             try {
613                 FileUtils.copyDirectory(blojsom2BlogPath, blojsom3BlogPath);
614                 if (_logger.isDebugEnabled()) {
615                     _logger.debug("Copied blojsom 2 blog data from: " + blojsom2BlogPath.toString() + " to: " +
616                         blojsom3BlogPath.toString());
617                 }
618             } catch (IOException JavaDoc e) {
619                 if (_logger.isErrorEnabled()) {
620                     _logger.error(e);
621                 }
622             }
623         }
624
625         if (_logger.isDebugEnabled()) {
626             _logger.debug("Finished upgrading blojsom 2 instance to blojsom 3!");
627         }
628     }
629 }
630
Popular Tags