mappum 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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