Something went wrong on our end
Select Git revision
oneAPI.sources
-
Mulas, Giacomo authored
minor update to make oneAPI debian repository trusted, since otherwise it fails key verification with the new seq in trixie/sid
Mulas, Giacomo authoredminor update to make oneAPI debian repository trusted, since otherwise it fails key verification with the new seq in trixie/sid
UWSMCutoutWork.java 4.08 KiB
import java.io.File;
import java.io.PrintWriter;
import java.io.OutputStream;
import java.io.BufferedOutputStream;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import uws.UWSException;
import uws.job.ErrorType;
import uws.job.JobThread;
import uws.job.user.JobOwner;
import uws.job.user.DefaultJobOwner;
import uws.job.Result;
import uws.job.UWSJob;
import uws.job.jobInfo.JobInfo;
import uws.job.jobInfo.XMLJobInfo;
import uws.job.jobInfo.SingleValueJobInfo;
import uws.service.request.UploadFile;
import uws.service.file.LocalUWSFileManager;
import uws.service.file.UWSFileManager;
import uws.service.UWSUrl;
// rbu
import java.util.*;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class UWSMCutoutWork extends JobThread
{
final String RESPONSE_ENCODING = "utf-8";
private Settings settings = UWSMCutout.settings;
protected Datasets datasets = ( settings.amqpConn.isHostnameEmpty() ? new DatasetsCli(settings): new DatasetsAmqp(settings) );
/* NOTE needed if cutouts dir served by vlkb-datasets */
private String webappRootRequestUrl = null;
public UWSMCutoutWork(UWSJob j) throws UWSException{
super(j);
UWSUrl url = j.getUrl();
webappRootRequestUrl = url.getUrlHeader();
}
@Override
protected void jobWork() throws UWSException, InterruptedException
{
try
{
long startTime_msec = System.currentTimeMillis();
boolean showDuration = true;
/* UWS -> SODA (JDL in POST body is part of SODA REC) */
UploadFile jsonFile = (UploadFile)job.getAdditionalParameterValue("mcutout");
final String contentType = "text/xml"; // FIXME should be input param ? RESPONSEFORMAT ?
Result result = createResult("Report");
result.setMimeType("text/xml");
OutputStream respOutputStream = getResultOutput(result);
if(contentType.equals("text/xml") || contentType.equals("application/xml"))
{
InputStreamReader isr = new InputStreamReader(jsonFile.open());
BufferedReader input = new BufferedReader(isr);
StringBuffer jsonStringBuffer = new StringBuffer();
String line;
while((line = input.readLine()) != null)
{
jsonStringBuffer.append(line);
}
String reqJsonString = jsonStringBuffer.toString();
/* SODA -> Implementation */
MCutResult mresult = datasets.doMCutout(reqJsonString);
/* Implement -> SODA */
PrintWriter writer = new PrintWriter(new OutputStreamWriter(respOutputStream, RESPONSE_ENCODING));
String accessUrl = convertLocalPathnameToRemoteUrl(mresult.fileName,
settings.fitsPaths.cutouts(),
settings.fitsPaths.cutoutsUrl());
XmlSerializer.serializeToLegacyCutResult(writer, RESPONSE_ENCODING,
mresult, accessUrl,
//id, pos, band, time, pol, pixels, countNullValues,
showDuration, startTime_msec);
writer.close();
/* SODA -> UWS */
}
else
{
throw new AssertionError("Unsupported contentType for output: " + contentType);
}
/* FIXME here was uws-check is-job-Interrupted */
publishResult(result);
}
catch(IOException ex)
{
throw new UWSException("Internal error: jsonFile.open() throws IOException:" + ex.getMessage());
}
}
private String convertLocalPathnameToRemoteUrl(String localPathname,
String FITScutpath, String FITSRemoteUrlCutouts)
{
//LOGGER.info("trace " + localPathname);
String fileName = localPathname.replaceAll(FITScutpath + "/", "");
//LOGGER.info("local filename: " + fileName);
String remotefname = FITSRemoteUrlCutouts + "/" + fileName;
//LOGGER.info("remote url : " + remotefname);
return remotefname;
}
}