1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.christianschenk.bibsonomy.export.delicious;
20
21 import java.io.InputStreamReader;
22 import java.io.StringWriter;
23 import java.io.Writer;
24 import java.util.ArrayList;
25 import java.util.List;
26
27 import org.apache.velocity.VelocityContext;
28 import org.apache.velocity.app.Velocity;
29 import org.apache.velocity.exception.ParseErrorException;
30 import org.apache.velocity.exception.ResourceNotFoundException;
31 import org.bibsonomy.model.Bookmark;
32 import org.bibsonomy.model.Post;
33 import org.bibsonomy.model.Resource;
34 import org.christianschenk.bibsonomy.export.BibSonomyClient;
35 import org.christianschenk.bibsonomy.export.BibSonomyHelper;
36 import org.christianschenk.bibsonomy.export.model.SimplePost;
37 import org.christianschenk.bibsonomy.export.utils.VelocityNoOutputLogger;
38
39
40
41
42
43
44
45
46
47
48 public class DeliciousExportFormatWriter {
49
50 private final String bibSonomyUsername;
51 private final String bibSonomyApiKey;
52
53 public DeliciousExportFormatWriter(final String bibSonomyUsername, final String bibSonomyApiKey) {
54 this.bibSonomyUsername = bibSonomyUsername;
55 this.bibSonomyApiKey = bibSonomyApiKey;
56
57 try {
58 Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM, new VelocityNoOutputLogger());
59 Velocity.init();
60 } catch (final Exception ignore) {
61 }
62 }
63
64 public void doExport() {
65
66 final List<Post<? extends Resource>> posts = new BibSonomyClient(this.bibSonomyUsername, this.bibSonomyApiKey).getAllBookmarksFromBibSonomy();
67
68 final List<SimplePost> simplePosts = new ArrayList<SimplePost>();
69 for (final Post<? extends Resource> post : posts) {
70
71 if (BibSonomyHelper.getShared(post.getGroups()) == false) continue;
72
73 final SimplePost simplePost = new SimplePost();
74 final Bookmark bookmark = (Bookmark) post.getResource();
75 simplePost.setTitle(bookmark.getTitle());
76 simplePost.setUrl(bookmark.getUrl());
77 simplePost.setTags(BibSonomyHelper.getTagsCommaSeparated(post.getTags()));
78 String desc = post.getDescription();
79 if (desc != null && "".equals(desc.trim())) desc = null;
80 simplePost.setDescription(desc);
81 simplePost.setDate(post.getDate().getTime());
82 simplePosts.add(simplePost);
83 }
84
85
86 try {
87 final VelocityContext context = new VelocityContext();
88 context.put("posts", simplePosts);
89
90 final Writer output = new StringWriter();
91 Velocity.evaluate(context, output, "delicious-export", new InputStreamReader(ClassLoader.getSystemResourceAsStream("delicious-export.vm")));
92 System.out.println(output);
93 } catch (final ResourceNotFoundException ex) {
94 ex.printStackTrace();
95 } catch (final ParseErrorException ex) {
96 ex.printStackTrace();
97 } catch (final Exception ex) {
98 ex.printStackTrace();
99 }
100 }
101 }