about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--client/trunk/nbproject/project.properties16
-rw-r--r--client/trunk/src/com/fourisland/instadisc/CloseServerSocketThread.java (renamed from client/trunk/src/com/fourisland/instadisc/CloseObjectThread.java)6
-rw-r--r--client/trunk/src/com/fourisland/instadisc/Database/CloseEntityStoreThread.java33
-rw-r--r--client/trunk/src/com/fourisland/instadisc/Database/CloseEnvironmentThread.java32
-rw-r--r--client/trunk/src/com/fourisland/instadisc/Database/IDConfig.java43
-rw-r--r--client/trunk/src/com/fourisland/instadisc/Database/OldVerID.java31
-rw-r--r--client/trunk/src/com/fourisland/instadisc/Database/Wrapper.java129
-rw-r--r--client/trunk/src/com/fourisland/instadisc/FirstRun/FirstRunWizard.java35
-rw-r--r--client/trunk/src/com/fourisland/instadisc/FirstRun/Step1.form142
-rw-r--r--client/trunk/src/com/fourisland/instadisc/FirstRun/Step1.java156
-rw-r--r--client/trunk/src/com/fourisland/instadisc/FirstRun/Step2.form176
-rw-r--r--client/trunk/src/com/fourisland/instadisc/FirstRun/Step2.java219
-rw-r--r--client/trunk/src/com/fourisland/instadisc/FirstRun/Step3.form100
-rw-r--r--client/trunk/src/com/fourisland/instadisc/FirstRun/Step3.java122
-rw-r--r--client/trunk/src/com/fourisland/instadisc/FirstRun/StepEndResults.java16
-rw-r--r--client/trunk/src/com/fourisland/instadisc/FirstRun/resources/Step1.properties11
-rw-r--r--client/trunk/src/com/fourisland/instadisc/FirstRun/resources/Step2.properties14
-rw-r--r--client/trunk/src/com/fourisland/instadisc/FirstRun/resources/Step3.properties7
-rw-r--r--client/trunk/src/com/fourisland/instadisc/InstaDiscApp.java32
-rw-r--r--client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java7
-rw-r--r--client/trunk/src/com/fourisland/instadisc/Item/Item.java5
-rw-r--r--client/trunk/src/com/fourisland/instadisc/Item/Verification.java68
-rw-r--r--client/trunk/src/com/fourisland/instadisc/Item/VerificationIDReusedException.java17
-rw-r--r--client/trunk/src/com/fourisland/instadisc/XmlRpc.java84
24 files changed, 1490 insertions, 11 deletions
diff --git a/client/trunk/nbproject/project.properties b/client/trunk/nbproject/project.properties index cb41155..078acf2 100644 --- a/client/trunk/nbproject/project.properties +++ b/client/trunk/nbproject/project.properties
@@ -20,10 +20,18 @@ dist.dir=dist
20dist.jar=${dist.dir}/InstaDisc.jar 20dist.jar=${dist.dir}/InstaDisc.jar
21dist.javadoc.dir=${dist.dir}/javadoc 21dist.javadoc.dir=${dist.dir}/javadoc
22excludes= 22excludes=
23file.reference.commons-logging-1.1.jar=../../Desktop/xmlrpc-3.1/lib/commons-logging-1.1.jar
24file.reference.sqlite.jar=../../Desktop/javasqlite-20080420/sqlite.jar
25file.reference.sqlitejdbc-v052.jar=../../Desktop/sqlitejdbc-v052.jar
26file.reference.ws-commons-util-1.0.2.jar=../../Desktop/xmlrpc-3.1/lib/ws-commons-util-1.0.2.jar
23includes=** 27includes=**
24jar.compress=false 28jar.compress=false
25javac.classpath=\ 29javac.classpath=\
26 ${libs.swing-app-framework.classpath} 30 ${libs.swing-app-framework.classpath}:\
31 ${libs.XML-RPC.classpath}:\
32 ${file.reference.ws-commons-util-1.0.2.jar}:\
33 ${file.reference.commons-logging-1.1.jar}:\
34 ${libs.BDB.classpath}
27# Space-separated list of extra javac options 35# Space-separated list of extra javac options
28javac.compilerargs= 36javac.compilerargs=
29javac.deprecation=false 37javac.deprecation=false
@@ -45,6 +53,12 @@ javadoc.splitindex=true
45javadoc.use=true 53javadoc.use=true
46javadoc.version=false 54javadoc.version=false
47javadoc.windowtitle= 55javadoc.windowtitle=
56# Property libs.BDB.classpath is set here just to make sharing of project simpler.
57# The library definition has always preference over this property.
58libs.BDB.classpath=../../Desktop/je-3.3.62/lib/je-3.3.62.jar
59# Property libs.XML-RPC.classpath is set here just to make sharing of project simpler.
60# The library definition has always preference over this property.
61libs.XML-RPC.classpath=../../Desktop/xmlrpc-3.1/lib/xmlrpc-client-3.1.jar:../../Desktop/xmlrpc-3.1/lib/xmlrpc-common-3.1.jar:../../Desktop/xmlrpc-3.1/lib/xmlrpc-server-3.1.jar
48main.class=com.fourisland.instadisc.InstaDiscApp 62main.class=com.fourisland.instadisc.InstaDiscApp
49manifest.file=manifest.mf 63manifest.file=manifest.mf
50meta.inf.dir=${src.dir}/META-INF 64meta.inf.dir=${src.dir}/META-INF
diff --git a/client/trunk/src/com/fourisland/instadisc/CloseObjectThread.java b/client/trunk/src/com/fourisland/instadisc/CloseServerSocketThread.java index af8cecc..cfe1820 100644 --- a/client/trunk/src/com/fourisland/instadisc/CloseObjectThread.java +++ b/client/trunk/src/com/fourisland/instadisc/CloseServerSocketThread.java
@@ -14,11 +14,11 @@ import java.util.logging.Logger;
14 * 14 *
15 * @author hatkirby 15 * @author hatkirby
16 */ 16 */
17class CloseObjectThread implements Runnable{ 17class CloseServerSocketThread implements Runnable {
18 18
19 ServerSocket svr; 19 ServerSocket svr;
20 20
21 public CloseObjectThread(ServerSocket svr) { 21 public CloseServerSocketThread(ServerSocket svr) {
22 this.svr = svr; 22 this.svr = svr;
23 } 23 }
24 24
@@ -26,7 +26,7 @@ class CloseObjectThread implements Runnable{
26 try { 26 try {
27 svr.close(); 27 svr.close();
28 } catch (IOException ex) { 28 } catch (IOException ex) {
29 Logger.getLogger(CloseObjectThread.class.getName()).log(Level.SEVERE, null, ex); 29 Logger.getLogger(CloseServerSocketThread.class.getName()).log(Level.SEVERE, null, ex);
30 } 30 }
31 } 31 }
32 32
diff --git a/client/trunk/src/com/fourisland/instadisc/Database/CloseEntityStoreThread.java b/client/trunk/src/com/fourisland/instadisc/Database/CloseEntityStoreThread.java new file mode 100644 index 0000000..14ed006 --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/Database/CloseEntityStoreThread.java
@@ -0,0 +1,33 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5
6package com.fourisland.instadisc.Database;
7
8import com.sleepycat.je.DatabaseException;
9import com.sleepycat.persist.EntityStore;
10import java.util.logging.Level;
11import java.util.logging.Logger;
12
13/**
14 *
15 * @author hatkirby
16 */
17public class CloseEntityStoreThread implements Runnable {
18
19 EntityStore es;
20
21 public CloseEntityStoreThread(EntityStore es) {
22 this.es = es;
23 }
24
25 public void run() {
26 try {
27 es.close();
28 } catch (DatabaseException ex) {
29 Logger.getLogger(CloseEntityStoreThread.class.getName()).log(Level.SEVERE, null, ex);
30 }
31 }
32
33}
diff --git a/client/trunk/src/com/fourisland/instadisc/Database/CloseEnvironmentThread.java b/client/trunk/src/com/fourisland/instadisc/Database/CloseEnvironmentThread.java new file mode 100644 index 0000000..2a23aeb --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/Database/CloseEnvironmentThread.java
@@ -0,0 +1,32 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5package com.fourisland.instadisc.Database;
6
7import com.sleepycat.je.DatabaseException;
8import com.sleepycat.je.Environment;
9import java.util.logging.Level;
10import java.util.logging.Logger;
11
12/**
13 *
14 * @author hatkirby
15 */
16public class CloseEnvironmentThread implements Runnable{
17
18 Environment svr;
19
20 public CloseEnvironmentThread(Environment e) {
21 svr = e;
22 }
23
24 public void run() {
25 try {
26 svr.cleanLog();
27 svr.close();
28 } catch (DatabaseException ex) {
29 Logger.getLogger(CloseEnvironmentThread.class.getName()).log(Level.SEVERE, null, ex);
30 }
31 }
32}
diff --git a/client/trunk/src/com/fourisland/instadisc/Database/IDConfig.java b/client/trunk/src/com/fourisland/instadisc/Database/IDConfig.java new file mode 100644 index 0000000..9799d6d --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/Database/IDConfig.java
@@ -0,0 +1,43 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5
6package com.fourisland.instadisc.Database;
7
8import com.sleepycat.persist.model.Entity;
9import com.sleepycat.persist.model.PrimaryKey;
10
11/**
12 *
13 * @author hatkirby
14 */
15@Entity
16public class IDConfig {
17
18 @PrimaryKey
19 private String key;
20
21 private String value;
22
23 public String getKey()
24 {
25 return key;
26 }
27
28 public String getValue()
29 {
30 return value;
31 }
32
33 public void setKey(String key)
34 {
35 this.key = key;
36 }
37
38 public void setValue(String value)
39 {
40 this.value = value;
41 }
42
43}
diff --git a/client/trunk/src/com/fourisland/instadisc/Database/OldVerID.java b/client/trunk/src/com/fourisland/instadisc/Database/OldVerID.java new file mode 100644 index 0000000..d8cfcb9 --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/Database/OldVerID.java
@@ -0,0 +1,31 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5
6package com.fourisland.instadisc.Database;
7
8import com.sleepycat.persist.model.Entity;
9import com.sleepycat.persist.model.PrimaryKey;
10
11/**
12 *
13 * @author hatkirby
14 */
15@Entity
16public class OldVerID {
17
18 @PrimaryKey
19 private Integer ID;
20
21 public void setID(Integer ID)
22 {
23 this.ID = ID;
24 }
25
26 public Integer getID()
27 {
28 return ID;
29 }
30
31}
diff --git a/client/trunk/src/com/fourisland/instadisc/Database/Wrapper.java b/client/trunk/src/com/fourisland/instadisc/Database/Wrapper.java new file mode 100644 index 0000000..1f905ee --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/Database/Wrapper.java
@@ -0,0 +1,129 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5package com.fourisland.instadisc.Database;
6
7import com.sleepycat.je.DatabaseException;
8import com.sleepycat.je.Environment;
9import com.sleepycat.je.EnvironmentConfig;
10import com.sleepycat.persist.EntityCursor;
11import com.sleepycat.persist.EntityStore;
12import com.sleepycat.persist.PrimaryIndex;
13import com.sleepycat.persist.StoreConfig;
14import java.io.File;
15import java.util.Iterator;
16import java.util.logging.Level;
17import java.util.logging.Logger;
18
19/**
20 *
21 * @author hatkirby
22 */
23public class Wrapper {
24
25 public static Environment e = null;
26 public static EntityStore es = null;
27 public static PrimaryIndex<Integer, OldVerID> oldVerID;
28 public static PrimaryIndex<String, IDConfig> idConfig;
29
30 public static void init(String loc) {
31
32 EnvironmentConfig envConfig = new EnvironmentConfig();
33 StoreConfig esConfig = new StoreConfig();
34 envConfig.setAllowCreate(true);
35 esConfig.setAllowCreate(true);
36 try {
37 e = new Environment(new File(loc + "db"), envConfig);
38 es = new EntityStore(e, "EntityStore", esConfig);
39 } catch (DatabaseException ex) {
40 Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex);
41 System.exit(1);
42 }
43 Runtime.getRuntime().addShutdownHook(new Thread(new CloseEnvironmentThread(e)));
44 Runtime.getRuntime().addShutdownHook(new Thread(new CloseEntityStoreThread(es)));
45
46 try {
47 oldVerID = es.getPrimaryIndex(Integer.class, OldVerID.class);
48 idConfig = es.getPrimaryIndex(String.class, IDConfig.class);
49 } catch (DatabaseException ex) {
50 Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex);
51 }
52 }
53
54 public static String getConfig(String key)
55 {
56 try {
57 return idConfig.get(key).getValue();
58 } catch (DatabaseException ex) {
59 Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex);
60 return "";
61 }
62 }
63
64 public static void setConfig(String key, String value)
65 {
66 try {
67 if (idConfig.contains(key)) {
68 IDConfig temp = idConfig.get(key);
69 temp.setValue(value);
70 idConfig.put(temp);
71 } else {
72 IDConfig temp = new IDConfig();
73 temp.setKey(key);
74 temp.setValue(value);
75 idConfig.put(temp);
76 }
77 } catch (DatabaseException ex) {
78 Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex);
79 }
80 }
81
82 public static boolean containsOldVerID(Integer id)
83 {
84 try {
85 return oldVerID.contains(id);
86 } catch (DatabaseException ex) {
87 Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex);
88 return false;
89 }
90 }
91
92 public static int countOldVerID()
93 {
94 try {
95 return (int) oldVerID.count();
96 } catch (DatabaseException ex) {
97 Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex);
98 return 0;
99 }
100 }
101
102 public static void emptyOldVerID()
103 {
104 try {
105 EntityCursor<OldVerID> ec = oldVerID.entities();
106 try {
107 Iterator<OldVerID> i = ec.iterator();
108 while (i.hasNext()) {
109 i.remove();
110 }
111 } finally {
112 ec.close();
113 }
114 } catch (DatabaseException ex) {
115 Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex);
116 }
117 }
118
119 public static void addOldVerID(Integer id)
120 {
121 try {
122 OldVerID temp = new OldVerID();
123 temp.setID(id);
124 oldVerID.put(temp);
125 } catch (DatabaseException ex) {
126 Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex);
127 }
128 }
129}
diff --git a/client/trunk/src/com/fourisland/instadisc/FirstRun/FirstRunWizard.java b/client/trunk/src/com/fourisland/instadisc/FirstRun/FirstRunWizard.java new file mode 100644 index 0000000..0919f21 --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/FirstRun/FirstRunWizard.java
@@ -0,0 +1,35 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5
6package com.fourisland.instadisc.FirstRun;
7
8import javax.swing.JFrame;
9
10/**
11 *
12 * @author hatkirby
13 */
14public class FirstRunWizard implements Runnable {
15
16 public void run()
17 {
18 Step1 s1 = new Step1(new JFrame(), true);
19 s1.setVisible(true);
20 if (StepEndResults.ok)
21 {
22 StepEndResults.ok = false;
23 Step2 s2 = new Step2(new JFrame(), true);
24 s2.setVisible(true);
25 if (StepEndResults.ok)
26 {
27 StepEndResults.ok = false;
28 Step3 s3 = new Step3(new JFrame(), true);
29 s3.setVisible(true);
30 }
31 }
32 System.exit(0);
33 }
34
35}
diff --git a/client/trunk/src/com/fourisland/instadisc/FirstRun/Step1.form b/client/trunk/src/com/fourisland/instadisc/FirstRun/Step1.form new file mode 100644 index 0000000..b186d78 --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/FirstRun/Step1.form
@@ -0,0 +1,142 @@
1<?xml version="1.0" encoding="UTF-8" ?>
2
3<Form version="1.5" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
4 <Properties>
5 <Property name="defaultCloseOperation" type="int" value="2"/>
6 <Property name="name" type="java.lang.String" value="Form" noResource="true"/>
7 </Properties>
8 <SyntheticProperties>
9 <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
10 </SyntheticProperties>
11 <AuxValues>
12 <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
13 <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
14 <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
15 <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
16 <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
17 <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
18 <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
19 <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
20 </AuxValues>
21
22 <Layout>
23 <DimensionLayout dim="0">
24 <Group type="103" groupAlignment="0" attributes="0">
25 <Group type="102" alignment="0" attributes="0">
26 <EmptySpace min="-2" pref="134" max="-2" attributes="0"/>
27 <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
28 <EmptySpace pref="178" max="32767" attributes="0"/>
29 </Group>
30 <Group type="102" alignment="0" attributes="0">
31 <EmptySpace min="-2" pref="43" max="-2" attributes="0"/>
32 <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
33 <EmptySpace pref="56" max="32767" attributes="0"/>
34 </Group>
35 <Group type="102" alignment="1" attributes="0">
36 <EmptySpace min="-2" pref="57" max="-2" attributes="0"/>
37 <Component id="jScrollPane2" pref="346" max="32767" attributes="1"/>
38 <EmptySpace min="-2" pref="76" max="-2" attributes="0"/>
39 </Group>
40 <Group type="102" alignment="0" attributes="0">
41 <EmptySpace min="-2" pref="202" max="-2" attributes="0"/>
42 <Component id="jButton1" min="-2" max="-2" attributes="0"/>
43 <EmptySpace pref="235" max="32767" attributes="0"/>
44 </Group>
45 <Group type="102" alignment="0" attributes="0">
46 <EmptySpace min="-2" pref="23" max="-2" attributes="0"/>
47 <Component id="jScrollPane1" min="-2" pref="426" max="-2" attributes="1"/>
48 <EmptySpace pref="30" max="32767" attributes="0"/>
49 </Group>
50 </Group>
51 </DimensionLayout>
52 <DimensionLayout dim="1">
53 <Group type="103" groupAlignment="0" attributes="0">
54 <Group type="102" alignment="0" attributes="0">
55 <EmptySpace min="-2" pref="18" max="-2" attributes="0"/>
56 <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
57 <EmptySpace type="unrelated" max="-2" attributes="0"/>
58 <Component id="jScrollPane1" min="-2" pref="127" max="-2" attributes="0"/>
59 <EmptySpace type="separate" max="-2" attributes="0"/>
60 <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
61 <EmptySpace max="-2" attributes="0"/>
62 <Component id="jScrollPane2" min="-2" max="-2" attributes="0"/>
63 <EmptySpace type="unrelated" max="-2" attributes="0"/>
64 <Component id="jButton1" min="-2" max="-2" attributes="0"/>
65 <EmptySpace pref="30" max="32767" attributes="0"/>
66 </Group>
67 </Group>
68 </DimensionLayout>
69 </Layout>
70 <SubComponents>
71 <Component class="javax.swing.JLabel" name="jLabel1">
72 <Properties>
73 <Property name="font" type="java.awt.Font" resourceKey="jLabel1.font"/>
74 <Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
75 <Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
76 </Properties>
77 </Component>
78 <Container class="javax.swing.JScrollPane" name="jScrollPane1">
79 <Properties>
80 <Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
81 </Properties>
82 <AuxValues>
83 <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
84 </AuxValues>
85
86 <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
87 <SubComponents>
88 <Component class="javax.swing.JTextArea" name="jTextArea1">
89 <Properties>
90 <Property name="background" type="java.awt.Color" resourceKey="jTextArea1.background"/>
91 <Property name="columns" type="int" value="20"/>
92 <Property name="editable" type="boolean" value="false"/>
93 <Property name="lineWrap" type="boolean" value="true"/>
94 <Property name="rows" type="int" value="5"/>
95 <Property name="text" type="java.lang.String" resourceKey="jTextArea1.text"/>
96 <Property name="wrapStyleWord" type="boolean" value="true"/>
97 <Property name="name" type="java.lang.String" value="jTextArea1" noResource="true"/>
98 </Properties>
99 </Component>
100 </SubComponents>
101 </Container>
102 <Component class="javax.swing.JLabel" name="jLabel2">
103 <Properties>
104 <Property name="text" type="java.lang.String" resourceKey="jLabel2.text"/>
105 <Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
106 </Properties>
107 </Component>
108 <Container class="javax.swing.JScrollPane" name="jScrollPane2">
109 <Properties>
110 <Property name="name" type="java.lang.String" value="jScrollPane2" noResource="true"/>
111 </Properties>
112 <AuxValues>
113 <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
114 </AuxValues>
115
116 <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
117 <SubComponents>
118 <Component class="javax.swing.JTextArea" name="jTextArea2">
119 <Properties>
120 <Property name="background" type="java.awt.Color" resourceKey="jTextArea2.background"/>
121 <Property name="columns" type="int" value="20"/>
122 <Property name="editable" type="boolean" value="false"/>
123 <Property name="lineWrap" type="boolean" value="true"/>
124 <Property name="rows" type="int" value="5"/>
125 <Property name="text" type="java.lang.String" resourceKey="jTextArea2.text"/>
126 <Property name="wrapStyleWord" type="boolean" value="true"/>
127 <Property name="name" type="java.lang.String" value="jTextArea2" noResource="true"/>
128 </Properties>
129 </Component>
130 </SubComponents>
131 </Container>
132 <Component class="javax.swing.JButton" name="jButton1">
133 <Properties>
134 <Property name="text" type="java.lang.String" resourceKey="jButton1.text"/>
135 <Property name="name" type="java.lang.String" value="jButton1" noResource="true"/>
136 </Properties>
137 <Events>
138 <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
139 </Events>
140 </Component>
141 </SubComponents>
142</Form>
diff --git a/client/trunk/src/com/fourisland/instadisc/FirstRun/Step1.java b/client/trunk/src/com/fourisland/instadisc/FirstRun/Step1.java new file mode 100644 index 0000000..c0abbfa --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/FirstRun/Step1.java
@@ -0,0 +1,156 @@
1/*
2 * Step1.java
3 *
4 * Created on July 28, 2008, 4:04 PM
5 */
6
7package com.fourisland.instadisc.FirstRun;
8
9/**
10 *
11 * @author hatkirby
12 */
13public class Step1 extends javax.swing.JDialog {
14
15 /** Creates new form Step1 */
16 public Step1(java.awt.Frame parent, boolean modal) {
17 super(parent, modal);
18 initComponents();
19 }
20
21 /** This method is called from within the constructor to
22 * initialize the form.
23 * WARNING: Do NOT modify this code. The content of this method is
24 * always regenerated by the Form Editor.
25 */
26 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
27 private void initComponents() {
28
29 jLabel1 = new javax.swing.JLabel();
30 jScrollPane1 = new javax.swing.JScrollPane();
31 jTextArea1 = new javax.swing.JTextArea();
32 jLabel2 = new javax.swing.JLabel();
33 jScrollPane2 = new javax.swing.JScrollPane();
34 jTextArea2 = new javax.swing.JTextArea();
35 jButton1 = new javax.swing.JButton();
36
37 setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
38 setName("Form"); // NOI18N
39
40 org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(com.fourisland.instadisc.InstaDiscApp.class).getContext().getResourceMap(Step1.class);
41 jLabel1.setFont(resourceMap.getFont("jLabel1.font")); // NOI18N
42 jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
43 jLabel1.setName("jLabel1"); // NOI18N
44
45 jScrollPane1.setName("jScrollPane1"); // NOI18N
46
47 jTextArea1.setBackground(resourceMap.getColor("jTextArea1.background")); // NOI18N
48 jTextArea1.setColumns(20);
49 jTextArea1.setEditable(false);
50 jTextArea1.setLineWrap(true);
51 jTextArea1.setRows(5);
52 jTextArea1.setText(resourceMap.getString("jTextArea1.text")); // NOI18N
53 jTextArea1.setWrapStyleWord(true);
54 jTextArea1.setName("jTextArea1"); // NOI18N
55 jScrollPane1.setViewportView(jTextArea1);
56
57 jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
58 jLabel2.setName("jLabel2"); // NOI18N
59
60 jScrollPane2.setName("jScrollPane2"); // NOI18N
61
62 jTextArea2.setBackground(resourceMap.getColor("jTextArea2.background")); // NOI18N
63 jTextArea2.setColumns(20);
64 jTextArea2.setEditable(false);
65 jTextArea2.setLineWrap(true);
66 jTextArea2.setRows(5);
67 jTextArea2.setText(resourceMap.getString("jTextArea2.text")); // NOI18N
68 jTextArea2.setWrapStyleWord(true);
69 jTextArea2.setName("jTextArea2"); // NOI18N
70 jScrollPane2.setViewportView(jTextArea2);
71
72 jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N
73 jButton1.setName("jButton1"); // NOI18N
74 jButton1.addActionListener(new java.awt.event.ActionListener() {
75 public void actionPerformed(java.awt.event.ActionEvent evt) {
76 jButton1ActionPerformed(evt);
77 }
78 });
79
80 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
81 getContentPane().setLayout(layout);
82 layout.setHorizontalGroup(
83 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
84 .addGroup(layout.createSequentialGroup()
85 .addGap(134, 134, 134)
86 .addComponent(jLabel2)
87 .addContainerGap(178, Short.MAX_VALUE))
88 .addGroup(layout.createSequentialGroup()
89 .addGap(43, 43, 43)
90 .addComponent(jLabel1)
91 .addContainerGap(56, Short.MAX_VALUE))
92 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
93 .addGap(57, 57, 57)
94 .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 346, Short.MAX_VALUE)
95 .addGap(76, 76, 76))
96 .addGroup(layout.createSequentialGroup()
97 .addGap(202, 202, 202)
98 .addComponent(jButton1)
99 .addContainerGap(235, Short.MAX_VALUE))
100 .addGroup(layout.createSequentialGroup()
101 .addGap(23, 23, 23)
102 .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 426, javax.swing.GroupLayout.PREFERRED_SIZE)
103 .addContainerGap(30, Short.MAX_VALUE))
104 );
105 layout.setVerticalGroup(
106 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
107 .addGroup(layout.createSequentialGroup()
108 .addGap(18, 18, 18)
109 .addComponent(jLabel1)
110 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
111 .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)
112 .addGap(18, 18, 18)
113 .addComponent(jLabel2)
114 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
115 .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
116 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
117 .addComponent(jButton1)
118 .addContainerGap(30, Short.MAX_VALUE))
119 );
120
121 pack();
122 }// </editor-fold>//GEN-END:initComponents
123
124 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
125 StepEndResults.ok = true;
126 this.setVisible(false);
127 }//GEN-LAST:event_jButton1ActionPerformed
128
129 /**
130 * @param args the command line arguments
131 */
132 public static void main(String args[]) {
133 java.awt.EventQueue.invokeLater(new Runnable() {
134 public void run() {
135 Step1 dialog = new Step1(new javax.swing.JFrame(), true);
136 dialog.addWindowListener(new java.awt.event.WindowAdapter() {
137 public void windowClosing(java.awt.event.WindowEvent e) {
138 System.exit(0);
139 }
140 });
141 dialog.setVisible(true);
142 }
143 });
144 }
145
146 // Variables declaration - do not modify//GEN-BEGIN:variables
147 private javax.swing.JButton jButton1;
148 private javax.swing.JLabel jLabel1;
149 private javax.swing.JLabel jLabel2;
150 private javax.swing.JScrollPane jScrollPane1;
151 private javax.swing.JScrollPane jScrollPane2;
152 private javax.swing.JTextArea jTextArea1;
153 private javax.swing.JTextArea jTextArea2;
154 // End of variables declaration//GEN-END:variables
155
156}
diff --git a/client/trunk/src/com/fourisland/instadisc/FirstRun/Step2.form b/client/trunk/src/com/fourisland/instadisc/FirstRun/Step2.form new file mode 100644 index 0000000..e408762 --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/FirstRun/Step2.form
@@ -0,0 +1,176 @@
1<?xml version="1.0" encoding="UTF-8" ?>
2
3<Form version="1.5" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
4 <Properties>
5 <Property name="defaultCloseOperation" type="int" value="2"/>
6 <Property name="name" type="java.lang.String" value="Form" noResource="true"/>
7 </Properties>
8 <SyntheticProperties>
9 <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
10 </SyntheticProperties>
11 <AuxValues>
12 <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
13 <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
14 <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
15 <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
16 <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
17 <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
18 <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
19 <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
20 </AuxValues>
21
22 <Layout>
23 <DimensionLayout dim="0">
24 <Group type="103" groupAlignment="0" attributes="0">
25 <Group type="102" attributes="0">
26 <Group type="103" groupAlignment="0" attributes="0">
27 <Group type="102" alignment="0" attributes="0">
28 <EmptySpace max="-2" attributes="0"/>
29 <Group type="103" groupAlignment="0" attributes="0">
30 <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
31 <Group type="102" alignment="0" attributes="0">
32 <EmptySpace min="12" pref="12" max="12" attributes="0"/>
33 <Group type="103" groupAlignment="0" attributes="0">
34 <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
35 <Component id="jLabel3" min="-2" max="-2" attributes="0"/>
36 <Component id="jLabel4" min="-2" max="-2" attributes="0"/>
37 </Group>
38 <EmptySpace max="-2" attributes="0"/>
39 <Group type="103" groupAlignment="0" attributes="0">
40 <Component id="jTextField2" alignment="0" pref="227" max="32767" attributes="0"/>
41 <Component id="jTextField1" alignment="0" pref="227" max="32767" attributes="0"/>
42 <Component id="jTextField3" alignment="0" pref="227" max="32767" attributes="0"/>
43 </Group>
44 </Group>
45 </Group>
46 </Group>
47 <Group type="102" alignment="1" attributes="0">
48 <EmptySpace max="-2" attributes="0"/>
49 <Component id="jLabel5" pref="322" max="32767" attributes="0"/>
50 <EmptySpace max="-2" attributes="0"/>
51 <Component id="jButton1" min="-2" max="-2" attributes="0"/>
52 </Group>
53 <Group type="102" alignment="1" attributes="0">
54 <EmptySpace min="-2" pref="24" max="-2" attributes="0"/>
55 <Component id="jScrollPane1" pref="364" max="32767" attributes="0"/>
56 </Group>
57 </Group>
58 <EmptySpace max="-2" attributes="0"/>
59 </Group>
60 </Group>
61 </DimensionLayout>
62 <DimensionLayout dim="1">
63 <Group type="103" groupAlignment="0" attributes="0">
64 <Group type="102" alignment="0" attributes="0">
65 <EmptySpace max="-2" attributes="0"/>
66 <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
67 <EmptySpace max="-2" attributes="0"/>
68 <Component id="jScrollPane1" min="-2" max="-2" attributes="0"/>
69 <EmptySpace max="-2" attributes="0"/>
70 <Group type="103" groupAlignment="3" attributes="0">
71 <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
72 <Component id="jTextField1" alignment="3" min="-2" max="-2" attributes="0"/>
73 </Group>
74 <EmptySpace max="-2" attributes="0"/>
75 <Group type="103" groupAlignment="3" attributes="0">
76 <Component id="jTextField2" alignment="3" min="-2" max="-2" attributes="0"/>
77 <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
78 </Group>
79 <EmptySpace max="-2" attributes="0"/>
80 <Group type="103" groupAlignment="3" attributes="0">
81 <Component id="jTextField3" alignment="3" min="-2" max="-2" attributes="0"/>
82 <Component id="jLabel4" alignment="3" min="-2" max="-2" attributes="0"/>
83 </Group>
84 <EmptySpace max="-2" attributes="0"/>
85 <Group type="103" groupAlignment="0" attributes="0">
86 <Component id="jButton1" min="-2" max="-2" attributes="0"/>
87 <Component id="jLabel5" alignment="0" min="-2" pref="40" max="-2" attributes="0"/>
88 </Group>
89 <EmptySpace pref="47" max="32767" attributes="0"/>
90 </Group>
91 </Group>
92 </DimensionLayout>
93 </Layout>
94 <SubComponents>
95 <Component class="javax.swing.JLabel" name="jLabel1">
96 <Properties>
97 <Property name="font" type="java.awt.Font" resourceKey="jLabel1.font"/>
98 <Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
99 <Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
100 </Properties>
101 </Component>
102 <Container class="javax.swing.JScrollPane" name="jScrollPane1">
103 <Properties>
104 <Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
105 </Properties>
106 <AuxValues>
107 <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
108 </AuxValues>
109
110 <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
111 <SubComponents>
112 <Component class="javax.swing.JTextArea" name="jTextArea1">
113 <Properties>
114 <Property name="background" type="java.awt.Color" resourceKey="jTextArea1.background"/>
115 <Property name="columns" type="int" value="20"/>
116 <Property name="editable" type="boolean" value="false"/>
117 <Property name="rows" type="int" value="5"/>
118 <Property name="text" type="java.lang.String" resourceKey="jTextArea1.text"/>
119 <Property name="name" type="java.lang.String" value="jTextArea1" noResource="true"/>
120 </Properties>
121 </Component>
122 </SubComponents>
123 </Container>
124 <Component class="javax.swing.JLabel" name="jLabel2">
125 <Properties>
126 <Property name="text" type="java.lang.String" resourceKey="jLabel2.text"/>
127 <Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
128 </Properties>
129 </Component>
130 <Component class="javax.swing.JTextField" name="jTextField1">
131 <Properties>
132 <Property name="text" type="java.lang.String" resourceKey="jTextField1.text"/>
133 <Property name="name" type="java.lang.String" value="jTextField1" noResource="true"/>
134 </Properties>
135 </Component>
136 <Component class="javax.swing.JTextField" name="jTextField2">
137 <Properties>
138 <Property name="text" type="java.lang.String" resourceKey="jTextField2.text"/>
139 <Property name="name" type="java.lang.String" value="jTextField2" noResource="true"/>
140 </Properties>
141 </Component>
142 <Component class="javax.swing.JTextField" name="jTextField3">
143 <Properties>
144 <Property name="text" type="java.lang.String" resourceKey="jTextField3.text"/>
145 <Property name="name" type="java.lang.String" value="jTextField3" noResource="true"/>
146 </Properties>
147 </Component>
148 <Component class="javax.swing.JLabel" name="jLabel3">
149 <Properties>
150 <Property name="text" type="java.lang.String" resourceKey="jLabel3.text"/>
151 <Property name="name" type="java.lang.String" value="jLabel3" noResource="true"/>
152 </Properties>
153 </Component>
154 <Component class="javax.swing.JLabel" name="jLabel4">
155 <Properties>
156 <Property name="text" type="java.lang.String" resourceKey="jLabel4.text"/>
157 <Property name="name" type="java.lang.String" value="jLabel4" noResource="true"/>
158 </Properties>
159 </Component>
160 <Component class="javax.swing.JLabel" name="jLabel5">
161 <Properties>
162 <Property name="text" type="java.lang.String" resourceKey="jLabel5.text"/>
163 <Property name="name" type="java.lang.String" value="jLabel5" noResource="true"/>
164 </Properties>
165 </Component>
166 <Component class="javax.swing.JButton" name="jButton1">
167 <Properties>
168 <Property name="text" type="java.lang.String" resourceKey="jButton1.text"/>
169 <Property name="name" type="java.lang.String" value="jButton1" noResource="true"/>
170 </Properties>
171 <Events>
172 <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
173 </Events>
174 </Component>
175 </SubComponents>
176</Form>
diff --git a/client/trunk/src/com/fourisland/instadisc/FirstRun/Step2.java b/client/trunk/src/com/fourisland/instadisc/FirstRun/Step2.java new file mode 100644 index 0000000..5460bc4 --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/FirstRun/Step2.java
@@ -0,0 +1,219 @@
1/*
2 * Step2.java
3 *
4 * Created on July 28, 2008, 4:18 PM
5 */
6package com.fourisland.instadisc.FirstRun;
7
8import com.fourisland.instadisc.Database.Wrapper;
9import com.fourisland.instadisc.XmlRpc;
10import java.net.MalformedURLException;
11import java.net.URL;
12
13/**
14 *
15 * @author hatkirby
16 */
17public class Step2 extends javax.swing.JDialog {
18
19 /** Creates new form Step2 */
20 public Step2(java.awt.Frame parent, boolean modal) {
21 super(parent, modal);
22 initComponents();
23 }
24
25 /** This method is called from within the constructor to
26 * initialize the form.
27 * WARNING: Do NOT modify this code. The content of this method is
28 * always regenerated by the Form Editor.
29 */
30 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
31 private void initComponents() {
32
33 jLabel1 = new javax.swing.JLabel();
34 jScrollPane1 = new javax.swing.JScrollPane();
35 jTextArea1 = new javax.swing.JTextArea();
36 jLabel2 = new javax.swing.JLabel();
37 jTextField1 = new javax.swing.JTextField();
38 jTextField2 = new javax.swing.JTextField();
39 jTextField3 = new javax.swing.JTextField();
40 jLabel3 = new javax.swing.JLabel();
41 jLabel4 = new javax.swing.JLabel();
42 jLabel5 = new javax.swing.JLabel();
43 jButton1 = new javax.swing.JButton();
44
45 setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
46 setName("Form"); // NOI18N
47
48 org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(com.fourisland.instadisc.InstaDiscApp.class).getContext().getResourceMap(Step2.class);
49 jLabel1.setFont(resourceMap.getFont("jLabel1.font")); // NOI18N
50 jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
51 jLabel1.setName("jLabel1"); // NOI18N
52
53 jScrollPane1.setName("jScrollPane1"); // NOI18N
54
55 jTextArea1.setBackground(resourceMap.getColor("jTextArea1.background")); // NOI18N
56 jTextArea1.setColumns(20);
57 jTextArea1.setEditable(false);
58 jTextArea1.setRows(5);
59 jTextArea1.setText(resourceMap.getString("jTextArea1.text")); // NOI18N
60 jTextArea1.setName("jTextArea1"); // NOI18N
61 jScrollPane1.setViewportView(jTextArea1);
62
63 jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
64 jLabel2.setName("jLabel2"); // NOI18N
65
66 jTextField1.setText(resourceMap.getString("jTextField1.text")); // NOI18N
67 jTextField1.setName("jTextField1"); // NOI18N
68
69 jTextField2.setText(resourceMap.getString("jTextField2.text")); // NOI18N
70 jTextField2.setName("jTextField2"); // NOI18N
71
72 jTextField3.setText(resourceMap.getString("jTextField3.text")); // NOI18N
73 jTextField3.setName("jTextField3"); // NOI18N
74
75 jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
76 jLabel3.setName("jLabel3"); // NOI18N
77
78 jLabel4.setText(resourceMap.getString("jLabel4.text")); // NOI18N
79 jLabel4.setName("jLabel4"); // NOI18N
80
81 jLabel5.setText(resourceMap.getString("jLabel5.text")); // NOI18N
82 jLabel5.setName("jLabel5"); // NOI18N
83
84 jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N
85 jButton1.setName("jButton1"); // NOI18N
86 jButton1.addActionListener(new java.awt.event.ActionListener() {
87 public void actionPerformed(java.awt.event.ActionEvent evt) {
88 jButton1ActionPerformed(evt);
89 }
90 });
91
92 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
93 getContentPane().setLayout(layout);
94 layout.setHorizontalGroup(
95 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
96 .addGroup(layout.createSequentialGroup()
97 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
98 .addGroup(layout.createSequentialGroup()
99 .addContainerGap()
100 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
101 .addComponent(jLabel1)
102 .addGroup(layout.createSequentialGroup()
103 .addGap(12, 12, 12)
104 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
105 .addComponent(jLabel2)
106 .addComponent(jLabel3)
107 .addComponent(jLabel4))
108 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
109 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
110 .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 227, Short.MAX_VALUE)
111 .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 227, Short.MAX_VALUE)
112 .addComponent(jTextField3, javax.swing.GroupLayout.DEFAULT_SIZE, 227, Short.MAX_VALUE)))))
113 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
114 .addContainerGap()
115 .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, 322, Short.MAX_VALUE)
116 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
117 .addComponent(jButton1))
118 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
119 .addGap(24, 24, 24)
120 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 364, Short.MAX_VALUE)))
121 .addContainerGap())
122 );
123 layout.setVerticalGroup(
124 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
125 .addGroup(layout.createSequentialGroup()
126 .addContainerGap()
127 .addComponent(jLabel1)
128 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
129 .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
130 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
131 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
132 .addComponent(jLabel2)
133 .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
134 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
135 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
136 .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
137 .addComponent(jLabel3))
138 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
139 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
140 .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
141 .addComponent(jLabel4))
142 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
143 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
144 .addComponent(jButton1)
145 .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE))
146 .addContainerGap(47, Short.MAX_VALUE))
147 );
148
149 pack();
150 }// </editor-fold>//GEN-END:initComponents
151 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
152 if (jTextField1.getText().equals("")) {
153 jLabel5.setText("Error: You forgot to enter a username");
154 } else {
155 if (jTextField2.getText().equals("")) {
156 jLabel5.setText("Error: You forgot to enter a password");
157 } else {
158 if (jTextField3.getText().equals("")) {
159 jLabel5.setText("Error: You forgot to enter a Central Server URL");
160 } else {
161 try {
162 URL url = new URL(jTextField3.getText());
163
164 XmlRpc xmlrpc = new XmlRpc("checkRegistration", jTextField3.getText(), jTextField1.getText(), jTextField2.getText());
165 Integer r = (Integer) xmlrpc.execute();
166
167 if (r == 1)
168 {
169 jLabel5.setText("Error: No registration exists on the specified Central Server with the specified UN/PW combination");
170 } else {
171 Wrapper.setConfig("username", jTextField1.getText());
172 Wrapper.setConfig("password", jTextField2.getText());
173 Wrapper.setConfig("centralServerURL", jTextField3.getText());
174
175 StepEndResults.ok = true;
176 this.setVisible(false);
177 }
178 } catch (MalformedURLException ex) {
179 jLabel5.setText("Error: The Central Server URL is malformed");
180 } catch (NullPointerException ex) {
181 jLabel5.setText("Error: The Central Server URL specified does not exist");
182 }
183 }
184 }
185 }
186 }//GEN-LAST:event_jButton1ActionPerformed
187
188 /**
189 * @param args the command line arguments
190 */
191 public static void main(String args[]) {
192 java.awt.EventQueue.invokeLater(new Runnable() {
193
194 public void run() {
195 Step2 dialog = new Step2(new javax.swing.JFrame(), true);
196 dialog.addWindowListener(new java.awt.event.WindowAdapter() {
197
198 public void windowClosing(java.awt.event.WindowEvent e) {
199 System.exit(0);
200 }
201 });
202 dialog.setVisible(true);
203 }
204 });
205 }
206 // Variables declaration - do not modify//GEN-BEGIN:variables
207 private javax.swing.JButton jButton1;
208 private javax.swing.JLabel jLabel1;
209 private javax.swing.JLabel jLabel2;
210 private javax.swing.JLabel jLabel3;
211 private javax.swing.JLabel jLabel4;
212 private javax.swing.JLabel jLabel5;
213 private javax.swing.JScrollPane jScrollPane1;
214 private javax.swing.JTextArea jTextArea1;
215 private javax.swing.JTextField jTextField1;
216 private javax.swing.JTextField jTextField2;
217 private javax.swing.JTextField jTextField3;
218 // End of variables declaration//GEN-END:variables
219}
diff --git a/client/trunk/src/com/fourisland/instadisc/FirstRun/Step3.form b/client/trunk/src/com/fourisland/instadisc/FirstRun/Step3.form new file mode 100644 index 0000000..473876c --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/FirstRun/Step3.form
@@ -0,0 +1,100 @@
1<?xml version="1.0" encoding="UTF-8" ?>
2
3<Form version="1.5" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
4 <Properties>
5 <Property name="defaultCloseOperation" type="int" value="2"/>
6 <Property name="name" type="java.lang.String" value="Form" noResource="true"/>
7 </Properties>
8 <SyntheticProperties>
9 <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
10 </SyntheticProperties>
11 <AuxValues>
12 <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
13 <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
14 <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
15 <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
16 <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
17 <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
18 <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
19 <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
20 </AuxValues>
21
22 <Layout>
23 <DimensionLayout dim="0">
24 <Group type="103" groupAlignment="0" attributes="0">
25 <Group type="102" attributes="0">
26 <Group type="103" groupAlignment="0" attributes="0">
27 <Group type="102" attributes="0">
28 <EmptySpace max="-2" attributes="0"/>
29 <Group type="103" groupAlignment="0" attributes="0">
30 <Group type="102" alignment="0" attributes="0">
31 <EmptySpace min="12" pref="12" max="12" attributes="0"/>
32 <Component id="jScrollPane1" pref="364" max="32767" attributes="0"/>
33 </Group>
34 <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
35 </Group>
36 </Group>
37 <Group type="102" alignment="0" attributes="0">
38 <EmptySpace min="-2" pref="167" max="-2" attributes="0"/>
39 <Component id="jButton1" min="-2" max="-2" attributes="0"/>
40 </Group>
41 </Group>
42 <EmptySpace max="-2" attributes="0"/>
43 </Group>
44 </Group>
45 </DimensionLayout>
46 <DimensionLayout dim="1">
47 <Group type="103" groupAlignment="0" attributes="0">
48 <Group type="102" alignment="0" attributes="0">
49 <EmptySpace max="-2" attributes="0"/>
50 <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
51 <EmptySpace max="-2" attributes="0"/>
52 <Component id="jScrollPane1" min="-2" pref="104" max="-2" attributes="0"/>
53 <EmptySpace max="-2" attributes="0"/>
54 <Component id="jButton1" min="-2" max="-2" attributes="0"/>
55 <EmptySpace max="32767" attributes="0"/>
56 </Group>
57 </Group>
58 </DimensionLayout>
59 </Layout>
60 <SubComponents>
61 <Component class="javax.swing.JLabel" name="jLabel1">
62 <Properties>
63 <Property name="font" type="java.awt.Font" resourceKey="jLabel1.font"/>
64 <Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
65 <Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
66 </Properties>
67 </Component>
68 <Container class="javax.swing.JScrollPane" name="jScrollPane1">
69 <Properties>
70 <Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
71 </Properties>
72 <AuxValues>
73 <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
74 </AuxValues>
75
76 <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
77 <SubComponents>
78 <Component class="javax.swing.JTextArea" name="jTextArea1">
79 <Properties>
80 <Property name="background" type="java.awt.Color" resourceKey="jTextArea1.background"/>
81 <Property name="columns" type="int" value="20"/>
82 <Property name="editable" type="boolean" value="false"/>
83 <Property name="rows" type="int" value="5"/>
84 <Property name="text" type="java.lang.String" resourceKey="jTextArea1.text"/>
85 <Property name="name" type="java.lang.String" value="jTextArea1" noResource="true"/>
86 </Properties>
87 </Component>
88 </SubComponents>
89 </Container>
90 <Component class="javax.swing.JButton" name="jButton1">
91 <Properties>
92 <Property name="text" type="java.lang.String" resourceKey="jButton1.text"/>
93 <Property name="name" type="java.lang.String" value="jButton1" noResource="true"/>
94 </Properties>
95 <Events>
96 <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
97 </Events>
98 </Component>
99 </SubComponents>
100</Form>
diff --git a/client/trunk/src/com/fourisland/instadisc/FirstRun/Step3.java b/client/trunk/src/com/fourisland/instadisc/FirstRun/Step3.java new file mode 100644 index 0000000..5eb7840 --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/FirstRun/Step3.java
@@ -0,0 +1,122 @@
1/*
2 * Step3.java
3 *
4 * Created on July 28, 2008, 4:51 PM
5 */
6
7package com.fourisland.instadisc.FirstRun;
8
9/**
10 *
11 * @author hatkirby
12 */
13public class Step3 extends javax.swing.JDialog {
14
15 /** Creates new form Step3 */
16 public Step3(java.awt.Frame parent, boolean modal) {
17 super(parent, modal);
18 initComponents();
19 }
20
21 /** This method is called from within the constructor to
22 * initialize the form.
23 * WARNING: Do NOT modify this code. The content of this method is
24 * always regenerated by the Form Editor.
25 */
26 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
27 private void initComponents() {
28
29 jLabel1 = new javax.swing.JLabel();
30 jScrollPane1 = new javax.swing.JScrollPane();
31 jTextArea1 = new javax.swing.JTextArea();
32 jButton1 = new javax.swing.JButton();
33
34 setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
35 setName("Form"); // NOI18N
36
37 org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(com.fourisland.instadisc.InstaDiscApp.class).getContext().getResourceMap(Step3.class);
38 jLabel1.setFont(resourceMap.getFont("jLabel1.font")); // NOI18N
39 jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
40 jLabel1.setName("jLabel1"); // NOI18N
41
42 jScrollPane1.setName("jScrollPane1"); // NOI18N
43
44 jTextArea1.setBackground(resourceMap.getColor("jTextArea1.background")); // NOI18N
45 jTextArea1.setColumns(20);
46 jTextArea1.setEditable(false);
47 jTextArea1.setRows(5);
48 jTextArea1.setText(resourceMap.getString("jTextArea1.text")); // NOI18N
49 jTextArea1.setName("jTextArea1"); // NOI18N
50 jScrollPane1.setViewportView(jTextArea1);
51
52 jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N
53 jButton1.setName("jButton1"); // NOI18N
54 jButton1.addActionListener(new java.awt.event.ActionListener() {
55 public void actionPerformed(java.awt.event.ActionEvent evt) {
56 jButton1ActionPerformed(evt);
57 }
58 });
59
60 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
61 getContentPane().setLayout(layout);
62 layout.setHorizontalGroup(
63 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
64 .addGroup(layout.createSequentialGroup()
65 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
66 .addGroup(layout.createSequentialGroup()
67 .addContainerGap()
68 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
69 .addGroup(layout.createSequentialGroup()
70 .addGap(12, 12, 12)
71 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 364, Short.MAX_VALUE))
72 .addComponent(jLabel1)))
73 .addGroup(layout.createSequentialGroup()
74 .addGap(167, 167, 167)
75 .addComponent(jButton1)))
76 .addContainerGap())
77 );
78 layout.setVerticalGroup(
79 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
80 .addGroup(layout.createSequentialGroup()
81 .addContainerGap()
82 .addComponent(jLabel1)
83 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
84 .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)
85 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
86 .addComponent(jButton1)
87 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
88 );
89
90 pack();
91 }// </editor-fold>//GEN-END:initComponents
92
93 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
94 StepEndResults.ok = true;
95 this.setVisible(false);
96 }//GEN-LAST:event_jButton1ActionPerformed
97
98 /**
99 * @param args the command line arguments
100 */
101 public static void main(String args[]) {
102 java.awt.EventQueue.invokeLater(new Runnable() {
103 public void run() {
104 Step3 dialog = new Step3(new javax.swing.JFrame(), true);
105 dialog.addWindowListener(new java.awt.event.WindowAdapter() {
106 public void windowClosing(java.awt.event.WindowEvent e) {
107 System.exit(0);
108 }
109 });
110 dialog.setVisible(true);
111 }
112 });
113 }
114
115 // Variables declaration - do not modify//GEN-BEGIN:variables
116 private javax.swing.JButton jButton1;
117 private javax.swing.JLabel jLabel1;
118 private javax.swing.JScrollPane jScrollPane1;
119 private javax.swing.JTextArea jTextArea1;
120 // End of variables declaration//GEN-END:variables
121
122}
diff --git a/client/trunk/src/com/fourisland/instadisc/FirstRun/StepEndResults.java b/client/trunk/src/com/fourisland/instadisc/FirstRun/StepEndResults.java new file mode 100644 index 0000000..ccdd4b9 --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/FirstRun/StepEndResults.java
@@ -0,0 +1,16 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5
6package com.fourisland.instadisc.FirstRun;
7
8/**
9 *
10 * @author hatkirby
11 */
12public class StepEndResults {
13
14 public static boolean ok = false;
15
16}
diff --git a/client/trunk/src/com/fourisland/instadisc/FirstRun/resources/Step1.properties b/client/trunk/src/com/fourisland/instadisc/FirstRun/resources/Step1.properties new file mode 100644 index 0000000..8da8235 --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/FirstRun/resources/Step1.properties
@@ -0,0 +1,11 @@
1jLabel1.text=Welcome to the InstaDisc FirstRun Wizard!
2jTextArea1.text=This is, apparently, the first time you've run InstaDisc, so you need to step through me before being able to use InstaDisc.\n\nFirst, ensure that you've chosen and signed up for a Central Server. If you haven't, or don't even know what that means, please read:\n
3#NOI18N
4jTextArea1.background=239, 235, 231
5jLabel2.text=<html><a href="http://fourisland.com/projects/instadisc/wiki/ChoosingACentralServer">Choosing a Central Server</a>
6#NOI18N
7jLabel1.font=DejaVu Sans-Plain-18
8jTextArea2.text=before continuing. If you do know what you're doing, feel free to click on the NEXT button and get on with InstaDisc.
9#NOI18N
10jTextArea2.background=239, 235, 231
11jButton1.text=Next
diff --git a/client/trunk/src/com/fourisland/instadisc/FirstRun/resources/Step2.properties b/client/trunk/src/com/fourisland/instadisc/FirstRun/resources/Step2.properties new file mode 100644 index 0000000..0c1f735 --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/FirstRun/resources/Step2.properties
@@ -0,0 +1,14 @@
1jLabel1.text=Central Server Details
2#NOI18N
3jLabel1.font=DejaVu Sans-Plain-18
4jTextArea1.text=To use InstaDisc, you must have chosen and signed up\nfor a Central Server. Please input below the details it\ngave you after registration.
5#NOI18N
6jTextArea1.background=239, 235, 231
7jLabel2.text=Username:
8jTextField1.text=
9jTextField2.text=
10jTextField3.text=
11jLabel3.text=Password:
12jLabel4.text=Central Server URL:
13jLabel5.text=
14jButton1.text=Next
diff --git a/client/trunk/src/com/fourisland/instadisc/FirstRun/resources/Step3.properties b/client/trunk/src/com/fourisland/instadisc/FirstRun/resources/Step3.properties new file mode 100644 index 0000000..948623f --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/FirstRun/resources/Step3.properties
@@ -0,0 +1,7 @@
1jLabel1.text=Congradulations
2#NOI18N
3jLabel1.font=DejaVu Sans-Plain-18
4jTextArea1.text=YAY! You've successfully set up InstaDisc. To start using\nInstaDisc, quit this wizard (the DONE button), open\nInstaDisc again, and have fun!\n\nIf you're ever confused, remember, the Help menu is\nyour friend.
5#NOI18N
6jTextArea1.background=239, 235, 231
7jButton1.text=Done
diff --git a/client/trunk/src/com/fourisland/instadisc/InstaDiscApp.java b/client/trunk/src/com/fourisland/instadisc/InstaDiscApp.java index 806460a..ffac22d 100644 --- a/client/trunk/src/com/fourisland/instadisc/InstaDiscApp.java +++ b/client/trunk/src/com/fourisland/instadisc/InstaDiscApp.java
@@ -1,9 +1,11 @@
1/* 1/*
2 * InstaDiscApp.java 2 * InstaDiscApp.java
3 */ 3 */
4
5package com.fourisland.instadisc; 4package com.fourisland.instadisc;
6 5
6import com.fourisland.instadisc.Database.Wrapper;
7import com.fourisland.instadisc.FirstRun.FirstRunWizard;
8import java.io.File;
7import org.jdesktop.application.Application; 9import org.jdesktop.application.Application;
8import org.jdesktop.application.SingleFrameApplication; 10import org.jdesktop.application.SingleFrameApplication;
9 11
@@ -15,7 +17,8 @@ public class InstaDiscApp extends SingleFrameApplication {
15 /** 17 /**
16 * At startup create and show the main frame of the application. 18 * At startup create and show the main frame of the application.
17 */ 19 */
18 @Override protected void startup() { 20 @Override
21 protected void startup() {
19 show(new InstaDiscView(this)); 22 show(new InstaDiscView(this));
20 } 23 }
21 24
@@ -24,7 +27,8 @@ public class InstaDiscApp extends SingleFrameApplication {
24 * Windows shown in our application come fully initialized from the GUI 27 * Windows shown in our application come fully initialized from the GUI
25 * builder, so this additional configuration is not needed. 28 * builder, so this additional configuration is not needed.
26 */ 29 */
27 @Override protected void configureWindow(java.awt.Window root) { 30 @Override
31 protected void configureWindow(java.awt.Window root) {
28 } 32 }
29 33
30 /** 34 /**
@@ -39,6 +43,26 @@ public class InstaDiscApp extends SingleFrameApplication {
39 * Main method launching the application. 43 * Main method launching the application.
40 */ 44 */
41 public static void main(String[] args) { 45 public static void main(String[] args) {
42 launch(InstaDiscApp.class, args); 46 if (args.length > 0) {
47 File db = new File(args[0] + "db");
48 if (!db.exists()) {
49 db.mkdir();
50 }
51
52 Wrapper.init(args[0]);
53 if (args.length > 1) {
54 if (args[1].equals("-r")) {
55 XmlRpc xmlrpc = new XmlRpc("requestRetained");
56 xmlrpc.execute();
57 } else if (args[1].equals("-n")) {
58 Thread th = new Thread(new FirstRunWizard());
59 th.start();
60 }
61 } else {
62 launch(InstaDiscApp.class, args);
63 }
64 } else {
65 System.out.println("Oops, you seem to be running this application incorrectly. Try running it using the startup script provided.");
66 }
43 } 67 }
44} 68}
diff --git a/client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java b/client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java index fcde8d8..55baf28 100644 --- a/client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java +++ b/client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java
@@ -9,6 +9,7 @@ import java.io.IOException;
9import java.io.InputStream; 9import java.io.InputStream;
10import java.net.ServerSocket; 10import java.net.ServerSocket;
11import java.net.Socket; 11import java.net.Socket;
12import java.net.SocketException;
12import java.util.HashMap; 13import java.util.HashMap;
13import java.util.logging.Level; 14import java.util.logging.Level;
14import java.util.logging.Logger; 15import java.util.logging.Logger;
@@ -30,13 +31,15 @@ public class InstaDiscThread implements Runnable {
30 ServerSocket svr = new ServerSocket(); 31 ServerSocket svr = new ServerSocket();
31 java.net.InetSocketAddress addr = new java.net.InetSocketAddress(4444); 32 java.net.InetSocketAddress addr = new java.net.InetSocketAddress(4444);
32 svr.bind(addr); 33 svr.bind(addr);
33 Runtime.getRuntime().addShutdownHook(new Thread(new CloseObjectThread(svr))); 34 Runtime.getRuntime().addShutdownHook(new Thread(new CloseServerSocketThread(svr)));
34 while (!cancelled) { 35 while (!cancelled) {
35 try { 36 try {
36 Socket s = svr.accept(); 37 Socket s = svr.accept();
37 HandleItemThread hit = new HandleItemThread(s); 38 HandleItemThread hit = new HandleItemThread(s);
38 Thread hitt = new Thread(hit); 39 Thread hitt = new Thread(hit);
39 hitt.start(); 40 hitt.start();
41 } catch (SocketException ex) {
42 cancel();
40 } catch (Exception ex) { 43 } catch (Exception ex) {
41 cancel(); 44 cancel();
42 Logger.getLogger(InstaDiscThread.class.getName()).log(Level.SEVERE, null, ex); 45 Logger.getLogger(InstaDiscThread.class.getName()).log(Level.SEVERE, null, ex);
@@ -105,7 +108,7 @@ class HandleItemThread implements Runnable {
105 } catch (IOException ex) { 108 } catch (IOException ex) {
106 Logger.getLogger(HandleItemThread.class.getName()).log(Level.SEVERE, null, ex); 109 Logger.getLogger(HandleItemThread.class.getName()).log(Level.SEVERE, null, ex);
107 } 110 }
108 111
109 Item idI = new Item(headerMap); 112 Item idI = new Item(headerMap);
110 idI.start(); 113 idI.start();
111 } catch (IOException ex) { 114 } catch (IOException ex) {
diff --git a/client/trunk/src/com/fourisland/instadisc/Item/Item.java b/client/trunk/src/com/fourisland/instadisc/Item/Item.java index fd52d5f..56bc03c 100644 --- a/client/trunk/src/com/fourisland/instadisc/Item/Item.java +++ b/client/trunk/src/com/fourisland/instadisc/Item/Item.java
@@ -5,6 +5,7 @@
5 5
6package com.fourisland.instadisc.Item; 6package com.fourisland.instadisc.Item;
7 7
8import com.fourisland.instadisc.XmlRpc;
8import java.util.HashMap; 9import java.util.HashMap;
9 10
10/** 11/**
@@ -25,7 +26,9 @@ public class Item {
25 WellFormedItem wfi = new WellFormedItem(this); 26 WellFormedItem wfi = new WellFormedItem(this);
26 if (wfi.check()) 27 if (wfi.check())
27 { 28 {
28 29 XmlRpc xmlrpc = new XmlRpc("deleteItem");
30 xmlrpc.addParam(Integer.decode(headerMap.get("ID")));
31 xmlrpc.execute();
29 } 32 }
30 } 33 }
31} 34}
diff --git a/client/trunk/src/com/fourisland/instadisc/Item/Verification.java b/client/trunk/src/com/fourisland/instadisc/Item/Verification.java new file mode 100644 index 0000000..57c69f4 --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/Item/Verification.java
@@ -0,0 +1,68 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5package com.fourisland.instadisc.Item;
6
7import com.fourisland.instadisc.Database.Wrapper;
8import java.util.Random;
9
10/**
11 *
12 * @author hatkirby
13 */
14public class Verification {
15
16 private String username;
17 private String hash;
18 private int id;
19
20 public Verification() {
21 Random r = new Random();
22 id = r.nextInt(Integer.MAX_VALUE);
23 username = Wrapper.getConfig("username");
24 String temp = username + ":" + Wrapper.getConfig("password") + ":" + id;
25 MD5 md5 = new MD5(temp);
26 hash = md5.hash();
27 }
28
29 public Verification(int ID) throws VerificationIDReusedException {
30 id = ID;
31 if (Wrapper.containsOldVerID(id)) {
32 throw new VerificationIDReusedException();
33 } else {
34 if (Wrapper.countOldVerID() == 100) {
35 Wrapper.emptyOldVerID();
36 }
37 Wrapper.addOldVerID(id);
38 }
39
40 username = Wrapper.getConfig("username");
41 String temp = username + ":" + Wrapper.getConfig("password") + ":" + id;
42 MD5 md5 = new MD5(temp);
43 hash = md5.hash();
44 System.out.println(temp);
45 }
46
47 public Verification(String username, String password) {
48 Random r = new Random();
49 id = r.nextInt(Integer.MAX_VALUE);
50 String temp = username + ":" + password + ":" + id;
51 MD5 md5 = new MD5(temp);
52 hash = md5.hash();
53 this.username = username;
54 }
55
56 public String getUsername()
57 {
58 return username;
59 }
60
61 public String getHash() {
62 return hash;
63 }
64
65 public int getID() {
66 return id;
67 }
68}
diff --git a/client/trunk/src/com/fourisland/instadisc/Item/VerificationIDReusedException.java b/client/trunk/src/com/fourisland/instadisc/Item/VerificationIDReusedException.java new file mode 100644 index 0000000..e56f60e --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/Item/VerificationIDReusedException.java
@@ -0,0 +1,17 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5
6package com.fourisland.instadisc.Item;
7
8/**
9 *
10 * @author hatkirby
11 */
12class VerificationIDReusedException extends SecurityException {
13
14 public VerificationIDReusedException() {
15 }
16
17}
diff --git a/client/trunk/src/com/fourisland/instadisc/XmlRpc.java b/client/trunk/src/com/fourisland/instadisc/XmlRpc.java new file mode 100644 index 0000000..8c22155 --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/XmlRpc.java
@@ -0,0 +1,84 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5package com.fourisland.instadisc;
6
7import com.fourisland.instadisc.Database.Wrapper;
8import com.fourisland.instadisc.Item.Verification;
9import java.net.MalformedURLException;
10import java.net.URL;
11import java.util.logging.Level;
12import java.util.logging.Logger;
13import org.apache.xmlrpc.XmlRpcException;
14import org.apache.xmlrpc.client.XmlRpcClient;
15import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
16
17/**
18 *
19 * @author hatkirby
20 */
21public class XmlRpc {
22
23 private String function;
24 private Object[] params;
25 private int step = 3;
26 private String url = "";
27
28 public XmlRpc(String function) {
29 this.function = function;
30 if (url.equals(""))
31 {
32 url = Wrapper.getConfig("centralServerURL");
33 }
34
35 Verification ver = new Verification();
36 params = new Object[3];
37 params[0] = ver.getUsername();
38 params[1] = ver.getHash();
39 params[2] = ver.getID();
40 }
41
42 public XmlRpc(String function, String url, String username, String password)
43 {
44 this.function = function;
45 this.url = url;
46
47 Verification ver = new Verification(username, password);
48 params = new Object[3];
49 params[0] = ver.getUsername();
50 params[1] = ver.getHash();
51 params[2] = ver.getID();
52 }
53
54 public void addParam(Object param)
55 {
56 Object oldParams[] = params;
57 Object temp[] = new Object[step+1];
58 int i=0;
59 for (i=0;i<step;i++)
60 {
61 temp[i] = oldParams[i];
62 }
63 temp[step] = param;
64 step++;
65 params = temp;
66 }
67
68 public Object execute() {
69 Object result = null;
70 try {
71 XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
72 config.setServerURL(new URL(url));
73 XmlRpcClient client = new XmlRpcClient();
74 client.setConfig(config);
75
76 result = client.execute("InstaDisc." + function, params);
77 } catch (XmlRpcException ex) {
78 Logger.getLogger(InstaDiscApp.class.getName()).log(Level.SEVERE, null, ex);
79 } catch (MalformedURLException ex) {
80 Logger.getLogger(InstaDiscApp.class.getName()).log(Level.SEVERE, null, ex);
81 }
82 return result;
83 }
84}