Skip to content

Commit aebf92d

Browse files
committed
Add java version of Inspect
1 parent 724ccfd commit aebf92d

File tree

9 files changed

+597
-46
lines changed

9 files changed

+597
-46
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
vars.json
2+
13
# Built application files
24
*.apk
35
*.ap_
Binary file not shown.

src/AndroidClient/.idea/modules/android/AndroidClient.android.iml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/AndroidClient/.idea/modules/client/AndroidClient.client.iml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
package net.servicestack.client;
2+
3+
import com.google.gson.Gson;
4+
import com.google.gson.GsonBuilder;
5+
import com.google.gson.reflect.TypeToken;
6+
7+
import java.io.*;
8+
import java.net.URL;
9+
import java.nio.file.Files;
10+
import java.nio.file.Path;
11+
import java.nio.file.Paths;
12+
import java.util.*;
13+
14+
public final class Inspect {
15+
16+
public static final void vars(Map args) {
17+
String inspectVarsPath = System.getenv("INSPECT_VARS");
18+
if (inspectVarsPath == null)
19+
return;
20+
21+
FileWriter writer = null;
22+
23+
try {
24+
if (System.getProperty("os.name").toLowerCase().contains("win")) {
25+
inspectVarsPath = inspectVarsPath.replace("/", "\\");
26+
} else {
27+
inspectVarsPath = inspectVarsPath.replace("\\", "/");
28+
}
29+
30+
Path dirPath = Paths.get(inspectVarsPath).getParent();
31+
Files.createDirectories(dirPath);
32+
33+
writer = new FileWriter(inspectVarsPath);
34+
35+
new Gson().toJson(args, writer);
36+
37+
} catch (IOException e) {
38+
e.printStackTrace();
39+
} finally {
40+
if (writer != null) {
41+
try {
42+
writer.close();
43+
} catch (Exception e) {
44+
e.printStackTrace();
45+
}
46+
}
47+
}
48+
}
49+
50+
public static final String dump(Object obj) {
51+
Gson gson = new GsonBuilder().setPrettyPrinting().create();
52+
String json = gson.toJson(obj);
53+
return json.replace("\"", "");
54+
}
55+
56+
public static final void printDump(Object obj) {
57+
System.out.println(dump(obj));
58+
}
59+
60+
public static final String dumpTable(Iterable objs, Iterable headers) {
61+
List rows = Utils.toList(objs);
62+
List<Map<String, Object>> mapRows = toListMap(rows);
63+
64+
List<String> keys = headers != null ? Utils.toList(headers) : allKeys(mapRows);
65+
HashMap<String, Integer> colSizes = new HashMap<>();
66+
67+
for (String k : keys) {
68+
int max = k.length();
69+
for (Map<String, Object> row : mapRows) {
70+
if (row.containsKey(k)) {
71+
Object col = row.get(k);
72+
int valSize = col.toString().length();
73+
if (valSize > max) {
74+
max = valSize;
75+
}
76+
}
77+
}
78+
colSizes.put(k, max);
79+
}
80+
81+
// sum + ' padding ' + |
82+
int rowWidth = Utils.sum(colSizes.values()) +
83+
(colSizes.size() * 2) +
84+
(colSizes.size() + 1);
85+
86+
StringBuilder sb = new StringBuilder();
87+
Utils.appendLine(sb.append("+").append(Utils.repeat("-", rowWidth - 2)).append("+"));
88+
sb.append("|");
89+
for (String k : keys) {
90+
sb.append(alignCenter(k, colSizes.get(k))).append("|");
91+
}
92+
Utils.appendLine(sb);
93+
94+
Utils.appendLine(sb.append("|").append(Utils.repeat("-", rowWidth - 2)).append("|"));
95+
96+
for (Map<String, Object> row : mapRows) {
97+
sb.append("|");
98+
for (String k : keys) {
99+
sb.append(alignAuto(row.get(k), colSizes.get(k))).append("|");
100+
}
101+
Utils.appendLine(sb);
102+
}
103+
Utils.appendLine(sb.append("+").append(Utils.repeat("-", rowWidth - 2)).append("+"));
104+
105+
return sb.toString();
106+
}
107+
108+
public static final void printDumpTable(Iterable objs) {
109+
System.out.println(dumpTable(objs, null));
110+
}
111+
112+
public static final void printDumpTable(Iterable objs, Iterable headers) {
113+
System.out.println(dumpTable(objs, headers));
114+
}
115+
116+
public static final List<String> allKeys(List<Map<String, Object>> rows) {
117+
ArrayList<String> to = new ArrayList<>();
118+
for (Map<String, Object> row : rows) {
119+
for (String key : row.keySet()) {
120+
if (!to.contains(key)) {
121+
to.add(key);
122+
}
123+
}
124+
}
125+
return to;
126+
}
127+
128+
public static final boolean isNumber(Object obj) {
129+
return obj instanceof Long || obj instanceof Integer || obj instanceof Short ||
130+
obj instanceof Byte || obj instanceof Double || obj instanceof Float;
131+
}
132+
133+
private static final String fmtNumber(Object d) {
134+
if (d instanceof Double) {
135+
Double dbl = ((Number) d).doubleValue();
136+
return dbl == Math.floor(dbl) ? String.valueOf(((Number) dbl).longValue()) : String.valueOf(dbl);
137+
} else if (d instanceof Float) {
138+
Float f = ((Number) d).floatValue();
139+
return f == Math.floor(f) ? String.valueOf(((Number) f).longValue()) : String.valueOf(f);
140+
}
141+
return d.toString();
142+
}
143+
144+
public static final String alignLeft(String str, Integer len) {
145+
return alignLeft(str, len, " ");
146+
}
147+
148+
public static final String alignLeft(String str, int len, String pad) {
149+
if (len < 0) return "";
150+
int aLen = len + 1 - str.length();
151+
return aLen <= 0 ? str : pad + str + Utils.repeat(pad, aLen);
152+
}
153+
154+
public static final String alignCenter(String str, int len) {
155+
return alignCenter(str, len, " ");
156+
}
157+
158+
public static final String alignCenter(String str, int len, String pad) {
159+
if (len < 0) return "";
160+
int nLen = str.length();
161+
int half = (int) Math.floor(len / 2.0 - nLen / 2.0);
162+
int odds = Math.abs((nLen % 2) - (len % 2));
163+
return (Utils.repeat(pad, half + 1)) + str + (Utils.repeat(pad, half + 1 + odds));
164+
}
165+
166+
public static final String alignRight(String str, int len) {
167+
return alignRight(str, len, " ");
168+
}
169+
170+
public static final String alignRight(String str, int len, String pad) {
171+
if (len < 0) return "";
172+
int aLen = len + 1 - str.length();
173+
return aLen <= 0 ? str : Utils.repeat(pad, aLen) + str + pad;
174+
}
175+
176+
public static final String alignAuto(Object obj, int len) {
177+
return alignAuto(obj, len, " ");
178+
}
179+
180+
public static final String alignAuto(Object obj, int len, String pad) {
181+
String str = obj == null ? "" : String.valueOf(obj);
182+
if (str.length() <= len) {
183+
return isNumber(obj)
184+
? alignRight(fmtNumber(obj), len, pad)
185+
: alignLeft(str, len, pad);
186+
} else {
187+
return str;
188+
}
189+
}
190+
191+
public static final List<Map<String, Object>> toListMap(List objs) {
192+
Gson gson = new Gson();
193+
String json = gson.toJson(objs);
194+
return gson.fromJson(json, new TypeToken<List<Map<String, Object>>>() {
195+
}.getType());
196+
}
197+
198+
public static final Map<String, Object> toMap(Object obj) {
199+
Gson gson = new Gson();
200+
String json = gson.toJson(obj);
201+
return gson.fromJson(json, new TypeToken<Map<String, Object>>() {
202+
}.getType());
203+
}
204+
205+
public static final String readUrlAsText(URL url) {
206+
StringBuilder sb = new StringBuilder();
207+
BufferedReader reader = null;
208+
try {
209+
reader = new BufferedReader(new InputStreamReader(url.openStream()));
210+
String line = null;
211+
while ((line = reader.readLine()) != null) {
212+
sb.append(line);
213+
}
214+
} catch (Exception e) {
215+
e.printStackTrace();
216+
} finally {
217+
if (reader != null) {
218+
try {
219+
reader.close();
220+
} catch (Exception e) {
221+
e.printStackTrace();
222+
}
223+
}
224+
}
225+
return sb.toString();
226+
}
227+
}

src/AndroidClient/android/src/main/java/net/servicestack/client/Utils.java

Lines changed: 46 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,18 @@
77
import com.google.gson.JsonElement;
88
import com.google.gson.JsonObject;
99
import com.google.gson.JsonParseException;
10-
1110
import net.servicestack.func.Function;
1211

13-
import java.io.BufferedInputStream;
14-
import java.io.BufferedReader;
15-
import java.io.ByteArrayOutputStream;
16-
import java.io.Closeable;
17-
import java.io.IOException;
18-
import java.io.InputStream;
19-
import java.io.InputStreamReader;
20-
import java.io.PrintWriter;
21-
import java.io.StringWriter;
22-
import java.io.UnsupportedEncodingException;
12+
import java.io.*;
2313
import java.lang.annotation.Annotation;
2414
import java.lang.reflect.Field;
2515
import java.lang.reflect.Modifier;
2616
import java.net.HttpURLConnection;
2717
import java.net.URL;
28-
import java.net.URLConnection;
2918
import java.net.URLEncoder;
3019
import java.nio.ByteBuffer;
3120
import java.text.SimpleDateFormat;
32-
import java.util.ArrayList;
33-
import java.util.Arrays;
34-
import java.util.Calendar;
35-
import java.util.Date;
36-
import java.util.HashMap;
37-
import java.util.Iterator;
38-
import java.util.List;
39-
import java.util.Map;
40-
import java.util.Objects;
41-
import java.util.UUID;
21+
import java.util.*;
4222

4323
import static net.servicestack.func.Func.last;
4424

@@ -635,6 +615,14 @@ public static ResponseStatus createResponseStatus(JsonObject obj) {
635615
return status;
636616
}
637617

618+
public static <T> ArrayList<T> toList(Iterable<T> iterable) {
619+
ArrayList<T> to = new ArrayList<>();
620+
for (T item : iterable) {
621+
to.add(item);
622+
}
623+
return to;
624+
}
625+
638626
public static <T> ArrayList<T> asList(T... params) {
639627
ArrayList<T> to = new ArrayList<>();
640628
to.addAll(Arrays.asList(params));
@@ -907,6 +895,42 @@ public static String join(final Iterator<?> iterator, final String separator) {
907895
return buf.toString();
908896
}
909897

898+
public static String repeat(String string, int count) {
899+
900+
if (count <= 1) {
901+
return (count == 0) ? "" : string;
902+
}
903+
904+
final int len = string.length();
905+
final long longSize = (long) len * (long) count;
906+
final int size = (int) longSize;
907+
if (size != longSize) {
908+
throw new ArrayIndexOutOfBoundsException("Required array size too large: " + longSize);
909+
}
910+
911+
final char[] array = new char[size];
912+
string.getChars(0, len, array, 0);
913+
int n;
914+
for (n = len; n < size - n; n <<= 1) {
915+
System.arraycopy(array, 0, array, n, n);
916+
}
917+
System.arraycopy(array, 0, array, n, size - n);
918+
return new String(array);
919+
}
920+
921+
public static int sum(Collection<Integer> nums) {
922+
int sum = 0;
923+
for (int number : nums) {
924+
sum += number;
925+
}
926+
return sum;
927+
}
928+
929+
public static StringBuilder appendLine(StringBuilder sb) {
930+
sb.append(System.lineSeparator());
931+
return sb;
932+
}
933+
910934
public static String getStackTrace(Exception ex) {
911935
StringWriter sw = new StringWriter();
912936
ex.printStackTrace(new PrintWriter(sw));

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy