use of org.concord.energy3d.model.Door in project energy3d by concord-consortium.
the class GroupAnnualAnalysis method toJson.
@Override
public String toJson() {
String type = "Unknown";
final ArrayList<String> names = new ArrayList<String>();
for (final HousePart p : selectedParts) {
if (p instanceof SolarPanel) {
names.add("Solar " + p.getId());
type = "Solar Panel";
} else if (p instanceof Rack) {
names.add("Solar " + p.getId());
type = "Rack";
} else if (p instanceof Mirror) {
names.add("Solar " + p.getId());
type = "Mirror";
} else if (p instanceof ParabolicTrough) {
names.add("Solar " + p.getId());
type = "Parabolic Trough";
} else if (p instanceof ParabolicDish) {
names.add("Solar " + p.getId());
type = "Parabolic Dish";
} else if (p instanceof FresnelReflector) {
names.add("Solar " + p.getId());
type = "Fresnel Reflector";
} else if (p instanceof Wall) {
names.add("Heat Gain " + p.getId());
type = "Wall";
} else if (p instanceof Roof) {
names.add("Heat Gain " + p.getId());
type = "Roof";
} else if (p instanceof Door) {
names.add("Heat Gain " + p.getId());
type = "Door";
} else if (p instanceof Window) {
names.add("Solar " + p.getId());
names.add("Heat Gain " + p.getId());
type = "Window";
} else if (p instanceof Foundation) {
final Foundation foundation = (Foundation) p;
switch(foundation.getProjectType()) {
case Foundation.TYPE_PV_PROJECT:
names.add("PV " + p.getId());
break;
case Foundation.TYPE_CSP_PROJECT:
names.add("CSP " + p.getId());
break;
case Foundation.TYPE_BUILDING:
names.add("Building " + p.getId());
break;
}
type = "Foundation";
}
}
String s = "{\"Type\": \"" + type + "\", \"Months\": " + getNumberOfDataPoints();
for (final String name : names) {
final List<Double> data = graph.getData(name);
if (data == null) {
continue;
}
s += ", \"" + name + "\": {";
s += "\"Monthly\": [";
for (final Double x : data) {
s += Graph.ENERGY_FORMAT.format(x) + ",";
}
s = s.substring(0, s.length() - 1);
s += "]\n";
s += ", \"Total\": " + Graph.ENERGY_FORMAT.format(getResult(name));
s += "}";
}
s += "}";
return s;
}
use of org.concord.energy3d.model.Door in project energy3d by concord-consortium.
the class GroupDailyAnalysis method toJson.
@Override
public String toJson() {
String type = "Unknown";
final ArrayList<String> names = new ArrayList<String>();
for (final HousePart p : selectedParts) {
if (p instanceof SolarPanel) {
names.add("Solar " + p.getId());
type = "Solar Panel";
} else if (p instanceof Rack) {
names.add("Solar " + p.getId());
type = "Rack";
} else if (p instanceof Mirror) {
names.add("Solar " + p.getId());
type = "Mirror";
} else if (p instanceof ParabolicTrough) {
names.add("Solar " + p.getId());
type = "Parabolic Trough";
} else if (p instanceof ParabolicDish) {
names.add("Solar " + p.getId());
type = "Parabolic Dish";
} else if (p instanceof FresnelReflector) {
names.add("Solar " + p.getId());
type = "Fresnel Reflector";
} else if (p instanceof Wall) {
names.add("Heat Gain " + p.getId());
type = "Wall";
} else if (p instanceof Roof) {
names.add("Heat Gain " + p.getId());
type = "Roof";
} else if (p instanceof Door) {
names.add("Heat Gain " + p.getId());
type = "Door";
} else if (p instanceof Window) {
names.add("Solar " + p.getId());
names.add("Heat Gain " + p.getId());
type = "Window";
} else if (p instanceof Foundation) {
final Foundation foundation = (Foundation) p;
switch(foundation.getProjectType()) {
case Foundation.TYPE_PV_PROJECT:
names.add("PV " + p.getId());
break;
case Foundation.TYPE_CSP_PROJECT:
names.add("CSP " + p.getId());
break;
case Foundation.TYPE_BUILDING:
names.add("Building " + p.getId());
break;
}
type = "Foundation";
}
}
String s = "{\"Type\": \"" + type + "\"";
for (final String name : names) {
final List<Double> data = graph.getData(name);
if (data == null) {
continue;
}
s += ", \"" + name + "\": {";
s += "\"Hourly\": [";
for (final Double x : data) {
s += Graph.FIVE_DECIMALS.format(x) + ",";
}
s = s.substring(0, s.length() - 1);
s += "]\n";
s += ", \"Total\": " + Graph.ENERGY_FORMAT.format(getResult(name));
s += "}";
}
s += "}";
return s;
}
use of org.concord.energy3d.model.Door in project energy3d by concord-consortium.
the class BuildingCost method showPieChart.
@Override
void showPieChart() {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
final Foundation selectedBuilding;
if (selectedPart == null || selectedPart instanceof Tree || selectedPart instanceof Human) {
selectedBuilding = null;
} else if (selectedPart instanceof Foundation) {
selectedBuilding = (Foundation) selectedPart;
} else {
selectedBuilding = selectedPart.getTopContainer();
selectedPart.setEditPointsVisible(false);
SceneManager.getInstance().setSelectedPart(selectedBuilding);
}
String details = "";
int count = 0;
for (final HousePart p : Scene.getInstance().getParts()) {
if (p instanceof Foundation) {
count++;
if (selectedBuilding == null) {
final Foundation foundation = (Foundation) p;
details += "$" + (int) getCostByFoundation(foundation) + " (" + foundation.getId() + ") | ";
}
}
}
if (selectedBuilding == null) {
if (count > 0) {
details = details.substring(0, details.length() - 2);
}
}
double wallSum = 0;
double floorSum = 0;
double windowSum = 0;
double roofSum = 0;
double foundationSum = 0;
double doorSum = 0;
double solarPanelSum = 0;
double treeSum = 0;
String info;
if (selectedBuilding != null) {
info = "Building #" + selectedBuilding.getId();
foundationSum = getPartCost(selectedBuilding);
for (final HousePart p : Scene.getInstance().getParts()) {
if (p.getTopContainer() == selectedBuilding) {
if (p instanceof Wall) {
wallSum += getPartCost(p);
} else if (p instanceof Floor) {
floorSum += getPartCost(p);
} else if (p instanceof Window) {
windowSum += getPartCost(p);
} else if (p instanceof Roof) {
roofSum += getPartCost(p);
} else if (p instanceof Door) {
doorSum += getPartCost(p);
} else if (p instanceof SolarPanel || p instanceof Rack) {
solarPanelSum += getPartCost(p);
}
}
if (count <= 1) {
if (p instanceof Tree && !p.getLockEdit()) {
treeSum += getPartCost(p);
}
}
}
} else {
info = count + " buildings";
for (final HousePart p : Scene.getInstance().getParts()) {
if (p instanceof Wall) {
wallSum += getPartCost(p);
} else if (p instanceof Floor) {
floorSum += getPartCost(p);
} else if (p instanceof Window) {
windowSum += getPartCost(p);
} else if (p instanceof Roof) {
roofSum += getPartCost(p);
} else if (p instanceof Foundation) {
foundationSum += getPartCost(p);
} else if (p instanceof Door) {
doorSum += getPartCost(p);
} else if (p instanceof SolarPanel || p instanceof Rack) {
solarPanelSum += getPartCost(p);
} else if (p instanceof Tree && !p.getLockEdit()) {
treeSum += getPartCost(p);
}
}
}
final double[] data = new double[] { wallSum, windowSum, roofSum, foundationSum, floorSum, doorSum, solarPanelSum, treeSum };
// show them in a popup window
final PieChart pie = new PieChart(data, BuildingCostGraph.colors, BuildingCostGraph.legends, "$", info, count > 1 ? details : null, true);
pie.setBackground(Color.WHITE);
pie.setBorder(BorderFactory.createEtchedBorder());
final JDialog dialog = new JDialog(MainFrame.getInstance(), "Project Costs by Category", true);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.getContentPane().add(pie, BorderLayout.CENTER);
final JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
final JButton buttonItemize = new JButton("Itemize");
buttonItemize.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
showItemizedCost();
}
});
buttonPanel.add(buttonItemize);
final JButton buttonClose = new JButton("Close");
buttonClose.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
dialog.dispose();
}
});
buttonPanel.add(buttonClose);
dialog.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
dialog.pack();
dialog.setLocationRelativeTo(MainFrame.getInstance());
dialog.setVisible(true);
}
use of org.concord.energy3d.model.Door in project energy3d by concord-consortium.
the class ChangeDoorSizeOnWallCommand method redo.
@Override
public void redo() throws CannotRedoException {
super.redo();
final int n = doors.size();
for (int i = 0; i < n; i++) {
final Door d = doors.get(i);
d.setDoorWidth(newWidths[i]);
d.setDoorHeight(newHeights[i]);
d.draw();
}
wall.draw();
SceneManager.getInstance().refresh();
}
use of org.concord.energy3d.model.Door in project energy3d by concord-consortium.
the class SetSizeForDoorsOnFoundationCommand method undo.
@Override
public void undo() throws CannotUndoException {
super.undo();
final int n = doors.size();
newWidths = new double[n];
newHeights = new double[n];
for (int i = 0; i < n; i++) {
final Door d = doors.get(i);
newWidths[i] = d.getDoorWidth();
newHeights[i] = d.getDoorHeight();
d.setDoorWidth(oldWidths[i]);
d.setDoorHeight(oldHeights[i]);
d.draw();
d.getContainer().draw();
}
SceneManager.getInstance().refresh();
}
Aggregations