11package com .javabaas .shell .commands ;
22
33import com .fasterxml .jackson .core .JsonProcessingException ;
4- import com .fasterxml . jackson . databind . ObjectMapper ;
4+ import com .javabaas . javasdk . JBField ;
55import com .javabaas .javasdk .JBObject ;
6+ import com .javabaas .javasdk .JBQuery ;
67import com .javabaas .javasdk .JBUtils ;
78import com .javabaas .shell .common .CommandContext ;
8- import com .javabaas .shell .entity .JBSField ;
9- import com .javabaas .shell .entity .JBSObject ;
10- import com .javabaas .shell .entity .JBSimpleResult ;
119import com .javabaas .shell .util .DateUtil ;
1210import com .javabaas .shell .util .FieldUtil ;
1311import com .javabaas .shell .util .PropertiesUtil ;
2624import org .springframework .web .client .RestTemplate ;
2725
2826import javax .annotation .Resource ;
29- import java .util .HashMap ;
3027import java .util .LinkedList ;
3128import java .util .List ;
3229import java .util .Map ;
@@ -58,7 +55,8 @@ public void add(@CliOption(key = {""}, mandatory = true, help = "Object by json.
5855 String className = context .getCurrentClass ();
5956 try {
6057 Map <String , Object > map = JBUtils .readValue (string , Map .class );
61- JBObject object = JBUtils .parseObjectFromMap (map );
58+ JBObject object = new JBObject (className );
59+ JBUtils .copyPropertiesFromMapToJBObject (object , map );
6260 object .save ();
6361 System .out .println (Ansi .ansi ().fg (Ansi .Color .GREEN ).a ("Object added." ).reset ());
6462 } catch (HttpClientErrorException e ) {
@@ -75,11 +73,12 @@ public void update(@CliOption(key = {""}, mandatory = true, help = "Input") fina
7573 System .out .println (Ansi .ansi ().fg (Ansi .Color .RED ).a ("No object!" ).reset ());
7674 return ;
7775 }
78- String id = inputs [0 ];
79- String object = inputs [1 ];
80- String className = context .getCurrentClass ();
8176 try {
82- rest .put (properties .getHost () + "object/" + className + "/" + id , object );
77+ String id = inputs [0 ];
78+ String className = context .getCurrentClass ();
79+ JBObject object = JBObject .createWithOutData (className , id );
80+ JBUtils .copyPropertiesFromMapToJBObject (object , JBUtils .readValue (inputs [1 ], Map .class ));
81+ object .save ();
8382 System .out .println (Ansi .ansi ().fg (Ansi .Color .GREEN ).a ("Object updated." ).reset ());
8483 } catch (HttpClientErrorException e ) {
8584 System .out .println (Ansi .ansi ().fg (Ansi .Color .RED ).a (e .getResponseBodyAsString ()).reset ());
@@ -91,29 +90,27 @@ public void get(@CliOption(key = {""}, mandatory = true, help = "Object id.") fi
9190 throws JsonProcessingException {
9291 context .cancelDoubleCheck ();
9392 String className = context .getCurrentClass ();
94- String result = rest .getForObject (properties .getHost () + "object/" + className + "/" + id , String .class );
95- System .out .println (result );
93+ JBQuery query = new JBQuery (className );
94+ JBObject object = query .get (id );
95+ System .out .println (object );
9696 }
9797
9898 @ CliCommand (value = "list" , help = "Show objects in class." )
9999 public void list (@ CliOption (key = {"" }, mandatory = false , help = "Query condition." ) final String where ,
100100 @ CliOption (key = {"skip" }, mandatory = false , unspecifiedDefaultValue = "0" , specifiedDefaultValue = "0" ) final String skip )
101101 throws JsonProcessingException {
102102 context .cancelDoubleCheck ();
103- ObjectMapper mapper = new ObjectMapper ();
104- String className = context .getCurrentClass ();
105- String url = properties .getHost () + "object/" + className + "?where={where}" ;
106- Map <String , Object > params = new HashMap <>();
107- params .put ("where" , where );
108- params .put ("skip" , skip );
109- if (skip != null ) {
110- params .put ("skip" , skip );
111- }
112103 try {
113- JBSObject [] result = rest .getForObject (url , JBSObject [].class , params );
114- for (JBSObject baasObject : result ) {
115- System .out .println (mapper .writeValueAsString (baasObject ));
104+ String className = context .getCurrentClass ();
105+ JBQuery query = new JBQuery (className );
106+ if (!JBUtils .isEmpty (skip )) {
107+ query .setSkip (Integer .parseInt (skip ));
108+ }
109+ if (!JBUtils .isEmpty (where )) {
110+ query .setWhereSting (where );
116111 }
112+ List <JBObject > list = query .find ();
113+ list .forEach (object -> System .out .println (object ));
117114 } catch (HttpClientErrorException e ) {
118115 System .out .println (Ansi .ansi ().fg (Ansi .Color .RED ).a (e .getResponseBodyAsString ()).reset ());
119116 }
@@ -128,19 +125,23 @@ public void table(@CliOption(key = {""}, mandatory = false, help = "Query condit
128125 @ CliOption (key = {"s" }, mandatory = false , unspecifiedDefaultValue = "0" , specifiedDefaultValue = "1" ) final String single )
129126 throws JsonProcessingException {
130127 context .cancelDoubleCheck ();
131- String className = context .getCurrentClass ();
132- String url = properties .getHost () + "object/" + className + "?where={where}&skip={skip}" ;
133- Map <String , Object > params = new HashMap <>();
134- params .put ("where" , where );
135- params .put ("skip" , skip );
136128 try {
129+ String className = context .getCurrentClass ();
130+ JBQuery query = new JBQuery (className );
131+ if (!JBUtils .isEmpty (skip )) {
132+ query .setSkip (Integer .parseInt (skip ));
133+ }
134+ if (!JBUtils .isEmpty (where )) {
135+ query .setWhereSting (where );
136+ }
137+ List <JBObject > list = query .find ();
138+
137139 //创建表格
138140 V2_AsciiTable at = new V2_AsciiTable ();
139141 at .addRule ();
140142 //控制列宽度
141143 WidthFixedColumns width = new WidthFixedColumns ();
142- JBSObject [] result = rest .getForObject (url , JBSObject [].class , params );
143- JBSField [] fields = rest .getForObject (properties .getHost () + "master/clazz/" + className + "/field" , JBSField [].class );
144+ List <JBField > fields = JBField .list (className );
144145 //整理表头
145146 List <Object > headers = new LinkedList <>();
146147 List <Object > types = new LinkedList <>();
@@ -152,76 +153,57 @@ public void table(@CliOption(key = {""}, mandatory = false, help = "Query condit
152153 headers .add ("createdAt" );
153154 types .add ("<DATE>" );
154155 width .add (21 );
155- headers .add ("updatedAt" );
156- types .add ("<DATE>" );
157- width .add (21 );
158- }
159- if (plat .equals ("1" )) {
160- //显示平台
161- headers .add ("createdPlat" );
162- types .add ("<STRING>" );
163- width .add (13 );
164- headers .add ("updatedPlat" );
165- types .add ("<STRING>" );
166- width .add (13 );
167- }
168- if (acl .equals ("1" )) {
169- headers .add ("ACL" );
170- types .add ("<ACL>" );
171- width .add (20 );
156+ // headers.add("updatedAt");
157+ // types.add("<DATE>");
158+ // width.add(21);
172159 }
160+ // if (plat.equals("1")) {
161+ // //显示平台
162+ // headers.add("createdPlat");
163+ // types.add("<STRING>");
164+ // width.add(13);
165+ // headers.add("updatedPlat");
166+ // types.add("<STRING>");
167+ // width.add(13);
168+ // }
169+ // if (acl.equals("1")) {
170+ // headers.add("ACL");
171+ // types.add("<ACL>");
172+ // width.add(20);
173+ // }
173174 //自定义字段
174- for ( JBSField field : fields ) {
175+ fields . forEach ( field -> {
175176 headers .add (field .getName ());
176177 types .add (FieldUtil .getFieldType (field .getType ()));
177178 width .add (20 );
178- }
179+ });
179180 at .addRow (headers .toArray ());
180181 at .addRow (types .toArray ());
181182 at .addStrongRule ();
182- for ( JBSObject baasObject : result ) {
183+ list . forEach ( baasObject -> {
183184 List <Object > cols = new LinkedList <>();
184- cols .add (baasObject .get ("_id" ));
185- for (String key : baasObject .keySet ()) {
186- Object value = baasObject .get (key );
187- if (value != null ) {
188- switch (key ) {
189- case "createdAt" :
190- case "updatedAt" :
191- if (time .equals ("1" )) {
192- //显示时间
193- cols .add (DateUtil .format (Long .valueOf (value .toString ())));
194- }
195- break ;
196- case "createdPlat" :
197- case "updatedPlat" :
198- if (plat .equals ("1" )) {
199- //显示平台
200- cols .add (value );
201- }
202- break ;
203- case "getACL" :
204- if (acl .equals ("1" )) {
205- //显示ACL
206- cols .add (value );
207- }
208- break ;
209- }
210- } else {
211- cols .add ("" );
212- }
185+ cols .add (baasObject .getObjectId ());
186+ if (time .equals ("1" )) {
187+ cols .add (DateUtil .format (Long .valueOf (baasObject .getCreatedAt ())));
213188 }
214- for (JBSField field : fields ) {
189+ if (plat .equals ("1" )) {
190+ cols .add ("" );
191+ }
192+ // if (acl.equals("1")) {
193+ // cols.add(baasObject.getAcl());
194+ // }
195+
196+ fields .forEach (field -> {
215197 Object value = baasObject .get (field .getName ());
216198 if (value == null ) {
217199 cols .add ("" );
218200 } else {
219201 cols .add (value );
220202 }
221- }
203+ });
222204 at .addRow (cols .toArray ());
223205 at .addRule ();
224- }
206+ });
225207 AsciiTableRenderer rend = new AsciiTableRenderer ();
226208 rend .setTheme (V2_E_TableThemes .UTF_LIGHT .get ());
227209 rend .setWidth (width );
@@ -248,7 +230,8 @@ public void delete(@CliOption(key = {""}, mandatory = true, help = "Object id.")
248230 context .cancelDoubleCheck ();
249231 String className = context .getCurrentClass ();
250232 try {
251- rest .delete (properties .getHost () + "object/" + className + "/" + id );
233+ JBObject object = JBObject .createWithOutData (className , id );
234+ object .delete ();
252235 System .out .println (Ansi .ansi ().fg (Ansi .Color .GREEN ).a ("Object deleted." ).reset ());
253236 } catch (HttpClientErrorException e ) {
254237 System .out .println (Ansi .ansi ().fg (Ansi .Color .RED ).a (e .getResponseBodyAsString ()).reset ());
@@ -270,13 +253,12 @@ public void url() {
270253 public void count (@ CliOption (key = {"" }, mandatory = false , help = "Query condition." ) final String where )
271254 throws JsonProcessingException {
272255 context .cancelDoubleCheck ();
273- String className = context .getCurrentClass ();
274- String url = properties .getHost () + "object/" + className + "/count?where={where}" ;
275- Map <String , Object > params = new HashMap <>();
276- params .put ("where" , where );
277256 try {
278- JBSimpleResult result = rest .getForObject (url , JBSimpleResult .class , params );
279- System .out .println (result .getData ("count" ));
257+ String className = context .getCurrentClass ();
258+ JBQuery query = new JBQuery (className );
259+ query .setWhereSting (where );
260+ int count = query .count ();
261+ System .out .println (count );
280262 } catch (HttpClientErrorException e ) {
281263 System .out .println (Ansi .ansi ().fg (Ansi .Color .RED ).a (e .getResponseBodyAsString ()).reset ());
282264 }
0 commit comments