Allow user to enable/disable downsampler in sensordata upload dialog

This commit is contained in:
Papick Garcia Taboada committed 2017-11-21 18:03:22 +01:00
1 parent aeb45c6257
commit 1dedaae406
5 files changed
+26 -11

No files matched your search

@@ -12,6 +12,7 @@ import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.FormPanel;
@@ -35,6 +36,8 @@ public abstract class AbstractFileImportWidget extends Composite {
@UiField FileUpload fileUploadUi;
@UiField ListBox preferredImporterUi;
@UiField Button importButtonUi;
@UiField
CheckBox downsampleUi;
@UiField Image loadingImageUi;
@UiField FormPanel formPanelUi;
private final TrackFileImportDeviceIdentifierTableWrapper table;
@@ -72,6 +75,10 @@ public abstract class AbstractFileImportWidget extends Composite {
formPanelUi.submit();
}
protected void setDownsampleOptionVisible(boolean visible) {
downsampleUi.setVisible(visible);
}
@UiHandler("formPanelUi")
void onFileImportComplete(SubmitCompleteEvent event) {
if (shouldClearListOnNewUploadComplete) {
@@ -22,6 +22,7 @@
<g:HTMLPanel addStyleNames="{style.formPanelContent}">
<g:FileUpload name="file" ui:field="fileUploadUi"/>
<g:ListBox name="preferredImporter" ui:field="preferredImporterUi" height="21px"/>
<g:CheckBox name="downsample" checked="true" ui:field="downsampleUi">Downsample</g:CheckBox>
<g:Button styleName="" ui:field="importButtonUi"/>
<g:Image resource="{res.transparentGif}" addStyleNames="{style.loadingImage}" ui:field="loadingImageUi"/>
</g:HTMLPanel>
@@ -15,6 +15,7 @@ public class SensorDataImportWidget extends AbstractFileImportWidget implements
super("/sailingserver/sensordata/import", stringMessages, table, sailingService, errorReporter);
setMultipleFileUploadEnabled(true);
setShouldClearListOnNewUploadComplete(false);
setDownsampleOptionVisible(true);
}
@Override
@@ -14,6 +14,7 @@ public class TrackFileImportWidget extends AbstractFileImportWidget implements I
public TrackFileImportWidget(TrackFileImportDeviceIdentifierTableWrapper table, StringMessages stringMessages,
final SailingServiceAsync sailingService, final ErrorReporter errorReporter) {
super("/sailingserver/trackfiles/import", stringMessages, table, sailingService, errorReporter);
setDownsampleOptionVisible(false);
}
@Override
@@ -52,14 +52,14 @@ public class SensorDataImportServlet extends AbstractFileUploadServlet {
*
* @param files
* the file items together with the names of the importer to use for importing the respective file's
* contents; the importer names are matched against {@link DoubleVectorFixImporter#getType()} for
* all importers found registered in the OSGi registry. The first matching importer is used for the
* file. The importer is selected on a per-file basis.
* contents; the importer names are matched against {@link DoubleVectorFixImporter#getType()} for all
* importers found registered in the OSGi registry. The first matching importer is used for the file. The
* importer is selected on a per-file basis.
*
* @throws IOException
*/
private Iterable<TrackFileImportDeviceIdentifier> importFiles(Iterable<Pair<String, FileItem>> files)
throws IOException {
private Iterable<TrackFileImportDeviceIdentifier> importFiles(boolean enableDownsampler,
Iterable<Pair<String, FileItem>> files) throws IOException {
final Set<TrackFileImportDeviceIdentifier> deviceIds = new HashSet<>();
final Map<DeviceIdentifier, TimePoint> from = new HashMap<>();
final Map<DeviceIdentifier, TimePoint> to = new HashMap<>();
@@ -102,7 +102,7 @@ public class SensorDataImportServlet extends AbstractFileUploadServlet {
}
}
}
}, fi.getName(), requestedImporterName, /* downsample */ true);
}, fi.getName(), requestedImporterName, enableDownsampler);
logger.log(Level.INFO, "Successfully imported file " + requestedImporterName);
} catch (FormatNotSupportedException e) {
logger.log(Level.INFO, "Failed to import file " + requestedImporterName);
@@ -119,10 +119,14 @@ public class SensorDataImportServlet extends AbstractFileUploadServlet {
protected void process(List<FileItem> fileItems, HttpServletRequest req, HttpServletResponse resp)
throws IOException {
String importerName = null;
searchForPreferredImporter: for (FileItem fi : fileItems) {
if ("preferredImporter".equalsIgnoreCase(fi.getFieldName())) {
importerName = fi.getString();
break searchForPreferredImporter;
boolean enableDownsampler = false;
for (FileItem fi : fileItems) {
if (fi.isFormField()) {
if ("preferredImporter".equalsIgnoreCase(fi.getFieldName())) {
importerName = fi.getString();
} else if ("downsample".equalsIgnoreCase(fi.getFieldName())) {
enableDownsampler = "on".equalsIgnoreCase(fi.getString());
}
}
}
if (importerName == null) {
@@ -134,7 +138,8 @@ public class SensorDataImportServlet extends AbstractFileUploadServlet {
filesAndImporterNames.add(new Pair<>(importerName, fi));
}
}
final Iterable<TrackFileImportDeviceIdentifier> mappingList = importFiles(filesAndImporterNames);
final Iterable<TrackFileImportDeviceIdentifier> mappingList = importFiles(enableDownsampler,
filesAndImporterNames);
resp.setContentType("text/html");
for (TrackFileImportDeviceIdentifier mapping : mappingList) {
String stringRep = mapping.getId().toString();