SimulatorService now using WindPattern objects, WIP.

This commit is contained in:
Nidhi Sawhney committed 2012-05-24 09:51:30 +02:00
1 parent e4e5a30ffa
commit cc717e51e8
6 files changed
+90 -26

No files matched your search

@@ -1,5 +1,7 @@
package com.sap.sailing.gwt.ui.client;
import java.util.List;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
import com.sap.sailing.gwt.ui.shared.BoatClassDTO;
@@ -9,7 +11,9 @@ import com.sap.sailing.gwt.ui.shared.WindFieldDTO;
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO;
import com.sap.sailing.gwt.ui.shared.WindLatticeDTO;
import com.sap.sailing.gwt.ui.shared.WindLatticeGenParamsDTO;
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO.WindPattern;
import com.sap.sailing.gwt.ui.shared.WindPatternDTO;
import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplay;
@RemoteServiceRelativePath("simulator")
public interface SimulatorService extends RemoteService {
@@ -22,7 +26,9 @@ public interface SimulatorService extends RemoteService {
public PathDTO[] getPaths(WindFieldGenParamsDTO params);
public WindPattern[] getWindPatterns();
public List<WindPatternDTO> getWindPatterns();
public WindPatternDisplay getWindPatternDisplay(WindPatternDTO pattern);
public BoatClassDTO[] getBoatClasses();
}
@@ -1,5 +1,7 @@
package com.sap.sailing.gwt.ui.client;
import java.util.List;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.sap.sailing.gwt.ui.shared.BoatClassDTO;
import com.sap.sailing.gwt.ui.shared.PathDTO;
@@ -8,7 +10,8 @@ import com.sap.sailing.gwt.ui.shared.WindFieldDTO;
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO;
import com.sap.sailing.gwt.ui.shared.WindLatticeDTO;
import com.sap.sailing.gwt.ui.shared.WindLatticeGenParamsDTO;
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO.WindPattern;
import com.sap.sailing.gwt.ui.shared.WindPatternDTO;
import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplay;
public interface SimulatorServiceAsync {
@@ -20,8 +23,10 @@ public interface SimulatorServiceAsync {
void getPaths(WindFieldGenParamsDTO params, AsyncCallback<PathDTO[]> callback);
void getWindPatterns(AsyncCallback<WindPattern[]> callback);
void getWindPatterns(AsyncCallback<List<WindPatternDTO>> callback);
void getWindPatternDisplay(WindPatternDTO pattern, AsyncCallback<WindPatternDisplay> callback);
void getBoatClasses(AsyncCallback<BoatClassDTO[]> callback);
}
@@ -22,9 +22,12 @@ import com.sap.sailing.gwt.ui.shared.PositionDTO;
import com.sap.sailing.gwt.ui.shared.WindDTO;
import com.sap.sailing.gwt.ui.shared.WindFieldDTO;
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO;
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO.WindPattern;
import com.sap.sailing.gwt.ui.shared.WindLatticeDTO;
import com.sap.sailing.gwt.ui.shared.WindLatticeGenParamsDTO;
import com.sap.sailing.gwt.ui.shared.WindPatternDTO;
import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplay;
import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplayManager;
import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplayManager.WindPattern;
import com.sap.sailing.simulator.Path;
import com.sap.sailing.simulator.PolarDiagram;
import com.sap.sailing.simulator.SailingSimulator;
@@ -194,7 +197,7 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula
PathDTO[] pathDTO = new PathDTO[1];
List<WindDTO> path = getOptimumPath(course, wf);
pathDTO[0] = new PathDTO();
pathDTO[0] = new PathDTO("Path 1");
pathDTO[0].setMatrix(path);
return pathDTO;
}
@@ -206,6 +209,7 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula
SailingSimulator solver = new SailingSimulatorImpl(sp);
Path pth = solver.getOptimumPath();
int i = 0;
List<WindDTO> wList = new ArrayList<WindDTO>();
for (TimedPositionWithSpeed p : pth.getPathPoints()) {
// the null in the Wind output is the timestamp - this Wind is time-invariant!
@@ -216,14 +220,16 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula
Wind localWind = wf.getWind(pth.getPositionAtTime(p.getTimePoint()));
logger.fine(localWind.toString());
WindDTO w = createWindDTO(localWind);
//w.trueWindBearingDeg = 10.0*i;
++i;
wList.add(w);
}
return wList;
}
public WindPattern[] getWindPatterns() {
return WindFieldGenParamsDTO.WindPattern.values();
public List<WindPatternDTO> getWindPatterns() {
return WindPatternDisplayManager.INSTANCE.getWindPatterns();
}
public BoatClassDTO[] getBoatClasses() {
@@ -249,4 +255,9 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula
return windDTO;
}
@Override
public WindPatternDisplay getWindPatternDisplay(WindPatternDTO pattern) {
return WindPatternDisplayManager.INSTANCE.getDisplay(WindPattern.valueOf(pattern.name));
}
}
@@ -4,10 +4,18 @@ import java.util.List;
import com.google.gwt.user.client.rpc.IsSerializable;
public class PathDTO implements IsSerializable {
public class PathDTO extends NamedDTO implements IsSerializable {
private List<WindDTO> matrix;
public PathDTO() {
}
public PathDTO(String name) {
super(name);
}
public List<WindDTO> getMatrix() {
return matrix;
}
@@ -4,11 +4,7 @@ import com.google.gwt.user.client.rpc.IsSerializable;
public class WindFieldGenParamsDTO implements IsSerializable {
public enum WindPattern {
CONSTANT,
OSCILLATING
}
private PositionDTO northWest;
private PositionDTO southEast;
@@ -1,8 +1,12 @@
package com.sap.sailing.gwt.ui.simulator;
import java.util.Date;
import java.util.List;
import java.util.logging.Logger;
import com.google.gwt.dom.client.Style;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
@@ -31,8 +35,10 @@ import com.sap.sailing.gwt.ui.client.TimePanelSettings;
import com.sap.sailing.gwt.ui.client.Timer;
import com.sap.sailing.gwt.ui.client.Timer.PlayModes;
import com.sap.sailing.gwt.ui.shared.BoatClassDTO;
import com.sap.sailing.gwt.ui.shared.WindFieldGenParamsDTO.WindPattern;
import com.sap.sailing.gwt.ui.shared.WindPatternDTO;
import com.sap.sailing.gwt.ui.shared.controls.slider.SliderBar;
import com.sap.sailing.gwt.ui.shared.windpattern.WindPatternDisplay;
public class SimulatorMainPanel extends SplitLayoutPanel {
@@ -70,6 +76,32 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
}
}
private class PatternSelectorHandler implements ChangeHandler {
@Override
public void onChange(ChangeEvent arg0) {
logger.info(patternSelector.getItemText(patternSelector.getSelectedIndex()));
WindPatternDTO pattern = new WindPatternDTO(patternSelector.getItemText(patternSelector.getSelectedIndex()));
simulatorSvc.getWindPatternDisplay(pattern, new AsyncCallback<WindPatternDisplay>() {
@Override
public void onFailure(Throwable message) {
errorReporter.reportError("Error retreiving wind patterns" + message.getMessage());
}
@Override
public void onSuccess(final WindPatternDisplay display) {
logger.info(display.getSettings().toString());
}
});
}
}
public SimulatorMainPanel(SimulatorServiceAsync svc, StringMessages stringMessages, ErrorReporter errorReporter) {
@@ -83,6 +115,8 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
rightPanel = new FlowPanel();
wControls = new WindControlParameters(1, 0);
patternSelector = new ListBox();
patternSelector.addChangeHandler(new PatternSelectorHandler());
boatSelector = new ListBox();
timer = new Timer(PlayModes.Replay, 1000l);
timer.setPlaySpeedFactor(30);
@@ -150,7 +184,7 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
Label pattern = new Label(stringMessages.pattern());
hp.add(pattern);
simulatorSvc.getWindPatterns(new AsyncCallback<WindPattern[]>() {
simulatorSvc.getWindPatterns(new AsyncCallback<List<WindPatternDTO>> () {
@Override
public void onFailure(Throwable message) {
@@ -158,9 +192,9 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
}
@Override
public void onSuccess(WindPattern[] patterns) {
for (int i = 0; i < patterns.length; ++i) {
patternSelector.addItem(patterns[i].toString());
public void onSuccess(List<WindPatternDTO> patterns) {
for (WindPatternDTO p : patterns) {
patternSelector.addItem(p.name);
}
}
@@ -175,12 +209,12 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
private void addSlider(Panel parentPanel, String labelName, double minValue, double maxValue,
final ValueChangeHandler<Double> handler) {
VerticalPanel vp = new VerticalPanel();
vp.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
FlowPanel vp = new FlowPanel();
//vp.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
Label label = new Label(labelName);
vp.add(label);
//FlowPanel fp = new FlowPanel();
final SliderBar sliderBar = new SliderBar(minValue, maxValue);
sliderBar.setStepSize(1, false);
@@ -207,10 +241,14 @@ public class SimulatorMainPanel extends SplitLayoutPanel {
// sliderBar.setMaxValue(10.0, false);
sliderBar.setCurrentValue(wControls.windSpeedInKnots);
vp.add(sliderBar);
sliderBar.setWidth("60%");
// sliderBar.setWidth("100%");
//vp.add(fp);
parentPanel.add(vp);
vp.setWidth("80%");
label.getElement().getStyle().setFloat(Style.Float.LEFT);
sliderBar.getElement().getStyle().setFloat(Style.Float.RIGHT);
sliderBar.setWidth("60%");
sliderBar.setHeight("25px");
// vp.setWidth("80%");
}
private void createSailingSetup(Panel controlPanel) {