1 package com.neuronrobotics.bowlerstudio.vitamins;
4 import java.io.IOException;
5 import java.util.HashMap;
8 import java.util.concurrent.TimeUnit;
10 import com.neuronrobotics.imageprovider.NativeResource;
11 import com.neuronrobotics.sdk.common.Log;
13 import eu.mihosoft.vrl.v3d.CSG;
14 import eu.mihosoft.vrl.v3d.STL;
15 import eu.mihosoft.vrl.v3d.parametrics.StringParameter;
17 import com.neuronrobotics.bowlerstudio.scripting.ScriptingEngine;
18 import com.neuronrobotics.bowlerstudio.vitamins.Purchasing;
20 import javafx.scene.paint.Color;
23 import java.io.IOException;
24 import java.io.InputStream;
25 import java.io.OutputStream;
26 import java.lang.reflect.Type;
27 import java.net.HttpURLConnection;
28 import java.net.InetSocketAddress;
29 import java.net.Socket;
31 import java.util.ArrayList;
32 import java.util.HashMap;
34 import org.apache.commons.io.FileUtils;
35 import org.apache.commons.io.IOUtils;
36 import org.eclipse.jgit.api.errors.GitAPIException;
37 import org.eclipse.jgit.api.errors.InvalidRemoteException;
38 import org.eclipse.jgit.api.errors.TransportException;
39 import org.kohsuke.github.GHMyself;
40 import org.kohsuke.github.GHRepository;
42 import com.google.gson.Gson;
43 import com.google.gson.GsonBuilder;
44 import com.google.gson.reflect.TypeToken;
49 private static final Map<String, CSG>
fileLastLoaded =
new HashMap<String, CSG>();
50 private static final Map<String, HashMap<String, HashMap<String, PurchasingData>>>
databaseSet =
51 new HashMap<String, HashMap<String, HashMap<String, PurchasingData>>>();
52 private static final String
defaultgitRpoDatabase =
"https://github.com/CommonWealthRobotics/Hardware-Purchasing.git";
55 private static Type
TT_mapStringString =
new TypeToken<HashMap<String, HashMap<String, PurchasingData>>>() {
58 private static Gson
gson =
new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create();
62 public static HashMap<String, PurchasingData>
getConfiguration(String type, String
id) {
63 HashMap<String, HashMap<String, PurchasingData>> database =
getDatabase(type);
64 if (database.get(
id) ==
null) {
65 database.put(
id,
new HashMap<String, PurchasingData>());
68 return database.get(
id);
81 "Pushing changed Database");
83 }
catch (org.eclipse.jgit.api.errors.TransportException ex) {
84 System.out.println(
"You need to fork " +
getGitRpoDatabase() +
" to have permission to save");
86 "You do not have permission to push to this repo, change the GIT repo to your fork with setGitRpoDatabase(String gitRpoDatabase) ");
96 public static void newVitamin(String type, String
id)
throws Exception {
97 HashMap<String, HashMap<String, PurchasingData>> database =
getDatabase(type);
98 if (database.keySet().size() > 0) {
99 String exampleKey =
null;
100 for (String key : database.keySet()) {
101 if (!key.contains(
"meta")) {
105 if (exampleKey !=
null) {
107 HashMap<String, PurchasingData> exampleConfiguration =
getConfiguration(type, exampleKey);
109 for (String key : exampleConfiguration.keySet()) {
110 newConfig.put(key, exampleConfiguration.get(key));
120 public static void setParameter(String type, String
id, String parameterName,
124 config.put(parameterName, parameter);
128 public static HashMap<String, HashMap<String, PurchasingData>>
getDatabase(String type) {
135 InputStream inPut =
null;
145 inPut = FileUtils.openInputStream(f);
147 jsonString = IOUtils.toString(inPut);
149 HashMap<String, HashMap<String, PurchasingData>> database =
gson
151 if (database ==
null) {
152 throw new RuntimeException(
"create a new one");
156 }
catch (Exception e) {
157 databaseSet.put(type,
new HashMap<String, HashMap<String, PurchasingData>>());
170 ArrayList<String> types =
new ArrayList<String>();
178 File[] listOfFiles = folder.getParentFile().listFiles();
180 for (File f : listOfFiles) {
181 if (!f.isDirectory() && f.getName().endsWith(
".json")) {
182 types.add(f.getName().substring(0, f.getName().indexOf(
".json")));
186 }
catch (Exception e) {
195 ArrayList<String> types =
new ArrayList<String>();
196 HashMap<String, HashMap<String, PurchasingData>> database =
getDatabase(type);
197 Set<String> keys = database.keySet();
198 for (String s : keys) {
199 if (!s.contains(
"meta")) {
209 ArrayList<String> types =
new ArrayList<String>();
210 HashMap<String, PurchasingData> database =
getDatabase(type).get(size);
211 Set<String> keys = database.keySet();
213 for (String variant : keys) {
215 if (!variant.endsWith(
"variant-1"))
219 HttpURLConnection huc = (HttpURLConnection) u.openConnection();
220 huc.setRequestMethod(
"GET");
222 huc.getResponseCode();
225 huc = (HttpURLConnection) u.openConnection();
226 huc.setRequestMethod(
"GET");
228 huc.getResponseCode();
231 }
catch (java.net.ConnectException ce) {
233 }
catch (Exception ex) {
234 ex.printStackTrace();
246 }
catch (NullPointerException ex) {
247 throw new RuntimeException(
248 "Vitamin " + type +
" " + size +
" " + variant +
" does not exist");
static void pushCodeToGit(String id, String branch, String FileName, String content, String commitMessage)
static String getFullBranch(String remoteURI)
static File fileFromGit(String remoteURI, String fileInRepo)
static void newVitamin(String type, String id)
static String getRootFolder()
static String gitRpoDatabase
static String getJsonRootDir()
static final String defaultgitRpoDatabase
static final Map< String, HashMap< String, HashMap< String, PurchasingData > > > databaseSet
static String jsonRootDir
static HashMap< String, PurchasingData > getConfiguration(String type, String id)
static void setParameter(String type, String id, String parameterName, PurchasingData parameter)
static ArrayList< String > listVitaminTypes()
static Type TT_mapStringString
static ArrayList< String > listVitaminSizes(String type)
static String makeJson(String type)
static void setGitRpoDatabase(String gitRpoDatabase)
static String getGitRpoDatabase()
static HashMap< String, HashMap< String, PurchasingData > > getDatabase(String type)
static ArrayList< String > listVitaminVariants(String type, String size)
static void setJsonRootDir(String jsonRootDir)
static void saveDatabase(String type)
static final Map< String, CSG > fileLastLoaded