easyfire 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.byebug_history +256 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +43 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/easyfire +5 -0
- data/bin/setup +8 -0
- data/easyfire.gemspec +40 -0
- data/lib/easyfire/cli.rb +23 -0
- data/lib/easyfire/easyfire_model.rb +140 -0
- data/lib/easyfire/renders/helpers.rb +68 -0
- data/lib/easyfire/renders/model.rb +32 -0
- data/lib/easyfire/renders/service.rb +30 -0
- data/lib/easyfire/renders/templates/model.java.erb +220 -0
- data/lib/easyfire/renders/templates/model.swift.erb +62 -0
- data/lib/easyfire/renders/templates/service.java.erb +43 -0
- data/lib/easyfire/renders/templates/service.swift.erb +92 -0
- data/lib/easyfire/renders.rb +7 -0
- data/lib/easyfire/thor/android/build.gradle.tt +100 -0
- data/lib/easyfire/thor/android/build.sbt.tt +17 -0
- data/lib/easyfire/thor/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/lib/easyfire/thor/android/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/lib/easyfire/thor/android/gradle.properties +2 -0
- data/lib/easyfire/thor/android/gradlew +160 -0
- data/lib/easyfire/thor/android/gradlew.bat +90 -0
- data/lib/easyfire/thor/android/pom.xml.tt +76 -0
- data/lib/easyfire/thor/android/settings.gradle.tt +1 -0
- data/lib/easyfire/thor/android/src/main/AndroidManifest.xml.tt +3 -0
- data/lib/easyfire/thor/android.rb +56 -0
- data/lib/easyfire/thor/android_helper/EasyfireDelegate.java.tt +10 -0
- data/lib/easyfire/thor/android_helper/EasyfireListDelegate.java.tt +11 -0
- data/lib/easyfire/thor/android_helper/ModelEF.java.tt +10 -0
- data/lib/easyfire/thor/android_helper/ServiceEF.java.tt +370 -0
- data/lib/easyfire/version.rb +3 -0
- data/lib/easyfire.rb +22 -0
- metadata +170 -0
@@ -0,0 +1,68 @@
|
|
1
|
+
module Easyfire
|
2
|
+
module Renders
|
3
|
+
module Helpers
|
4
|
+
|
5
|
+
attr_accessor :base_package, :version
|
6
|
+
|
7
|
+
@@java_data_types = {
|
8
|
+
String: "String",
|
9
|
+
Long: "Long",
|
10
|
+
Boolean: "Boolean"
|
11
|
+
}
|
12
|
+
|
13
|
+
@@swift_data_types = {
|
14
|
+
String: "String?",
|
15
|
+
Long: "CLong?",
|
16
|
+
Boolean: "Bool?"
|
17
|
+
}
|
18
|
+
|
19
|
+
@@java_defaults = {
|
20
|
+
String: "\"\"",
|
21
|
+
Long: "0L",
|
22
|
+
Boolean: "false"
|
23
|
+
}
|
24
|
+
|
25
|
+
@@swift_defaults = {
|
26
|
+
String: "\"\"",
|
27
|
+
Long: "0",
|
28
|
+
Boolean: "false"
|
29
|
+
}
|
30
|
+
|
31
|
+
def type_to_java_value(data_type)
|
32
|
+
@@java_data_types[data_type] || data_type.to_s
|
33
|
+
end
|
34
|
+
def type_to_swift_value(data_type)
|
35
|
+
@@swift_data_types[data_type]
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
def java_default_value(data_type)
|
40
|
+
@@java_defaults[data_type] || "null"
|
41
|
+
end
|
42
|
+
|
43
|
+
def swift_default_value(data_type)
|
44
|
+
@@swift_defaults[data_type]
|
45
|
+
end
|
46
|
+
|
47
|
+
def extract_spec(spec)
|
48
|
+
@spec = spec
|
49
|
+
@name = spec.model_name.to_s
|
50
|
+
@class_name_ef = spec.model_name.to_s + "EF"
|
51
|
+
@service_class = spec.model_name.to_s + "ServiceEF"
|
52
|
+
@object_name_ef = spec.model_name.to_s.uncapitalize + "EF"
|
53
|
+
@collection_name = spec.model_name.to_s.underscore
|
54
|
+
@declaration = "#{@class_name_ef} #{@object_name_ef}"
|
55
|
+
@description = spec.description
|
56
|
+
@attributes = spec.attributes
|
57
|
+
@belongs_to = spec.associations
|
58
|
+
@parents = spec.parents
|
59
|
+
end
|
60
|
+
|
61
|
+
def generate(template)
|
62
|
+
ERB.new(template).result(binding)
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'byebug'
|
3
|
+
|
4
|
+
module Easyfire
|
5
|
+
|
6
|
+
|
7
|
+
module Renders
|
8
|
+
|
9
|
+
class Model
|
10
|
+
|
11
|
+
include Easyfire::Renders::Helpers
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
@java = File.read("#{Renders::GEM_ROOT}/easyfire/renders/templates/model.java.erb")
|
15
|
+
@swift = File.read("#{Renders::GEM_ROOT}/easyfire/renders/templates/model.swift.erb")
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_java(spec)
|
19
|
+
extract_spec(spec)
|
20
|
+
generate(@java)
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_swift(spec)
|
24
|
+
extract_spec(spec)
|
25
|
+
generate(@swift)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'byebug'
|
3
|
+
|
4
|
+
module Easyfire
|
5
|
+
|
6
|
+
module Renders
|
7
|
+
|
8
|
+
class Service
|
9
|
+
|
10
|
+
include Easyfire::Renders::Helpers
|
11
|
+
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
@java = File.read("#{Renders::GEM_ROOT}/easyfire/renders/templates/service.java.erb")
|
15
|
+
@swift = File.read("#{Renders::GEM_ROOT}/easyfire/renders/templates/service.swift.erb")
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_java(spec)
|
19
|
+
extract_spec(spec)
|
20
|
+
generate(@java)
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_swift(spec)
|
24
|
+
extract_spec(spec)
|
25
|
+
generate(@swift)
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,220 @@
|
|
1
|
+
|
2
|
+
/**********************************************************
|
3
|
+
* <%=@class_name_ef%>.java
|
4
|
+
* <%=@description%>
|
5
|
+
* Version: <%=@version%>
|
6
|
+
* Generated by Easyfire. Do not modify this code
|
7
|
+
**********************************************************/
|
8
|
+
|
9
|
+
package <%=@base_package%>.models;
|
10
|
+
|
11
|
+
import <%=@base_package%>.base.ModelEF;
|
12
|
+
import <%=@base_package%>.services.<%=@service_class%>;
|
13
|
+
<% @attributes.each do |key,value| %><% if value[:association] %>import <%=@base_package%>.models.<%=value[:association]%>EF;
|
14
|
+
import <%=@base_package%>.services.<%=value[:association]%>ServiceEF;
|
15
|
+
<%end%><%end%>
|
16
|
+
import <%=@base_package%>.delegates.EasyfireDelegate;
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
import com.google.firebase.database.Exclude;
|
21
|
+
import com.google.firebase.database.IgnoreExtraProperties;
|
22
|
+
import android.databinding.BaseObservable;
|
23
|
+
import android.support.annotation.NonNull;
|
24
|
+
import java.util.List;
|
25
|
+
import java.util.ArrayList;
|
26
|
+
|
27
|
+
import android.text.TextUtils;
|
28
|
+
|
29
|
+
@IgnoreExtraProperties
|
30
|
+
public class <%= @class_name_ef %> implements ModelEF, Comparable<<%= @class_name_ef %>>{
|
31
|
+
|
32
|
+
public static final String COLLECTION = "<%=@collection_name%>";
|
33
|
+
|
34
|
+
//Firebase attributes
|
35
|
+
@Exclude
|
36
|
+
private String key;
|
37
|
+
|
38
|
+
@Exclude
|
39
|
+
private List<Class> parents = new ArrayList<>();
|
40
|
+
|
41
|
+
@Exclude
|
42
|
+
private String[] parentKeys = new String[]{<%=@parents.map{|e| "\"\""}.join(",")%>};
|
43
|
+
|
44
|
+
|
45
|
+
<%@attributes.each do |key,value|%>
|
46
|
+
<%="//#{value[:description]}" unless value[:description].blank? %>
|
47
|
+
<%="\n @Exclude " if value[:options].include?(:transient)%>private <%=type_to_java_value(value[:type])%> <%=key%> = <%=java_default_value(value[:type])%>;
|
48
|
+
<%end%>
|
49
|
+
|
50
|
+
//Construtores
|
51
|
+
public <%=@class_name_ef%>(){}
|
52
|
+
|
53
|
+
public <%=@class_name_ef%>(String key){
|
54
|
+
this.key = key;
|
55
|
+
}
|
56
|
+
|
57
|
+
//Getters e Setters
|
58
|
+
|
59
|
+
@Exclude
|
60
|
+
public String getKey(){
|
61
|
+
return this.key;
|
62
|
+
}
|
63
|
+
|
64
|
+
@Exclude
|
65
|
+
public void setKey(String key){
|
66
|
+
this.key = key;
|
67
|
+
}
|
68
|
+
|
69
|
+
@Exclude
|
70
|
+
public List<Class> getParents(){
|
71
|
+
return this.parents;
|
72
|
+
}
|
73
|
+
|
74
|
+
@Exclude
|
75
|
+
public void setParents(List<Class> parents){
|
76
|
+
this.parents = parents;
|
77
|
+
}
|
78
|
+
|
79
|
+
@Exclude
|
80
|
+
public String[] getParentKeys(){
|
81
|
+
return this.parentKeys;
|
82
|
+
}
|
83
|
+
|
84
|
+
@Exclude
|
85
|
+
public void setParentKeys(String[] parentKeys){
|
86
|
+
this.parentKeys = parentKeys;
|
87
|
+
}
|
88
|
+
|
89
|
+
@Exclude
|
90
|
+
public void addParentKey(Class clazz,String parentKey){
|
91
|
+
this.parentKeys[getParentLevel(clazz)] = parentKey;
|
92
|
+
}
|
93
|
+
|
94
|
+
@Exclude
|
95
|
+
public int getParentLevel(Class clazz){
|
96
|
+
return this.parents.indexOf(clazz);
|
97
|
+
}
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
@Exclude
|
102
|
+
public String getPath(){
|
103
|
+
|
104
|
+
String path = COLLECTION.concat("/").concat(TextUtils.join("/",parentKeys));
|
105
|
+
if(!path.endsWith("/")){
|
106
|
+
path.concat("/");
|
107
|
+
}
|
108
|
+
|
109
|
+
return path.concat(key);
|
110
|
+
|
111
|
+
}
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
<%@attributes.each do |key,value|%>
|
116
|
+
<%if value[:association] == nil %>
|
117
|
+
<%="@Exclude" if value[:options].include?(:transient)%>
|
118
|
+
public <%=type_to_java_value(value[:type])%> get<%=key.to_s.camelcase%>(){
|
119
|
+
return this.<%=key%>;
|
120
|
+
}
|
121
|
+
<%elsif type_to_java_value(value[:type]) != @name%>
|
122
|
+
@Exclude
|
123
|
+
public void get<%=key.to_s.camelcase%>(final EasyfireDelegate<<%=type_to_java_value(value[:type])%>> delegate) {
|
124
|
+
|
125
|
+
if (this.<%=type_to_java_value(value[:type]).uncapitalize%> == null) {
|
126
|
+
new <%=type_to_java_value(value[:type]).gsub(/EF/,"ServiceEF")%>().retrieve(this.<%=type_to_java_value(value[:type]).uncapitalize.gsub(/EF/,"EFPath")%>, new EasyfireDelegate<<%=type_to_java_value(value[:type])%>>() {
|
127
|
+
@Override
|
128
|
+
public void changed(<%=type_to_java_value(value[:type])%> o) {
|
129
|
+
<%=type_to_java_value(value[:type]).uncapitalize%> = o;
|
130
|
+
delegate.changed(o);
|
131
|
+
}
|
132
|
+
|
133
|
+
@Override
|
134
|
+
public void error(Object object) {
|
135
|
+
delegate.error(object);
|
136
|
+
}
|
137
|
+
});
|
138
|
+
} else {
|
139
|
+
delegate.changed(this.<%=type_to_java_value(value[:type]).uncapitalize%>);
|
140
|
+
}
|
141
|
+
}
|
142
|
+
<%end%>
|
143
|
+
|
144
|
+
|
145
|
+
public void set<%=key.to_s.camelcase%>(<%=type_to_java_value(value[:type])%> <%=key%>){
|
146
|
+
this.<%=key%> = <%=key%>;
|
147
|
+
<%if @parents.include?(value[:type].to_s.gsub("EF","").to_sym)%>
|
148
|
+
this.parentKeys[<%=@parents.index(value[:type].to_s.gsub("EF","").to_sym)%>] = this.<%=key%>.getKey();
|
149
|
+
this.<%=key.to_s.gsub(/EF/,"EFPath")%> = this.<%=key%>.getPath();
|
150
|
+
<%end %>
|
151
|
+
<%if key.to_s.end_with?("EFPath") and @belongs_to[key.to_s.gsub(/EFPath/,'').camelcase.to_sym][:load] == :eager %>
|
152
|
+
this.get<%=key.to_s.camelcase%>();
|
153
|
+
<%end%>
|
154
|
+
}
|
155
|
+
|
156
|
+
<%end%>
|
157
|
+
|
158
|
+
@Override
|
159
|
+
public String toString() {
|
160
|
+
return "<%=@class_name_ef%>{" +
|
161
|
+
"key='" + key + '\'' +
|
162
|
+
<%@attributes.keys.each do |a|%>", <%=a%>='" + <%=a%> + '\'' +
|
163
|
+
<%end%>"}";
|
164
|
+
}
|
165
|
+
|
166
|
+
@Override
|
167
|
+
public boolean equals(Object o) {
|
168
|
+
if (this == o) return true;
|
169
|
+
if (o == null || getClass() != o.getClass()) return false;
|
170
|
+
|
171
|
+
<%=@declaration%> = (<%=@class_name_ef%> ) o;
|
172
|
+
|
173
|
+
return key != null ? key.equals(<%=@object_name_ef%>.key) : <%=@object_name_ef%>.key == null;
|
174
|
+
|
175
|
+
}
|
176
|
+
|
177
|
+
public boolean equalsContent(Object o) {
|
178
|
+
if (this == o) return true;
|
179
|
+
if (o == null || getClass() != o.getClass()) return false;
|
180
|
+
if (!super.equals(o)) return false;
|
181
|
+
|
182
|
+
<%=@declaration%> = (<%=@class_name_ef%> ) o;
|
183
|
+
|
184
|
+
<%@attributes.keys.each do |a|%>
|
185
|
+
if (<%=a%> != null ? !<%=a%>.equals(<%=@object_name_ef%>.<%=a%>) : <%=@object_name_ef%>.<%=a%> != null) {
|
186
|
+
return false;
|
187
|
+
}
|
188
|
+
<%end%>
|
189
|
+
|
190
|
+
return true;
|
191
|
+
|
192
|
+
}
|
193
|
+
|
194
|
+
@Override
|
195
|
+
public int hashCode() {
|
196
|
+
return key != null ? key.hashCode() : 0;
|
197
|
+
}
|
198
|
+
|
199
|
+
|
200
|
+
public boolean isChild(){
|
201
|
+
return parents != null;
|
202
|
+
}
|
203
|
+
|
204
|
+
@Override
|
205
|
+
public int compareTo(@NonNull <%=@declaration%>) {
|
206
|
+
return this.key.compareTo(<%=@object_name_ef%>.getKey());
|
207
|
+
}
|
208
|
+
|
209
|
+
public void store(EasyfireDelegate<<%=@class_name_ef%>> delegate){
|
210
|
+
new <%=@service_class%>().store(this,delegate);
|
211
|
+
}
|
212
|
+
|
213
|
+
public void delete(EasyfireDelegate<Boolean> delegate){
|
214
|
+
new <%=@service_class%>().delete(this,delegate);
|
215
|
+
}
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
|
220
|
+
}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
/**********************************************************
|
2
|
+
* <%=@name%>EM.swift
|
3
|
+
* <%=@description%>
|
4
|
+
* Version: <%=@version%>
|
5
|
+
* Generated by Easyfire. Do not modify this code
|
6
|
+
**********************************************************/
|
7
|
+
|
8
|
+
import Foundation
|
9
|
+
import Firebase
|
10
|
+
|
11
|
+
struct <%= @name %> : Equatable {
|
12
|
+
|
13
|
+
let key: String?
|
14
|
+
|
15
|
+
<%@attributes.each do |key,value|%>
|
16
|
+
//<%=value[:description]%>
|
17
|
+
let <%=key%>: <%=type_to_swift_value(value[:type])%>;
|
18
|
+
<%end%>
|
19
|
+
|
20
|
+
init( <%=@attributes.to_a.map{|e| "#{e[0].to_s}: #{type_to_swift_value(e[1][:type])}"}.join(",\n ")%> ) {
|
21
|
+
|
22
|
+
<%=@attributes.to_a.map{|e| "self.#{e[0].to_s} = #{e[0].to_s}"}.join("\n ")%>
|
23
|
+
|
24
|
+
}
|
25
|
+
|
26
|
+
|
27
|
+
init( snapshot: DataSnapshot ) {
|
28
|
+
|
29
|
+
key = snapshot.key
|
30
|
+
let snapshotValue = snapshot.value as! [String: AnyObject]
|
31
|
+
|
32
|
+
<%=@attributes.to_a.map{|e| "self.#{e[0].to_s} = snapshotValue[\"#{e[0].to_s}\"] as? #{type_to_swift_value(e[1][:type])} ?? #{swift_default_value(e[1][:type])}" }.join("\n ")%>
|
33
|
+
|
34
|
+
}
|
35
|
+
|
36
|
+
|
37
|
+
init( snapshot: DataSnapshot ) {
|
38
|
+
|
39
|
+
key = snapshot.key
|
40
|
+
let snapshotValue = snapshot.value as! [String: AnyObject]
|
41
|
+
|
42
|
+
<%=@attributes.to_a.map{|e| "self.#{e[0].to_s} = snapshotValue[\"#{e[0].to_s}\"] as? #{type_to_swift_value(e[1][:type])} ?? #{swift_default_value(e[1][:type])}" }.join("\n ")%>
|
43
|
+
|
44
|
+
}
|
45
|
+
|
46
|
+
init( key: String ) {
|
47
|
+
|
48
|
+
self.key = key
|
49
|
+
<%=@attributes.to_a.map{|e| "self.#{e[0].to_s} = #{swift_default_value(e[1][:type])}" }.join("\n ")%>
|
50
|
+
}
|
51
|
+
|
52
|
+
func toAnyObject() -> Any {
|
53
|
+
return [
|
54
|
+
<%=@attributes.to_a.map{|e| "\"#{e[0].to_s}\" : #{e[0].to_s} ?? #{swift_default_value(e[1][:type])}" }.join(",\n ")%>
|
55
|
+
]
|
56
|
+
}
|
57
|
+
|
58
|
+
static func ==(lhs: <%= @name %>, rhs: <%= @name %>) -> Bool {
|
59
|
+
return lhs.key == rhs.key
|
60
|
+
}
|
61
|
+
|
62
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
/**********************************************************
|
2
|
+
* <%=@service_class%>.java
|
3
|
+
* Firebase Services
|
4
|
+
* Version: <%=@version%>
|
5
|
+
* Generated by Easyfire. Do not modify this code
|
6
|
+
**********************************************************/
|
7
|
+
package <%=@base_package%>.services;
|
8
|
+
|
9
|
+
import <%=@base_package%>.base.ServiceEF;
|
10
|
+
|
11
|
+
import android.net.Uri;
|
12
|
+
import android.support.annotation.NonNull;
|
13
|
+
import android.util.Log;
|
14
|
+
|
15
|
+
import <%=@base_package%>.models.<%=@class_name_ef%>;
|
16
|
+
import com.google.firebase.database.DatabaseReference;
|
17
|
+
import com.google.firebase.database.FirebaseDatabase;
|
18
|
+
|
19
|
+
public class <%=@service_class%> extends ServiceEF {
|
20
|
+
|
21
|
+
private final FirebaseDatabase database;
|
22
|
+
private final DatabaseReference ref;
|
23
|
+
|
24
|
+
public <%=@service_class%>(){
|
25
|
+
this.database = FirebaseDatabase.getInstance();
|
26
|
+
this.ref = database.getReference("<%=@collection_name%>");
|
27
|
+
}
|
28
|
+
|
29
|
+
@Override
|
30
|
+
public DatabaseReference getRef() {
|
31
|
+
return this.ref;
|
32
|
+
}
|
33
|
+
|
34
|
+
@Override
|
35
|
+
protected Class<<%=@class_name_ef%>> getRuntimeClass() {
|
36
|
+
return <%=@class_name_ef%>.class;
|
37
|
+
}
|
38
|
+
|
39
|
+
@Override
|
40
|
+
public <%=@class_name_ef%> createInstanceWithKey(String key) {
|
41
|
+
return new <%=@class_name_ef%>(key);
|
42
|
+
}
|
43
|
+
}
|
@@ -0,0 +1,92 @@
|
|
1
|
+
/**********************************************************
|
2
|
+
* <%=@name%>ServiceEM.java
|
3
|
+
* Firebase Services
|
4
|
+
* Version: <%=@version%>
|
5
|
+
* Generated by Easyfire. Do not modify this code
|
6
|
+
**********************************************************/
|
7
|
+
|
8
|
+
import android.net.Uri;
|
9
|
+
import android.support.annotation.NonNull;
|
10
|
+
import android.util.Log;
|
11
|
+
|
12
|
+
|
13
|
+
public class <%=@name%>ServiceEM {
|
14
|
+
|
15
|
+
private final FirebaseDatabase database;
|
16
|
+
private final DatabaseReference ref;
|
17
|
+
|
18
|
+
private ValueEventListener buscaQuantidadeParticipantesHandle;
|
19
|
+
private ValueEventListener buscaStatusMeuConviteHandler;
|
20
|
+
|
21
|
+
public <%=@name%>ServiceEM(){
|
22
|
+
this.database = FirebaseDatabase.getInstance();
|
23
|
+
this.ref = database.getReference(<%=@collection_name%>)
|
24
|
+
}
|
25
|
+
|
26
|
+
<% if parent %>
|
27
|
+
public void findBy(final String parentKey, final String key, final EasyfireDelegate delegate){
|
28
|
+
this.ref.child(parentKey).child(key).addListenerForSingleValueEvent(new ValueEventListener() {
|
29
|
+
<% else %>
|
30
|
+
public void findBy(final String key, final EasyfireDelegate delegate){
|
31
|
+
this.ref.child(key).addListenerForSingleValueEvent(new ValueEventListener() {
|
32
|
+
<%end%>
|
33
|
+
@Override
|
34
|
+
public void onDataChange(DataSnapshot dataSnapshot) {
|
35
|
+
if(dataSnapshot.exists()){
|
36
|
+
<%=@name%> <%=@name.uncapitalize%> = dataSnapshot.getValue(<%=@name%>.class);
|
37
|
+
<%=@name.uncapitalize%>.key = dataSnapshot.getKey();
|
38
|
+
delegate.changed(<%=@name.uncapitalize%>);
|
39
|
+
}else{
|
40
|
+
delegate.changed(null);
|
41
|
+
}
|
42
|
+
}
|
43
|
+
@Override
|
44
|
+
public void onCancelled(DatabaseError databaseError) {
|
45
|
+
delegate.error(databaseError);
|
46
|
+
}
|
47
|
+
});
|
48
|
+
}
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
public void store(final <%=@name%> <%=@name.uncapitalize%>,
|
53
|
+
final EasyfireDelegate delegate) {
|
54
|
+
|
55
|
+
final DatabaseReference localRef;
|
56
|
+
|
57
|
+
if(<%=@name.uncapitalize%>.key == null){
|
58
|
+
localRef = <%=@name.uncapitalize%>.isChild() ?
|
59
|
+
ref.child(<%=@name.uncapitalize%>.getParentKey()).push() :
|
60
|
+
ref.push()
|
61
|
+
|
62
|
+
}else{
|
63
|
+
localRef = <%=@name.uncapitalize%>.isChild() ?
|
64
|
+
ref.child(<%=@name.uncapitalize%>.getParentKey()).child(<%=@name.uncapitalize%>.getKey()) :
|
65
|
+
ref(<%=@name.uncapitalize%>.getKey())
|
66
|
+
|
67
|
+
}
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
Task<Void> task = localRef.setValue(<%=@name.uncapitalize%>);
|
72
|
+
task.addOnCompleteListener(new OnCompleteListener<Void>() {
|
73
|
+
@Override
|
74
|
+
public void onComplete(@NonNull Task<Void> task) {
|
75
|
+
delegate.changed(true);
|
76
|
+
}
|
77
|
+
}).addOnFailureListener(new OnFailureListener() {
|
78
|
+
@Override
|
79
|
+
public void onFailure(@NonNull Exception e) {
|
80
|
+
delegate.error(e);
|
81
|
+
}
|
82
|
+
});
|
83
|
+
}
|
84
|
+
|
85
|
+
public void delete(final <%=@name%> <%=@name.uncapitalize%>, final EasyfireDelegate delegate) {
|
86
|
+
|
87
|
+
|
88
|
+
ref.child(camera.uid).child(camera.key).removeValue();
|
89
|
+
delegate.changed();
|
90
|
+
}
|
91
|
+
|
92
|
+
}
|
@@ -0,0 +1,100 @@
|
|
1
|
+
apply plugin: 'idea'
|
2
|
+
apply plugin: 'eclipse'
|
3
|
+
|
4
|
+
group = '<%=@group%>'
|
5
|
+
version = '<%=@version%>'
|
6
|
+
|
7
|
+
buildscript {
|
8
|
+
repositories {
|
9
|
+
jcenter()
|
10
|
+
}
|
11
|
+
dependencies {
|
12
|
+
classpath 'com.android.tools.build:gradle:2.3.+'
|
13
|
+
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
repositories {
|
18
|
+
jcenter()
|
19
|
+
}
|
20
|
+
|
21
|
+
|
22
|
+
if(hasProperty('target') && target == 'android') {
|
23
|
+
|
24
|
+
apply plugin: 'com.android.library'
|
25
|
+
apply plugin: 'com.github.dcendents.android-maven'
|
26
|
+
|
27
|
+
android {
|
28
|
+
compileSdkVersion 25
|
29
|
+
buildToolsVersion '25.0.2'
|
30
|
+
defaultConfig {
|
31
|
+
minSdkVersion 14
|
32
|
+
targetSdkVersion 25
|
33
|
+
}
|
34
|
+
compileOptions {
|
35
|
+
sourceCompatibility JavaVersion.VERSION_1_7
|
36
|
+
targetCompatibility JavaVersion.VERSION_1_7
|
37
|
+
}
|
38
|
+
|
39
|
+
// Rename the aar correctly
|
40
|
+
libraryVariants.all { variant ->
|
41
|
+
variant.outputs.each { output ->
|
42
|
+
def outputFile = output.outputFile
|
43
|
+
if (outputFile != null && outputFile.name.endsWith('.aar')) {
|
44
|
+
def fileName = "${project.name}-${variant.baseName}-${version}.aar"
|
45
|
+
output.outputFile = new File(outputFile.parent, fileName)
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
dependencies {
|
51
|
+
provided 'javax.annotation:jsr250-api:1.0'
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
afterEvaluate {
|
56
|
+
android.libraryVariants.all { variant ->
|
57
|
+
def task = project.tasks.create "jar${variant.name.capitalize()}", Jar
|
58
|
+
task.description = "Create jar artifact for ${variant.name}"
|
59
|
+
task.dependsOn variant.javaCompile
|
60
|
+
task.from variant.javaCompile.destinationDir
|
61
|
+
task.destinationDir = project.file("${project.buildDir}/outputs/jar")
|
62
|
+
task.archiveName = "${project.name}-${variant.baseName}-${version}.jar"
|
63
|
+
artifacts.add('archives', task);
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
task sourcesJar(type: Jar) {
|
68
|
+
from android.sourceSets.main.java.srcDirs
|
69
|
+
classifier = 'sources'
|
70
|
+
}
|
71
|
+
|
72
|
+
artifacts {
|
73
|
+
archives sourcesJar
|
74
|
+
}
|
75
|
+
|
76
|
+
} else {
|
77
|
+
|
78
|
+
apply plugin: 'java'
|
79
|
+
apply plugin: 'maven'
|
80
|
+
|
81
|
+
sourceCompatibility = JavaVersion.VERSION_1_7
|
82
|
+
targetCompatibility = JavaVersion.VERSION_1_7
|
83
|
+
|
84
|
+
install {
|
85
|
+
repositories.mavenInstaller {
|
86
|
+
pom.artifactId = 'api'
|
87
|
+
}
|
88
|
+
}
|
89
|
+
|
90
|
+
task execute(type:JavaExec) {
|
91
|
+
main = System.getProperty('mainClass')
|
92
|
+
classpath = sourceSets.main.runtimeClasspath
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
dependencies {
|
97
|
+
compile 'com.google.firebase:firebase-core:11.2.2'
|
98
|
+
compile 'com.google.firebase:firebase-database:11.2.2'
|
99
|
+
testCompile 'junit:junit:4.12'
|
100
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
lazy val root = (project in file(".")).
|
2
|
+
settings(
|
3
|
+
organization := "<%=@group%>",
|
4
|
+
name := "<%=@artifact%>",
|
5
|
+
version := "<%=@version%>",
|
6
|
+
scalaVersion := "2.11.4",
|
7
|
+
scalacOptions ++= Seq("-feature"),
|
8
|
+
javacOptions in compile ++= Seq("-Xlint:deprecation"),
|
9
|
+
publishArtifact in (Compile, packageDoc) := false,
|
10
|
+
resolvers += Resolver.mavenLocal,
|
11
|
+
libraryDependencies ++= Seq(
|
12
|
+
"com.google.firebase" % "firebase-core" % "11.2.2"
|
13
|
+
"com.google.firebase" % "firebase-database" % "11.2.2"
|
14
|
+
"junit" % "junit" % "4.12" % "test",
|
15
|
+
"com.novocode" % "junit-interface" % "0.10" % "test"
|
16
|
+
)
|
17
|
+
)
|
Binary file
|