j2j 0.1.1 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +56 -16
- data/j2j.gemspec +16 -4
- data/lib/j2j.rb +1 -17
- data/lib/j2j/converter.rb +53 -30
- data/lib/j2j/version.rb +1 -1
- metadata +24 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 238f5a8434d7b84e025a144fdb43aa02ee53bcce
|
4
|
+
data.tar.gz: 2cd7fa1a31d5063e2129084bf975e05739576716
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a99af232b6b9da3912f35d61a2463cef16bd1482afbd4f08d2ca67c0b81621e5e6a70e5909b4a653c67a9535a2f6e8987a142f13c932417876be04564dddb389
|
7
|
+
data.tar.gz: fa5d39edff363587293cc591a6c053abbfad96cfbb168234444d0c829286e31b204077ed2a874755e91fd810a511299b3c1c1d8f397c2d4f830263d8c3daf70c
|
data/README.md
CHANGED
@@ -1,36 +1,76 @@
|
|
1
|
-
#
|
1
|
+
# j2j
|
2
2
|
|
3
|
-
|
3
|
+
Convert any **Files.json** to corresponding **Classe.java** files
|
4
4
|
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
6
5
|
|
7
6
|
## Installation
|
8
7
|
|
9
|
-
|
8
|
+
$ gem install j2j
|
9
|
+
|
10
|
+
## Usage
|
11
|
+
|
12
|
+
$ j2j ~/sample.json -o ~/destination_folder
|
13
|
+
|
14
|
+
> `sample.json`:
|
10
15
|
|
11
|
-
```
|
12
|
-
|
16
|
+
```json
|
17
|
+
{
|
18
|
+
"total": 2,
|
19
|
+
"people": [
|
20
|
+
{ "name": "jose" },
|
21
|
+
{ "name": "maria" }
|
22
|
+
]
|
23
|
+
}
|
13
24
|
```
|
14
25
|
|
15
|
-
|
26
|
+
Lets look at the `~/destination_folder`...
|
16
27
|
|
17
|
-
|
28
|
+
The files `Sample.java` and `Person.java` were created
|
18
29
|
|
19
|
-
|
30
|
+
> `Sample.java`:
|
20
31
|
|
21
|
-
|
32
|
+
```java
|
33
|
+
public class Sample {
|
22
34
|
|
23
|
-
|
35
|
+
private Long total;
|
36
|
+
private List<Person> people;
|
37
|
+
|
38
|
+
public Long getTotal() { return total; }
|
39
|
+
public void setTotal(Long total) { this.total = total; }
|
40
|
+
public List<Person> getPerson() { return people; }
|
41
|
+
public void setPerson(List<Person> people) { this.people = people; }
|
42
|
+
|
43
|
+
}
|
44
|
+
```
|
45
|
+
|
46
|
+
> `Person.java`:
|
47
|
+
|
48
|
+
```java
|
49
|
+
public class Person {
|
50
|
+
|
51
|
+
private String name;
|
52
|
+
|
53
|
+
public String getName() { return name; }
|
54
|
+
public void setName(String name) { this.name = name; }
|
55
|
+
|
56
|
+
}
|
57
|
+
```
|
58
|
+
|
59
|
+
... and you're golden :)
|
24
60
|
|
25
|
-
|
61
|
+
# Advanced
|
26
62
|
|
27
|
-
|
63
|
+
| Param | Shortcut | Default value | Usage |
|
64
|
+
|:------------:|:---------:| :------------:|:------------|
|
65
|
+
| root_class | -r | Example.java | $ **j2j ~/file.json -r Person** |
|
66
|
+
| package | -p | com.example | $ **j2j ~/file.json -p com.company** |
|
67
|
+
| output | -o | out | $ **j2j ~/file.json -o src/** |
|
28
68
|
|
29
|
-
|
69
|
+
Complete example:
|
70
|
+
> $ j2j ~/file.json -r Person -p com.compay -o src/
|
30
71
|
|
31
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
32
72
|
|
33
73
|
## Contributing
|
34
74
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
75
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/cesarferreira/j2j.
|
36
76
|
|
data/j2j.gemspec
CHANGED
@@ -10,8 +10,20 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["cesar.manuel.ferreira@gmail.com"]
|
11
11
|
|
12
12
|
spec.license = 'MIT'
|
13
|
-
spec.summary = %q{Convert any
|
14
|
-
spec.description
|
13
|
+
spec.summary = %q{Convert any Files.json to corresponding Classe.java files}
|
14
|
+
spec.description = <<-EOF
|
15
|
+
Convert any Files.json to corresponding Classe.java files
|
16
|
+
EOF
|
17
|
+
|
18
|
+
#spec.extra_rdoc_files = ['README', 'README.md']
|
19
|
+
|
20
|
+
spec.post_install_message = <<-EOF
|
21
|
+
Thanks for installing!
|
22
|
+
Head here for documentation: https://github.com/cesarferreira/j2j
|
23
|
+
EOF
|
24
|
+
|
25
|
+
spec.metadata = { "issue_tracker" => "https://example/issues" }
|
26
|
+
|
15
27
|
spec.homepage = "https://github.com/cesarferreira/j2j"
|
16
28
|
|
17
29
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
@@ -24,11 +36,11 @@ Gem::Specification.new do |spec|
|
|
24
36
|
spec.add_development_dependency "guard"
|
25
37
|
spec.add_development_dependency "guard-rspec"
|
26
38
|
spec.add_development_dependency "coveralls"
|
39
|
+
spec.add_development_dependency 'pry-byebug', '~> 3.1'
|
27
40
|
|
28
|
-
spec.add_dependency 'pry-byebug', '~> 3.1'
|
29
41
|
spec.add_dependency 'thor', '~> 0.19.1'
|
30
42
|
spec.add_dependency 'colorize', '~> 0.7'
|
31
43
|
spec.add_dependency 'json', '~> 1.8.3'
|
32
|
-
|
44
|
+
spec.add_dependency 'activesupport', '~> 4.2'
|
33
45
|
|
34
46
|
end
|
data/lib/j2j.rb
CHANGED
@@ -10,30 +10,14 @@ module J2j
|
|
10
10
|
|
11
11
|
include Thor::Actions
|
12
12
|
|
13
|
-
no_commands do
|
14
|
-
def log(str)
|
15
|
-
puts str if options[:verbose]
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
def self.source_root
|
21
|
-
File.dirname(__FILE__)
|
22
|
-
end
|
23
|
-
|
24
13
|
desc 'path/to/file.json', 'indicate the path to the file.json'
|
25
14
|
class_option :root_class, :aliases => '-r', :default => 'Example.java'
|
26
15
|
class_option :package, :aliases => '-p', :default => 'com.example'
|
27
|
-
class_option :output, :aliases => '-o', :description => '
|
16
|
+
class_option :output, :aliases => '-o', :description => 'Output folder', :default => 'out'
|
28
17
|
def json(path_to_json)
|
29
|
-
puts "JSON: #{path_to_json}"
|
30
|
-
|
31
18
|
convert(path_to_json, options)
|
32
|
-
|
33
19
|
end
|
34
20
|
|
35
|
-
|
36
|
-
|
37
21
|
# map %w[--version -v] => :__print_version
|
38
22
|
# desc "--version, -v", "print the version"
|
39
23
|
# def __print_version
|
data/lib/j2j/converter.rb
CHANGED
@@ -1,15 +1,12 @@
|
|
1
1
|
require 'json'
|
2
|
-
|
2
|
+
|
3
|
+
require 'active_support'
|
4
|
+
require 'active_support/inflector'
|
3
5
|
|
4
6
|
require_relative './configurator'
|
5
7
|
require_relative './field_details'
|
6
8
|
|
7
9
|
|
8
|
-
@java_classes = {}
|
9
|
-
@java_fields = {}
|
10
|
-
@java_lists = {}
|
11
|
-
@field_info = {}
|
12
|
-
|
13
10
|
##
|
14
11
|
## GET JAVA TYPES
|
15
12
|
##
|
@@ -25,13 +22,13 @@ def get_java_type(value, field_details, key)
|
|
25
22
|
inner_value = get_java_type(value[0], field_details, key)
|
26
23
|
if inner_value == @config.unknown_class
|
27
24
|
inner_value = to_java_class_name(key)
|
28
|
-
if @do_chop
|
29
|
-
|
30
|
-
end
|
31
|
-
inner_value = add_class_prefix_and_suffix(inner_value)
|
25
|
+
# if @do_chop
|
26
|
+
# inner_value.chop!
|
27
|
+
# end
|
32
28
|
setup_data(value[0], key)
|
33
29
|
field_details.write_class_file = true
|
34
30
|
end
|
31
|
+
binding.pry
|
35
32
|
java_type = "List<" + inner_value + ">"
|
36
33
|
elsif value.is_a?(String)
|
37
34
|
java_type = "String"
|
@@ -107,7 +104,8 @@ def to_java_class_name(class_name)
|
|
107
104
|
end
|
108
105
|
end
|
109
106
|
|
110
|
-
|
107
|
+
singular_class_name = java_class_name.singularize
|
108
|
+
return singular_class_name
|
111
109
|
end
|
112
110
|
|
113
111
|
|
@@ -199,9 +197,6 @@ end
|
|
199
197
|
def java_class_output(class_name, parent)
|
200
198
|
|
201
199
|
proper_class_name = to_java_class_name(class_name)
|
202
|
-
if @java_lists[class_name]
|
203
|
-
proper_class_name.chop! if @do_chop
|
204
|
-
end
|
205
200
|
|
206
201
|
field_list = ""
|
207
202
|
list_import = ""
|
@@ -214,15 +209,15 @@ def java_class_output(class_name, parent)
|
|
214
209
|
field_type = @field_info[field].type
|
215
210
|
method_name = to_java_method_name(field)
|
216
211
|
java_field = to_java_field_name(field)
|
212
|
+
|
217
213
|
if @java_fields[field]
|
218
214
|
field_type = to_java_class_name(field)
|
219
215
|
method_name = to_java_method_name(field_type)
|
220
216
|
end
|
217
|
+
|
221
218
|
if (@java_lists[field] and @java_lists[field] == class_name)
|
222
219
|
if @field_info[field].array_type
|
223
220
|
field_type = @field_info[field].array_type
|
224
|
-
elsif @do_chop
|
225
|
-
field_type.chop!
|
226
221
|
end
|
227
222
|
field_type = "List<#{field_type}>"
|
228
223
|
list_import = "import java.util.List;"
|
@@ -234,7 +229,11 @@ def java_class_output(class_name, parent)
|
|
234
229
|
json_annotation = " @SerializedName(\"#{field}\")\n"
|
235
230
|
|
236
231
|
end
|
237
|
-
|
232
|
+
|
233
|
+
json_serialize_import = @config.json_serialize_import
|
234
|
+
|
235
|
+
|
236
|
+
field_list = field_list + json_annotation + " private #{field_type} #{java_field};\n\n"
|
238
237
|
getters_and_setters = getters_and_setters + <<GS
|
239
238
|
|
240
239
|
public #{field_type} get#{method_name}() {
|
@@ -249,7 +248,6 @@ GS
|
|
249
248
|
end
|
250
249
|
|
251
250
|
doc = <<JCO
|
252
|
-
#{@java_class_header}
|
253
251
|
package #@package;
|
254
252
|
|
255
253
|
#{list_import}
|
@@ -275,7 +273,9 @@ JCO
|
|
275
273
|
|
276
274
|
# don't write java file files "primitive" array/list fields
|
277
275
|
if write_file(@field_info[class_name]) == true
|
278
|
-
|
276
|
+
fileName = "#{@config.output_directory}/#{proper_class_name}.java"
|
277
|
+
File.open(fileName, 'w') {|f| f.write(doc) }
|
278
|
+
puts "Creating.... #{fileName.green}"
|
279
279
|
end
|
280
280
|
|
281
281
|
end
|
@@ -286,8 +286,6 @@ end
|
|
286
286
|
##
|
287
287
|
def parse_args(path, params)
|
288
288
|
|
289
|
-
############################## TODO: analise path
|
290
|
-
|
291
289
|
@config.json_file = path
|
292
290
|
@config.package = params[:package]
|
293
291
|
@config.top_level_class = params[:root_class].gsub(/.java/,'')
|
@@ -295,6 +293,27 @@ def parse_args(path, params)
|
|
295
293
|
|
296
294
|
end
|
297
295
|
|
296
|
+
def valid_json?(json)
|
297
|
+
begin
|
298
|
+
JSON.parse(IO.read(json))
|
299
|
+
return true
|
300
|
+
rescue Exception => e
|
301
|
+
return false
|
302
|
+
end
|
303
|
+
end
|
304
|
+
|
305
|
+
def print_intro
|
306
|
+
puts "\nThis are the settings you wanted:"
|
307
|
+
|
308
|
+
puts " JSON file: #{@config.json_file.green}"
|
309
|
+
puts " Java package: #{@config.package.green}"
|
310
|
+
puts " Java top level class: #{@config.top_level_class.green}"
|
311
|
+
puts " Output directory: #{@config.output_directory.green}"
|
312
|
+
|
313
|
+
puts "\n"
|
314
|
+
|
315
|
+
end
|
316
|
+
|
298
317
|
##
|
299
318
|
## DO THE ACTUAL CONVERTING
|
300
319
|
##
|
@@ -310,19 +329,23 @@ def convert(path, options)
|
|
310
329
|
|
311
330
|
parse_args(path, options)
|
312
331
|
|
313
|
-
puts "Using JSON file: #{@config.json_file.green}"
|
314
|
-
puts "Using Java package: #{@config.package.green}"
|
315
|
-
puts "Using Java top level class: #{@config.top_level_class.green}"
|
316
|
-
puts "Using output directory: #{@config.output_directory.green}"
|
317
|
-
|
318
|
-
@package = @config.package
|
319
|
-
|
320
332
|
if !File.exists?(@config.json_file)
|
321
|
-
puts "
|
322
|
-
puts "Try -h flag for help"
|
333
|
+
puts "The file '#{@config.json_file.red}' does not exist!"
|
323
334
|
exit -1
|
335
|
+
else
|
336
|
+
if !valid_json?(@config.json_file)
|
337
|
+
puts "'#{@config.json_file.red}' is not a valid json file!"
|
338
|
+
exit -1
|
339
|
+
end
|
324
340
|
end
|
325
341
|
|
342
|
+
|
343
|
+
print_intro()
|
344
|
+
|
345
|
+
|
346
|
+
@package = @config.package
|
347
|
+
|
348
|
+
|
326
349
|
json_file_contents = IO.read(@config.json_file)
|
327
350
|
json = JSON.parse(json_file_contents)
|
328
351
|
|
data/lib/j2j/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: j2j
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cesar ferreira
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '3.1'
|
90
|
-
type: :
|
90
|
+
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
@@ -136,7 +136,22 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 1.8.3
|
139
|
-
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: activesupport
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '4.2'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '4.2'
|
153
|
+
description: |2
|
154
|
+
Convert any Files.json to corresponding Classe.java files
|
140
155
|
email:
|
141
156
|
- cesar.manuel.ferreira@gmail.com
|
142
157
|
executables:
|
@@ -166,8 +181,11 @@ files:
|
|
166
181
|
homepage: https://github.com/cesarferreira/j2j
|
167
182
|
licenses:
|
168
183
|
- MIT
|
169
|
-
metadata:
|
170
|
-
|
184
|
+
metadata:
|
185
|
+
issue_tracker: https://example/issues
|
186
|
+
post_install_message: |2
|
187
|
+
Thanks for installing!
|
188
|
+
Head here for documentation: https://github.com/cesarferreira/j2j
|
171
189
|
rdoc_options: []
|
172
190
|
require_paths:
|
173
191
|
- lib
|
@@ -186,5 +204,5 @@ rubyforge_project:
|
|
186
204
|
rubygems_version: 2.4.7
|
187
205
|
signing_key:
|
188
206
|
specification_version: 4
|
189
|
-
summary: Convert any
|
207
|
+
summary: Convert any Files.json to corresponding Classe.java files
|
190
208
|
test_files: []
|