mappum 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.3
1
+ 0.2.4
@@ -8,7 +8,7 @@
8
8
  <groupId>pl.ivmx.mappum</groupId>
9
9
  <artifactId>mappum-core</artifactId>
10
10
  <packaging>jar</packaging>
11
- <version>0.2.0</version>
11
+ <version>0.3.0b2</version>
12
12
  <name>Mappum Java API</name>
13
13
 
14
14
  <properties>
@@ -0,0 +1,151 @@
1
+ /**
2
+ *
3
+ */
4
+ package pl.ivmx.mappum;
5
+
6
+ import java.util.List;
7
+
8
+ import org.jruby.RubyException;
9
+ import org.jruby.exceptions.RaiseException;
10
+
11
+ /**
12
+ * @author Jan Topinski (jtopinski@ivmx.pl)
13
+ *
14
+ */
15
+ public class JavaMappumException extends RuntimeException {
16
+
17
+ /**
18
+ *
19
+ */
20
+ public JavaMappumException() {
21
+ super();
22
+ }
23
+ /**
24
+ * @param arg0
25
+ * @param arg1
26
+ */
27
+ public JavaMappumException(String arg0, RubyException arg1) {
28
+ super(arg0, new RaiseException(arg1));
29
+ }
30
+ /**
31
+ * @param arg0
32
+ * @param arg1
33
+ */
34
+ public JavaMappumException(String arg0, Throwable arg1) {
35
+ super(arg0, arg1);
36
+ }
37
+ /**
38
+ * @param arg0
39
+ */
40
+ public JavaMappumException(String arg0) {
41
+ super(arg0);
42
+ }
43
+ /**
44
+ * @param arg0
45
+ */
46
+ public JavaMappumException(Throwable arg0) {
47
+ super(arg0);
48
+ }
49
+ /**
50
+ * @param arg0
51
+ */
52
+ public JavaMappumException(RubyException arg0) {
53
+ super(new RaiseException(arg0));
54
+ }
55
+ private static final long serialVersionUID = 1L;
56
+
57
+ private String fromName;
58
+ private String toName;
59
+ private Object from;
60
+ private Object to;
61
+ private Object fromRoot;
62
+ private Object toRoot;
63
+ private List<String> mappumBacktrace;
64
+ /**
65
+ *
66
+ *
67
+ * @return the fromName
68
+ */
69
+ public String getFromName() {
70
+ return fromName;
71
+ }
72
+ /**
73
+ * @param fromName the fromName to set
74
+ */
75
+ public void setFromName(String fromName) {
76
+ this.fromName = fromName;
77
+ }
78
+ /**
79
+ * @return the toName
80
+ */
81
+ public String getToName() {
82
+ return toName;
83
+ }
84
+ /**
85
+ * @param toName the toName to set
86
+ */
87
+ public void setToName(String toName) {
88
+ this.toName = toName;
89
+ }
90
+ /**
91
+ * @return the from
92
+ */
93
+ public Object getFrom() {
94
+ return from;
95
+ }
96
+ /**
97
+ * @param from the from to set
98
+ */
99
+ public void setFrom(Object from) {
100
+ this.from = from;
101
+ }
102
+ /**
103
+ * @return the to
104
+ */
105
+ public Object getTo() {
106
+ return to;
107
+ }
108
+ /**
109
+ * @param to the to to set
110
+ */
111
+ public void setTo(Object to) {
112
+ this.to = to;
113
+ }
114
+ /**
115
+ * @return the fromRoot
116
+ */
117
+ public Object getFromRoot() {
118
+ return fromRoot;
119
+ }
120
+ /**
121
+ * @param fromRoot the fromRoot to set
122
+ */
123
+ public void setFromRoot(Object fromRoot) {
124
+ this.fromRoot = fromRoot;
125
+ }
126
+ /**
127
+ * @return the toRoot
128
+ */
129
+ public Object getToRoot() {
130
+ return toRoot;
131
+ }
132
+ /**
133
+ * @param toRoot the toRoot to set
134
+ */
135
+ public void setToRoot(Object toRoot) {
136
+ this.toRoot = toRoot;
137
+ }
138
+ /**
139
+ * @return the mappumBacktrace
140
+ */
141
+ public List<String> getMappumBacktrace() {
142
+ return mappumBacktrace;
143
+ }
144
+ /**
145
+ * @param mappumBacktrace the mappumBacktrace to set
146
+ */
147
+ public void setMappumBacktrace(List<String> mappumBacktrace) {
148
+ this.mappumBacktrace = mappumBacktrace;
149
+ }
150
+
151
+ }
@@ -1,12 +1,44 @@
1
1
  package pl.ivmx.mappum;
2
2
 
3
+ import java.util.Map;
4
+
3
5
  public interface JavaTransform {
4
6
  /**
5
7
  * Transforms Pojo (plain old java bean)
6
8
  * @param from
7
- * @return
9
+ * @return transformed object
8
10
  */
9
- public Object transform(Object from, String map, Object to);
10
- public Object transform(Object from, String map);
11
11
  public Object transform(Object from);
12
- }
12
+ /**
13
+ * Transforms Pojo (plain old java bean)
14
+ * @param from
15
+ * @param map name of map to use
16
+ * @return transformed object
17
+ */
18
+ public Object transform(Object from, String map);
19
+ /**
20
+ * Transforms Pojo (plain old java bean)
21
+ * @param from
22
+ * @param map name of map to use
23
+ * @param to object to change
24
+ * @return transformed object
25
+ */
26
+ public Object transform(Object from, String map, Object to);
27
+ /**
28
+ * Transforms Pojo (plain old java bean)
29
+ * @param from
30
+ * @param map name of map to use
31
+ * @param to object to change
32
+ * @param map of options for now use "context" to store context
33
+ * @return transformed object
34
+ */
35
+ public Object transform(Object from, String map, Object to, Map options);
36
+
37
+ /**
38
+ * Transforms Pojo (plain old java bean)
39
+ * @param from
40
+ * @param map of options for now use "context" to store context
41
+ * @return transformed object
42
+ */
43
+ public Object transform(Object from, Map options);
44
+ }
@@ -9,7 +9,7 @@ import java.util.List;
9
9
  * @author Jan Topinski (jtopinski@ivmx.pl)
10
10
  *
11
11
  */
12
- public interface TreeElement {
12
+ public interface TreeElement extends Comparable<TreeElement>{
13
13
  public String getName();
14
14
  public void setName(String name);
15
15
  public List<TreeElement> getElements();
@@ -1,6 +1,8 @@
1
1
  package iv;
2
2
 
3
3
  import java.util.Date;
4
+ import java.util.Set;
5
+ import java.util.HashMap;
4
6
 
5
7
  public class Client {
6
8
 
@@ -71,12 +73,12 @@ public class Client {
71
73
  private String surname;
72
74
  private String sexId;
73
75
  private String[] phones;
74
- private String[] emails;
76
+ private HashMap emails;
75
77
  private String mainPhone;
76
78
  private String mainPhoneType;
77
79
  private Address address;
78
80
  private String orderBy;
79
- private NameType[] partners;
81
+ private Set<NameType> partners;
80
82
  private Date updated;
81
83
 
82
84
  public Date getUpdated() {
@@ -92,11 +94,11 @@ public class Client {
92
94
  public void setOrderBy(String orderBy) {
93
95
  this.orderBy = orderBy;
94
96
  }
95
- public NameType[] getPartners() {
97
+ public Set<NameType> getPartners() {
96
98
  return partners;
97
99
  }
98
100
 
99
- public void setPartners(NameType[] partners) {
101
+ public void setPartners(Set<NameType> partners) {
100
102
  this.partners = partners;
101
103
  }
102
104
  /**
@@ -186,13 +188,13 @@ public class Client {
186
188
  /**
187
189
  * @return the emails
188
190
  */
189
- public String[] getEmails() {
191
+ public HashMap getEmails() {
190
192
  return emails;
191
193
  }
192
194
  /**
193
195
  * @param emails the emails to set
194
196
  */
195
- public void setEmails(String[] emails) {
197
+ public void setEmails(HashMap emails) {
196
198
  this.emails = emails;
197
199
  }
198
200
  /**
@@ -6,6 +6,8 @@ package pl.ivmx.mappum;
6
6
  import java.util.ArrayList;
7
7
  import java.util.Calendar;
8
8
  import java.util.List;
9
+ import java.util.HashMap;
10
+ import java.util.Map;
9
11
 
10
12
  import iv.Client;
11
13
  import iv.Person;
@@ -16,7 +18,15 @@ import junit.framework.TestCase;
16
18
  *
17
19
  */
18
20
  public class MappumTest extends TestCase {
19
-
21
+ class Context {
22
+ Map properties;
23
+ public Map getProperties() {
24
+ return properties;
25
+ }
26
+ public void setProperties(Map properties) {
27
+ this.properties = properties;
28
+ }
29
+ }
20
30
  /* (non-Javadoc)
21
31
  * @see junit.framework.TestCase#setUp()
22
32
  */
@@ -33,10 +43,62 @@ public class MappumTest extends TestCase {
33
43
  assertEquals(null,treeElement.getClazz());
34
44
  assertEquals("Client",treeElement.getName());
35
45
  assertEquals(false,treeElement.getIsArray());
36
- assertEquals(10,treeElement.getElements().size());
46
+ assertEquals(11,treeElement.getElements().size());
37
47
  wl.cleanup();
38
48
  }
49
+
50
+ public void testError(){
51
+ MappumApi mp = new MappumApi();
52
+ mp.loadMaps();
53
+ JavaTransform jt = mp.getJavaTransform("Error");
54
+
55
+ Person per = newPerson();
56
+ try {
57
+ jt.transform(per);
58
+ fail("Exception shall be thrown");
59
+ } catch (JavaMappumException e) {
60
+ assertTrue(e.getMappumBacktrace().get(0).indexOf("error_map.rb:") > -1);
61
+ assertEquals("/address/wrong", e.getFromName());
62
+ assertEquals("/address/name", e.getToName());
63
+
64
+ assertEquals(per.getAddress(), e.getFrom());
65
+ assertEquals(null, e.getTo());
66
+ //FIXME
67
+ //assertEquals(per, e.getFromRoot());
68
+ assertEquals(null, e.getToRoot());
69
+
70
+ }
71
+
72
+ }
73
+
74
+ public void testContext(){
75
+ MappumApi mp = new MappumApi();
76
+ mp.loadMaps();
77
+ JavaTransform jt = mp.getJavaTransform();
39
78
 
79
+ Person per = newPerson();
80
+ Client cli = null;
81
+ Person person = null;
82
+
83
+ HashMap<String, String> props = new HashMap<String, String>();
84
+ props.put("Title", "Sir");
85
+ Context context = new Context();
86
+ context.setProperties(props);
87
+ HashMap<String, Object> options = new HashMap<String, Object>();
88
+ options.put("context", context);
89
+
90
+ cli = (Client) jt.transform(per, options);
91
+ person = (Person) jt.transform(cli, options);
92
+
93
+ assertEquals("2",cli.getSexId());
94
+ assertEquals("Skoryski",cli.getSurname());
95
+ assertEquals("M",person.getSex());
96
+ assertEquals("Skory",person.getName());
97
+ assertEquals("sir",person.getTitle());
98
+ assertEquals("Skoryski",context.getProperties().get("Name"));
99
+
100
+ }
101
+
40
102
  public void testTransform(){
41
103
  MappumApi mp = new MappumApi();
42
104
  mp.loadMaps();
@@ -46,10 +108,18 @@ public class MappumTest extends TestCase {
46
108
  Client cli = null;
47
109
  Person person = null;
48
110
 
111
+ HashMap<String, String> props = new HashMap<String, String>();
112
+ props.put("Title", "Sir");
113
+ Context context = new Context();
114
+ context.setProperties(props);
115
+ HashMap<String, Object> options = new HashMap<String, Object>();
116
+ options.put("context", context);
117
+
49
118
  long time = System.currentTimeMillis();
50
119
  for (int i = 0; i < 200; i++) {
51
- cli = (Client) jt.transform(per);
52
- person = (Person) jt.transform(cli);
120
+
121
+ cli = (Client) jt.transform(per, options);
122
+ person = (Person) jt.transform(cli, options);
53
123
  }
54
124
  time = System.currentTimeMillis()-time;
55
125
  System.out.println(time);
@@ -58,6 +128,8 @@ public class MappumTest extends TestCase {
58
128
  assertEquals("M",person.getSex());
59
129
  assertEquals("Skory",person.getName());
60
130
  }
131
+
132
+
61
133
  /**
62
134
  * @return
63
135
  */
@@ -94,11 +166,17 @@ public class MappumTest extends TestCase {
94
166
  Runnable task = new Runnable(){
95
167
 
96
168
  public void run() {
169
+ HashMap<String, String> props = new HashMap<String, String>();
170
+ props.put("Title", "Sir");
171
+ Context context = new Context();
172
+ context.setProperties(props);
173
+ HashMap<String, Object> options = new HashMap<String, Object>();
174
+ options.put("context", context);
97
175
 
98
176
  Person per = newPerson();
99
177
  for (int j = 0; j < loops; j++) {
100
- Client cli = (Client) jt.transform(per);
101
- Person person = (Person) jt.transform(cli);
178
+ Client cli = (Client) jt.transform(per, options);
179
+ Person person = (Person) jt.transform(cli, options);
102
180
  }
103
181
  }
104
182
 
@@ -0,0 +1,17 @@
1
+ # Example of map for given object domains CRM and ERP
2
+ require 'mappum'
3
+ require 'java'
4
+ import 'iv.Client'
5
+ import 'iv.Person'
6
+ require 'date'
7
+
8
+ Mappum.catalogue_add "Error" do
9
+
10
+ map Person,Client do |p, c|
11
+ #submaps
12
+ map p.address(Person::Address) <=> c.address(Client::Address) do |a, b|
13
+ map a.wrong <=> b.name
14
+ end
15
+
16
+ end
17
+ end
@@ -10,8 +10,10 @@ Mappum.catalogue_add do
10
10
  map Person,Client do |p, c|
11
11
 
12
12
  #simple mapping
13
- map p.title <=> c.title
13
+ map p.title <=> context.properties["Title"]
14
14
 
15
+ map context.properties["Name"] << c.surname
16
+
15
17
  #map with simple function call
16
18
  map p.person_id << c.cid.downcase
17
19
  map p.person_id.upcase >> c.cid
@@ -41,11 +43,11 @@ Mappum.catalogue_add do
41
43
  map p.email2 <=> c.emails[1]
42
44
  map p.email3 <=> c.emails[2]
43
45
 
44
- map p.spouse(Person) <=> c.partners(Client::NameType)[0] do |ps,cp|
46
+ map p.spouse(Person) <=> c.partners(Client::NameType).find{|cp|cp.type == "Wife"} do |ps,cp|
45
47
  map ps.name <=> cp.name
46
48
  "Wife" >> cp.type
47
49
  end
48
- map p.spouse(Person) <=> c.partners(Client::NameType)[1] do |ps,cp|
50
+ map p.spouse(Person) <=> c.partners(Client::NameType).find{|cp|cp.type == "Friend"} do |ps,cp|
49
51
  map ps.name <=> cp.name
50
52
  "Friend" >> cp.type
51
53
  end