4545 */
4646public class InsectBrainCompartment implements BrainAnnotation {
4747
48- private static final String BASE_OBJ_DOWNLOAD_URL = "https://s3.eu-central-1.amazonaws.com/ibdb-file-storage /" ;
48+ private static final String BASE_URL = "https://insectbraindb.org /" ;
4949
5050 private int id ;
5151 private String name ;
@@ -55,6 +55,7 @@ public class InsectBrainCompartment implements BrainAnnotation {
5555 private String [] aliases ;
5656
5757 private UUID uuid ;
58+ private UUID fileUUID ;
5859 private String objPath ;
5960 private String objColor ;
6061
@@ -93,37 +94,45 @@ public String[] aliases() {
9394 }
9495
9596 private String getMeshURL () {
96- HttpUrl .Builder urlBuilder = HttpUrl .parse (BASE_OBJ_DOWNLOAD_URL ).newBuilder ();
97- urlBuilder .addPathSegments (objPath );
98- return urlBuilder .build ().toString ();
97+ if (fileUUID != null ) {
98+ // Use the filestore API to get a signed download URL
99+ final HttpUrl .Builder urlBuilder = HttpUrl .parse (BASE_URL ).newBuilder ();
100+ urlBuilder .addPathSegments ("filestore/download_url/" );
101+ urlBuilder .addQueryParameter ("uuid" , fileUUID .toString ());
102+ final String apiUrl = urlBuilder .build ().toString ();
103+ try {
104+ final OkHttpClient client = new OkHttpClient ();
105+ final Request request = new Request .Builder ().url (apiUrl ).build ();
106+ try (final Response response = client .newCall (request ).execute ()) {
107+ if (response .isSuccessful () && response .body () != null ) {
108+ final org .json .JSONObject json = new org .json .JSONObject (response .body ().string ());
109+ return json .getString ("url" );
110+ }
111+ }
112+ } catch (final IOException | org .json .JSONException e ) {
113+ SNTUtils .log ("Could not resolve download URL via API for " + name + ": " + e .getMessage ());
114+ }
115+ }
116+ return null ;
99117 }
100118
101119 @ Override
102120 public OBJMesh getMesh () {
103- OBJMesh mesh = null ;
104- String urlPath = getMeshURL ();
121+ final String urlPath = getMeshURL ();
122+ if (urlPath == null ) {
123+ SNTUtils .log ("Could not resolve download URL for mesh: " + name );
124+ return null ;
125+ }
105126 try {
106- final OkHttpClient client = new OkHttpClient ();
107- final Request request = new Request .Builder () //
108- .url (urlPath )
109- .build ();
110- final Response response = client .newCall (request ).execute ();
111- final boolean success = response .isSuccessful ();
112- response .close ();
113- if (!success ) {
114- System .out .println (
115- "Server is not reachable. Mesh(es) could not be retrieved. Check your internet connection..."
116- );
117- return null ;
118- }
119127 final URL url = new URI (urlPath ).toURL ();
120- mesh = new OBJMesh (url , GuiUtils .micrometer ());
128+ final OBJMesh mesh = new OBJMesh (url , GuiUtils .micrometer ());
121129 mesh .setColor (objColor , 95f );
122130 mesh .setLabel (name );
131+ return mesh ;
123132 } catch (final IllegalArgumentException | IOException | URISyntaxException e ) {
124133 SNTUtils .error ("Could not retrieve mesh " , e );
125134 }
126- return mesh ;
135+ return null ;
127136 }
128137
129138 @ Override
@@ -178,6 +187,10 @@ protected void setObjPath(String objPath) {
178187 this .objPath = objPath ;
179188 }
180189
190+ protected void setFileUUID (UUID fileUUID ) {
191+ this .fileUUID = fileUUID ;
192+ }
193+
181194 protected void setObjColor (String objColor ) {
182195 this .objColor = objColor ;
183196 }
0 commit comments