init
This commit is contained in:
commit
bdbb262ec1
BIN
Formula Manager.jar
Normal file
BIN
Formula Manager.jar
Normal file
Binary file not shown.
6
README.md
Normal file
6
README.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Formula [Formula Manager](http://zakscode.com)
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Presenting [Formula Manager v1.0](http://zakscode.com),
|
||||||
|
|
||||||
|
Software to record **vendors**, **materials**, and **formulas** using the materials.
|
14
configuration.properties
Normal file
14
configuration.properties
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#Fri Jun 29 23:27:23 EDT 2018
|
||||||
|
debug=false
|
||||||
|
resolution-y=600
|
||||||
|
port=
|
||||||
|
resolution-x=1120
|
||||||
|
metric=true
|
||||||
|
username=
|
||||||
|
allow-publish=false
|
||||||
|
large-units=false
|
||||||
|
temp-path=/temp/
|
||||||
|
data-path=/data/
|
||||||
|
data-URL=/formulaManagerData/
|
||||||
|
URL=screenprintingsuppliescanada.com
|
||||||
|
password=
|
BIN
data/components.data
Normal file
BIN
data/components.data
Normal file
Binary file not shown.
BIN
data/formulas.data
Normal file
BIN
data/formulas.data
Normal file
Binary file not shown.
BIN
data/userComponents.data
Normal file
BIN
data/userComponents.data
Normal file
Binary file not shown.
BIN
data/userFormulas.data
Normal file
BIN
data/userFormulas.data
Normal file
Binary file not shown.
BIN
data/userVendors.data
Normal file
BIN
data/userVendors.data
Normal file
Binary file not shown.
BIN
data/vendors.data
Normal file
BIN
data/vendors.data
Normal file
Binary file not shown.
48
log.txt
Normal file
48
log.txt
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
java.io.IOException: expected='endstream' actual='' at offset 555094
|
||||||
|
at org.apache.pdfbox.pdfparser.BaseParser.parseCOSStream(BaseParser.java:607)
|
||||||
|
at org.apache.pdfbox.pdfparser.PDFParser.parseObject(PDFParser.java:650)
|
||||||
|
at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:203)
|
||||||
|
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1227)
|
||||||
|
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1194)
|
||||||
|
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1165)
|
||||||
|
at com.zakscode.FormulaManager.Export.printPDF(Export.java:133)
|
||||||
|
at com.zakscode.FormulaManager.Frame$13.actionPerformed(Frame.java:201)
|
||||||
|
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
|
||||||
|
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
|
||||||
|
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
|
||||||
|
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
|
||||||
|
at javax.swing.AbstractButton.doClick(Unknown Source)
|
||||||
|
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
|
||||||
|
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
|
||||||
|
at java.awt.Component.processMouseEvent(Unknown Source)
|
||||||
|
at javax.swing.JComponent.processMouseEvent(Unknown Source)
|
||||||
|
at java.awt.Component.processEvent(Unknown Source)
|
||||||
|
at java.awt.Container.processEvent(Unknown Source)
|
||||||
|
at java.awt.Component.dispatchEventImpl(Unknown Source)
|
||||||
|
at java.awt.Container.dispatchEventImpl(Unknown Source)
|
||||||
|
at java.awt.Component.dispatchEvent(Unknown Source)
|
||||||
|
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
|
||||||
|
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
|
||||||
|
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
|
||||||
|
at java.awt.Container.dispatchEventImpl(Unknown Source)
|
||||||
|
at java.awt.Window.dispatchEventImpl(Unknown Source)
|
||||||
|
at java.awt.Component.dispatchEvent(Unknown Source)
|
||||||
|
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
|
||||||
|
at java.awt.EventQueue.access$500(Unknown Source)
|
||||||
|
at java.awt.EventQueue$3.run(Unknown Source)
|
||||||
|
at java.awt.EventQueue$3.run(Unknown Source)
|
||||||
|
at java.security.AccessController.doPrivileged(Native Method)
|
||||||
|
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
|
||||||
|
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
|
||||||
|
at java.awt.EventQueue$4.run(Unknown Source)
|
||||||
|
at java.awt.EventQueue$4.run(Unknown Source)
|
||||||
|
at java.security.AccessController.doPrivileged(Native Method)
|
||||||
|
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
|
||||||
|
at java.awt.EventQueue.dispatchEvent(Unknown Source)
|
||||||
|
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
|
||||||
|
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
|
||||||
|
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
|
||||||
|
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
|
||||||
|
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
|
||||||
|
at java.awt.EventDispatchThread.run(Unknown Source)
|
||||||
|
|
BIN
resources/wkhtmltopdf.exe
Normal file
BIN
resources/wkhtmltopdf.exe
Normal file
Binary file not shown.
BIN
resources/wkhtmltox.dll
Normal file
BIN
resources/wkhtmltox.dll
Normal file
Binary file not shown.
85
source/Component.java
Normal file
85
source/Component.java
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
* Decompiled with CFR 0_123.
|
||||||
|
*/
|
||||||
|
package com.zakscode.FormulaManager;
|
||||||
|
|
||||||
|
import com.zakscode.FormulaManager.Main;
|
||||||
|
import com.zakscode.FormulaManager.TableArray;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class Component
|
||||||
|
implements Serializable,
|
||||||
|
TableArray {
|
||||||
|
private static final long serialVersionUID = -2154735157565376110L;
|
||||||
|
private String partNum;
|
||||||
|
private String vendor;
|
||||||
|
private String description;
|
||||||
|
private double cost;
|
||||||
|
private Date date;
|
||||||
|
|
||||||
|
public Component(String partNum, String vendor, String description, double cost) {
|
||||||
|
this.partNum = partNum;
|
||||||
|
this.vendor = vendor;
|
||||||
|
this.description = description;
|
||||||
|
this.cost = cost;
|
||||||
|
this.date = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPartNum() {
|
||||||
|
return this.partNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVendor() {
|
||||||
|
return this.vendor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return this.description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getCost() {
|
||||||
|
DecimalFormat df = new DecimalFormat("0.00");
|
||||||
|
if (Main.metric) {
|
||||||
|
return Double.parseDouble(df.format(this.cost));
|
||||||
|
}
|
||||||
|
return Double.parseDouble(df.format(this.cost / 2.2));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDate() {
|
||||||
|
return this.date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPartNum(String partNum) {
|
||||||
|
this.partNum = partNum;
|
||||||
|
this.date = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVendor(String vendor) {
|
||||||
|
this.vendor = vendor;
|
||||||
|
this.date = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
this.date = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCost(double cost) {
|
||||||
|
this.cost = Main.metric ? cost : cost * 2.2046;
|
||||||
|
this.date = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object[] toArray() {
|
||||||
|
DecimalFormat df = new DecimalFormat("$0.00 ");
|
||||||
|
return new Object[]{this.partNum, this.vendor, this.description, df.format(this.getCost()), this.date};
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
return this.partNum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
35
source/ComponentQuantity.java
Normal file
35
source/ComponentQuantity.java
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* Decompiled with CFR 0_123.
|
||||||
|
*/
|
||||||
|
package com.zakscode.FormulaManager;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public class ComponentQuantity
|
||||||
|
implements Serializable {
|
||||||
|
private static final long serialVersionUID = 218124235517877938L;
|
||||||
|
private String component;
|
||||||
|
private double quantity;
|
||||||
|
|
||||||
|
public ComponentQuantity(String component, double quantity) {
|
||||||
|
this.component = component;
|
||||||
|
this.quantity = quantity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getComponent() {
|
||||||
|
return this.component;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getQuantity() {
|
||||||
|
return this.quantity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setComponent(String component) {
|
||||||
|
this.component = component;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQuantity(double quantity) {
|
||||||
|
this.quantity = quantity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
52
source/Configuration.java
Normal file
52
source/Configuration.java
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Decompiled with CFR 0_123.
|
||||||
|
*/
|
||||||
|
package com.zakscode.FormulaManager;
|
||||||
|
|
||||||
|
import com.zakscode.FormulaManager.Logger;
|
||||||
|
import com.zakscode.FormulaManager.Main;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
public class Configuration
|
||||||
|
extends Properties {
|
||||||
|
private static final long serialVersionUID = 5884857151380277240L;
|
||||||
|
private InputStream inputStream;
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
public Configuration() {
|
||||||
|
this.name = "configuration.properties";
|
||||||
|
try {
|
||||||
|
this.inputStream = new FileInputStream(Main.baseDir + this.name);
|
||||||
|
this.load(this.inputStream);
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
Logger.write(e);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
try {
|
||||||
|
this.inputStream.close();
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
Logger.write(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save() {
|
||||||
|
File f = new File(Main.baseDir + this.name);
|
||||||
|
try {
|
||||||
|
FileOutputStream out = new FileOutputStream(f);
|
||||||
|
this.store(out, null);
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
Logger.write(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
161
source/Export.java
Normal file
161
source/Export.java
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
/*
|
||||||
|
* Decompiled with CFR 0_123.
|
||||||
|
*/
|
||||||
|
package com.zakscode.FormulaManager;
|
||||||
|
|
||||||
|
import com.zakscode.FormulaManager.Component;
|
||||||
|
import com.zakscode.FormulaManager.ComponentQuantity;
|
||||||
|
import com.zakscode.FormulaManager.Configuration;
|
||||||
|
import com.zakscode.FormulaManager.FileManager;
|
||||||
|
import com.zakscode.FormulaManager.Formula;
|
||||||
|
import com.zakscode.FormulaManager.Logger;
|
||||||
|
import com.zakscode.FormulaManager.Main;
|
||||||
|
import com.zakscode.FormulaManager.Vendor;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Set;
|
||||||
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
|
|
||||||
|
class Export {
|
||||||
|
private static final String HEADER = "<!DOCTYPE html><html><body><center><h1>FH & Sons</h1></center>";
|
||||||
|
private static final String FOOTER = "</body></html>";
|
||||||
|
|
||||||
|
Export() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static File vendorsToHTML(FileManager<Vendor> v) {
|
||||||
|
try {
|
||||||
|
File doc = new File(Main.baseDir + Main.conf.getProperty("temp-path") + "Vendors.html");
|
||||||
|
PrintWriter pw = new PrintWriter(doc);
|
||||||
|
String html = "<!DOCTYPE html><html><body><center><h1>FH & Sons</h1></center>";
|
||||||
|
Set keys = v.keySet();
|
||||||
|
Object[] keysArray = keys.toArray(new String[keys.size()]);
|
||||||
|
Arrays.sort(keysArray);
|
||||||
|
boolean floatLeft = true;
|
||||||
|
for (Object key : keysArray) {
|
||||||
|
html = html + (floatLeft ? "<div style=\"overflow: hidden;\">" : "") + "<div style=\"float: " + (floatLeft ? "left; " : "right; ") + "width: 45%; overflow: hidden; padding: 0px 20px 0px 20px\">";
|
||||||
|
html = html + "<p><strong style=\"float: left\">Name: </strong>" + (String)key + "</p>";
|
||||||
|
html = html + (key.trim().equals("") ? "<br />" : "");
|
||||||
|
html = html + "<p><strong style=\"float: left\">Phone: </strong> " + ((Vendor)v.get(key)).getPhone() + "</p>";
|
||||||
|
html = html + (((Vendor)v.get(key)).getPhone().trim().equals("") ? "<br />" : "");
|
||||||
|
html = html + "<p><strong style=\"float: left\">Email: </strong> " + ((Vendor)v.get(key)).getEmail() + "</p>";
|
||||||
|
html = html + (((Vendor)v.get(key)).getEmail().trim().equals("") ? "<br />" : "");
|
||||||
|
html = html + "<p><strong style=\"float: left\">Website: </strong> " + ((Vendor)v.get(key)).getWebsite() + "</p>";
|
||||||
|
html = html + "<br /></div>" + (floatLeft ? "" : "</div><br />");
|
||||||
|
floatLeft = !floatLeft;
|
||||||
|
}
|
||||||
|
if (keysArray.length % 2 == 1) {
|
||||||
|
html = html + "</div>";
|
||||||
|
}
|
||||||
|
html = html + "</body></html>";
|
||||||
|
pw.write(html);
|
||||||
|
pw.close();
|
||||||
|
return doc;
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
Logger.write(e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static File componentsToHTML(FileManager<Component> c) {
|
||||||
|
try {
|
||||||
|
File doc = new File(Main.baseDir + Main.conf.getProperty("temp-path") + "Components.html");
|
||||||
|
PrintWriter pw = new PrintWriter(doc);
|
||||||
|
String html = "<!DOCTYPE html><html><body><center><h1>FH & Sons</h1></center>";
|
||||||
|
Set keys = c.keySet();
|
||||||
|
Object[] keysArray = keys.toArray(new String[keys.size()]);
|
||||||
|
Arrays.sort(keysArray);
|
||||||
|
boolean floatLeft = true;
|
||||||
|
for (Object key : keysArray) {
|
||||||
|
html = html + (floatLeft ? "<div style=\"overflow: hidden;\">" : "") + "<div style=\"float: " + (floatLeft ? "left; " : "right; ") + "width: 45%; overflow: hidden; padding: 0px 20px 0px 20px\">";
|
||||||
|
html = html + "<p><strong style=\"float: left\">Name:</strong> " + (String)key + "</p>";
|
||||||
|
html = html + (key.trim().equals("") ? "<br />" : "");
|
||||||
|
html = html + "<p><strong style=\"float: left\">Vendor:</strong> " + ((Component)c.get(key)).getVendor() + "</p>";
|
||||||
|
html = html + (((Component)c.get(key)).getVendor().trim().equals("") ? "<br />" : "");
|
||||||
|
html = html + "<p><strong style=\"float: left\">Description:</strong> " + ((Component)c.get(key)).getDescription() + "</p>";
|
||||||
|
html = html + (((Component)c.get(key)).getDescription().trim().equals("") ? "<br />" : "");
|
||||||
|
html = html + "<p><strong style=\"float: left\">Cost (per " + (Main.metric ? "kg" : "lb") + "): </strong> " + new DecimalFormat("$0.00").format(((Component)c.get(key)).getCost() / (double)(Main.metric ? true : true) ? 1 : 0) + "</p>";
|
||||||
|
html = html + "</div>" + (floatLeft ? "" : "</div><br />");
|
||||||
|
floatLeft = !floatLeft;
|
||||||
|
}
|
||||||
|
if (keysArray.length % 2 == 1) {
|
||||||
|
html = html + "</div>";
|
||||||
|
}
|
||||||
|
html = html + "</body></html>";
|
||||||
|
pw.write(html);
|
||||||
|
pw.close();
|
||||||
|
return doc;
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
Logger.write(e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static File formulasToHTML(FileManager<Formula> f) {
|
||||||
|
try {
|
||||||
|
File doc = new File(Main.baseDir + Main.conf.getProperty("temp-path") + "Formulas.html");
|
||||||
|
PrintWriter pw = new PrintWriter(doc);
|
||||||
|
String html = "<!DOCTYPE html><html><body><center><h1>FH & Sons</h1></center>";
|
||||||
|
Set keys = f.keySet();
|
||||||
|
Object[] keysArray = keys.toArray(new String[keys.size()]);
|
||||||
|
Arrays.sort(keysArray);
|
||||||
|
boolean floatLeft = true;
|
||||||
|
for (Object key : keysArray) {
|
||||||
|
html = html + (floatLeft ? "<div style=\"overflow: hidden;\">" : "") + "<div style=\"float: " + (floatLeft ? "left; " : "right; ") + "width: 45%; overflow: hidden; padding: 0px 20px 0px 20px\">";
|
||||||
|
html = html + "<p><strong style=\"float: left\">" + (String)key + "</strong></p> <strong style=\"float: right\">" + ((Formula)f.get(key)).getDescription() + "</strong>";
|
||||||
|
double total = 0.0;
|
||||||
|
for (ComponentQuantity cq : (Formula)f.get(key)) {
|
||||||
|
total += cq.getQuantity();
|
||||||
|
html = html + "<br />";
|
||||||
|
html = html + "<p style=\"float: left; margin: 0px 0px 0px 0px\">" + cq.getComponent() + "</p><p style=\"float: right; margin: 0px 0px 0px 0px\">" + new DecimalFormat("0.00").format(cq.getQuantity()) + (Main.metric ? " g" : " oz") + "</p>";
|
||||||
|
}
|
||||||
|
html = html + "<br /><hr></hr>";
|
||||||
|
html = html + "<p style=\"float: right; margin: 0px 0px 0px 0px\"><strong>Total: </strong>" + new DecimalFormat("0.00").format(total) + (Main.metric ? " g" : " oz") + "</p>";
|
||||||
|
html = html + "<br /><hr></hr></div>" + (floatLeft ? "" : "</div><br />");
|
||||||
|
floatLeft = !floatLeft;
|
||||||
|
}
|
||||||
|
if (keysArray.length % 2 == 1) {
|
||||||
|
html = html + "</div>";
|
||||||
|
}
|
||||||
|
html = html + "</body></html>";
|
||||||
|
pw.write(html);
|
||||||
|
pw.close();
|
||||||
|
return doc;
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
Logger.write(e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static File HTMLToPDF(File in) {
|
||||||
|
try {
|
||||||
|
File out = new File(in.toString().replace(".html", ".pdf"));
|
||||||
|
Runtime rt = Runtime.getRuntime();
|
||||||
|
Process pr = rt.exec("\"" + Main.baseDir + "resources/wkhtmltopdf\" \"" + in.getAbsoluteFile() + "\" \"" + out.getAbsolutePath() + "\"");
|
||||||
|
pr.waitFor();
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
Logger.write(e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean printPDF(File file) {
|
||||||
|
try {
|
||||||
|
PDDocument doc = PDDocument.load(file);
|
||||||
|
doc.print();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
Logger.write(e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
95
source/FTPManager.java
Normal file
95
source/FTPManager.java
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
/*
|
||||||
|
* Decompiled with CFR 0_123.
|
||||||
|
*/
|
||||||
|
package com.zakscode.FormulaManager;
|
||||||
|
|
||||||
|
import com.zakscode.FormulaManager.Configuration;
|
||||||
|
import com.zakscode.FormulaManager.Logger;
|
||||||
|
import com.zakscode.FormulaManager.Main;
|
||||||
|
import it.sauronsoftware.ftp4j.FTPClient;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public class FTPManager {
|
||||||
|
private String url;
|
||||||
|
private int port;
|
||||||
|
private String user;
|
||||||
|
private String password;
|
||||||
|
private FTPClient client;
|
||||||
|
|
||||||
|
public FTPManager(String url, int port, String user, String password) {
|
||||||
|
this.url = url;
|
||||||
|
this.port = port;
|
||||||
|
this.user = user;
|
||||||
|
this.password = password;
|
||||||
|
this.client = new FTPClient();
|
||||||
|
try {
|
||||||
|
this.client.connect(this.url, this.port);
|
||||||
|
this.client.login(this.user, this.password);
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
Logger.write(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUrl() {
|
||||||
|
return this.url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPort() {
|
||||||
|
return this.port;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUser() {
|
||||||
|
return this.user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return this.password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FTPClient getClient() {
|
||||||
|
return this.client;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUrl(String url) {
|
||||||
|
this.url = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPort(int port) {
|
||||||
|
this.port = port;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUser(String user) {
|
||||||
|
this.user = user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassword(String password) {
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClient(FTPClient client) {
|
||||||
|
this.client = client;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeFiles() {
|
||||||
|
try {
|
||||||
|
this.client.changeDirectory(Main.conf.getProperty("data-URL"));
|
||||||
|
this.client.upload(new File(Main.baseDir + Main.conf.getProperty("data-path") + "vendors.data"));
|
||||||
|
this.client.upload(new File(Main.baseDir + Main.conf.getProperty("data-path") + "components.data"));
|
||||||
|
this.client.upload(new File(Main.baseDir + Main.conf.getProperty("data-path") + "formulas.data"));
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
Logger.write(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disconnect() {
|
||||||
|
try {
|
||||||
|
this.client.disconnect(false);
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
Logger.write(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
67
source/FileManager.java
Normal file
67
source/FileManager.java
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
/*
|
||||||
|
* Decompiled with CFR 0_123.
|
||||||
|
*/
|
||||||
|
package com.zakscode.FormulaManager;
|
||||||
|
|
||||||
|
import com.zakscode.FormulaManager.Configuration;
|
||||||
|
import com.zakscode.FormulaManager.Logger;
|
||||||
|
import com.zakscode.FormulaManager.Main;
|
||||||
|
import com.zakscode.FormulaManager.TableArray;
|
||||||
|
import java.io.EOFException;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.ObjectInputStream;
|
||||||
|
import java.io.ObjectOutputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class FileManager<T extends TableArray>
|
||||||
|
extends HashMap<String, T> {
|
||||||
|
private static final long serialVersionUID = -1737198376121713564L;
|
||||||
|
private final String file;
|
||||||
|
|
||||||
|
public FileManager(String file) {
|
||||||
|
this.file = file;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save() {
|
||||||
|
try {
|
||||||
|
FileOutputStream fileOut = new FileOutputStream(Main.baseDir + Main.conf.getProperty("data-path") + this.file);
|
||||||
|
ObjectOutputStream out = new ObjectOutputStream(fileOut);
|
||||||
|
out.writeObject(this);
|
||||||
|
out.close();
|
||||||
|
fileOut.close();
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
Logger.write(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void load() {
|
||||||
|
try {
|
||||||
|
FileInputStream fileIn = new FileInputStream(Main.baseDir + Main.conf.getProperty("data-path") + this.file);
|
||||||
|
ObjectInputStream in = new ObjectInputStream(fileIn);
|
||||||
|
this.putAll((HashMap)in.readObject());
|
||||||
|
in.close();
|
||||||
|
fileIn.close();
|
||||||
|
}
|
||||||
|
catch (EOFException fileIn) {
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
Logger.write(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object[][] toArray() {
|
||||||
|
Object[][] data = new Object[this.size()][];
|
||||||
|
int i = 0;
|
||||||
|
for (Map.Entry e : this.entrySet()) {
|
||||||
|
data[i++] = ((TableArray)this.get(e.getKey())).toArray();
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
111
source/Formula.java
Normal file
111
source/Formula.java
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
/*
|
||||||
|
* Decompiled with CFR 0_123.
|
||||||
|
*/
|
||||||
|
package com.zakscode.FormulaManager;
|
||||||
|
|
||||||
|
import com.zakscode.FormulaManager.ComponentQuantity;
|
||||||
|
import com.zakscode.FormulaManager.TableArray;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class Formula
|
||||||
|
extends ArrayList<ComponentQuantity>
|
||||||
|
implements Serializable,
|
||||||
|
TableArray {
|
||||||
|
private static final long serialVersionUID = 6070397926573850223L;
|
||||||
|
private String name;
|
||||||
|
private String description;
|
||||||
|
private boolean approved;
|
||||||
|
private boolean rejected;
|
||||||
|
private Date date;
|
||||||
|
private Date proofDate;
|
||||||
|
|
||||||
|
public Formula(String name, String description) {
|
||||||
|
this.name = name;
|
||||||
|
this.description = description;
|
||||||
|
this.approved = false;
|
||||||
|
this.rejected = false;
|
||||||
|
this.date = Calendar.getInstance().getTime();
|
||||||
|
this.proofDate = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
this.date = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return this.description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
this.date = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getApproved() {
|
||||||
|
return this.approved;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setApproved(boolean approved) {
|
||||||
|
this.approved = approved;
|
||||||
|
this.proofDate = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getRejected() {
|
||||||
|
return this.rejected;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRejected(boolean rejected) {
|
||||||
|
this.rejected = rejected;
|
||||||
|
this.proofDate = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDate() {
|
||||||
|
return this.date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getProofDate() {
|
||||||
|
return this.proofDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double yield() {
|
||||||
|
double yield = 0.0;
|
||||||
|
for (ComponentQuantity cq : this) {
|
||||||
|
yield += cq.getQuantity();
|
||||||
|
}
|
||||||
|
return yield;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<ComponentQuantity> calculateForYield(double newYield) {
|
||||||
|
double yield = this.yield();
|
||||||
|
Formula newFormula = this;
|
||||||
|
for (ComponentQuantity cq : newFormula) {
|
||||||
|
cq.setQuantity(Math.round(cq.getQuantity() / yield * newYield));
|
||||||
|
}
|
||||||
|
return newFormula;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(String component, double quantity) {
|
||||||
|
this.add(new ComponentQuantity(component, quantity));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object[] toArray() {
|
||||||
|
String status = "";
|
||||||
|
if (this.approved) {
|
||||||
|
status = "Approved";
|
||||||
|
}
|
||||||
|
if (this.rejected) {
|
||||||
|
status = "Rejected";
|
||||||
|
}
|
||||||
|
return new Object[]{this.name, this.description, this.date, status, this.proofDate};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
1229
source/Frame.java
Normal file
1229
source/Frame.java
Normal file
File diff suppressed because it is too large
Load Diff
35
source/Logger.java
Normal file
35
source/Logger.java
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* Decompiled with CFR 0_123.
|
||||||
|
*/
|
||||||
|
package com.zakscode.FormulaManager;
|
||||||
|
|
||||||
|
import com.zakscode.FormulaManager.Configuration;
|
||||||
|
import com.zakscode.FormulaManager.Main;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
|
class Logger {
|
||||||
|
Logger() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void write(Exception e) {
|
||||||
|
if (!Boolean.parseBoolean(Main.conf.getProperty("debug"))) {
|
||||||
|
File file = new File(Main.baseDir + "log.txt");
|
||||||
|
try {
|
||||||
|
FileOutputStream fos = new FileOutputStream(file, true);
|
||||||
|
PrintStream ps = new PrintStream(fos);
|
||||||
|
e.printStackTrace(ps);
|
||||||
|
ps.append('\n');
|
||||||
|
ps.flush();
|
||||||
|
ps.close();
|
||||||
|
}
|
||||||
|
catch (FileNotFoundException fos) {}
|
||||||
|
} else {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
175
source/Main.java
Normal file
175
source/Main.java
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
/*
|
||||||
|
* Decompiled with CFR 0_123.
|
||||||
|
*/
|
||||||
|
package com.zakscode.FormulaManager;
|
||||||
|
|
||||||
|
import com.zakscode.FormulaManager.Component;
|
||||||
|
import com.zakscode.FormulaManager.Configuration;
|
||||||
|
import com.zakscode.FormulaManager.FileManager;
|
||||||
|
import com.zakscode.FormulaManager.Formula;
|
||||||
|
import com.zakscode.FormulaManager.Frame;
|
||||||
|
import com.zakscode.FormulaManager.Logger;
|
||||||
|
import com.zakscode.FormulaManager.Vendor;
|
||||||
|
import java.awt.EventQueue;
|
||||||
|
import java.awt.Image;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
|
import java.nio.channels.Channels;
|
||||||
|
import java.nio.channels.FileChannel;
|
||||||
|
import java.nio.channels.ReadableByteChannel;
|
||||||
|
import javax.swing.Icon;
|
||||||
|
import javax.swing.ImageIcon;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
|
class Main {
|
||||||
|
public static String baseDir;
|
||||||
|
public static Configuration conf;
|
||||||
|
public static FileManager<Vendor> vendors;
|
||||||
|
public static FileManager<Vendor> userVendors;
|
||||||
|
public static FileManager<Component> components;
|
||||||
|
public static FileManager<Component> userComponents;
|
||||||
|
public static FileManager<Formula> formulas;
|
||||||
|
public static FileManager<Formula> userFormulas;
|
||||||
|
private static int windowCount;
|
||||||
|
public static boolean metric;
|
||||||
|
public static boolean largeUnits;
|
||||||
|
public static ImageIcon icon;
|
||||||
|
|
||||||
|
Main() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
baseDir = new File(" ").getAbsolutePath().trim();
|
||||||
|
icon = new ImageIcon(baseDir + "icon.png");
|
||||||
|
conf = new Configuration();
|
||||||
|
JFrame splash = new JFrame("Formula Manager");
|
||||||
|
splash.setIconImage(icon.getImage());
|
||||||
|
splash.setUndecorated(true);
|
||||||
|
splash.add(new JLabel(new ImageIcon(baseDir + "splash.png")));
|
||||||
|
splash.pack();
|
||||||
|
splash.setLocationRelativeTo(null);
|
||||||
|
splash.setVisible(true);
|
||||||
|
File dataLocation = new File(baseDir + conf.getProperty("data-path"));
|
||||||
|
if (!dataLocation.exists()) {
|
||||||
|
dataLocation.mkdir();
|
||||||
|
}
|
||||||
|
if (!(dataLocation = new File(baseDir + conf.getProperty("temp-path"))).exists()) {
|
||||||
|
dataLocation.mkdir();
|
||||||
|
}
|
||||||
|
metric = Boolean.parseBoolean(conf.getProperty("metric"));
|
||||||
|
largeUnits = Boolean.parseBoolean(conf.getProperty("large-units"));
|
||||||
|
windowCount = 0;
|
||||||
|
Main.downloadData(true, false);
|
||||||
|
userVendors = new FileManager("userVendors.data");
|
||||||
|
userVendors.load();
|
||||||
|
userComponents = new FileManager("userComponents.data");
|
||||||
|
userComponents.load();
|
||||||
|
userFormulas = new FileManager("userFormulas.data");
|
||||||
|
userFormulas.load();
|
||||||
|
EventQueue.invokeLater(Main::newWindow);
|
||||||
|
splash.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void newWindow() {
|
||||||
|
++windowCount;
|
||||||
|
new Frame(Integer.parseInt(conf.getProperty("resolution-x")), Integer.parseInt(conf.getProperty("resolution-y")));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void close(JFrame frame) {
|
||||||
|
if (--windowCount <= 0) {
|
||||||
|
conf.setProperty("metric", String.valueOf(metric));
|
||||||
|
conf.setProperty("large-units", String.valueOf(largeUnits));
|
||||||
|
conf.setProperty("resolution-x", String.valueOf(frame.getWidth()));
|
||||||
|
conf.setProperty("resolution-y", String.valueOf(frame.getHeight()));
|
||||||
|
conf.save();
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
frame.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void downloadData(boolean suppress, boolean overwrite) {
|
||||||
|
long date;
|
||||||
|
ReadableByteChannel rbc;
|
||||||
|
FileOutputStream fos;
|
||||||
|
HttpURLConnection httpCon;
|
||||||
|
boolean success = true;
|
||||||
|
try {
|
||||||
|
URL vendorURL = new URL("http://" + conf.getProperty("URL") + conf.getProperty("data-URL") + "vendors.data");
|
||||||
|
httpCon = (HttpURLConnection)vendorURL.openConnection();
|
||||||
|
date = httpCon.getLastModified();
|
||||||
|
if (date > new File(baseDir + conf.getProperty("data-path") + "vendors.data").lastModified() || overwrite) {
|
||||||
|
fos = new FileOutputStream(baseDir + conf.getProperty("data-path") + "vendors.data");
|
||||||
|
rbc = Channels.newChannel(vendorURL.openStream());
|
||||||
|
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
|
||||||
|
rbc.close();
|
||||||
|
fos.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
success = false;
|
||||||
|
Logger.write(e);
|
||||||
|
}
|
||||||
|
vendors = new FileManager("vendors.data");
|
||||||
|
vendors.load();
|
||||||
|
try {
|
||||||
|
URL componentURL = new URL("http://" + conf.getProperty("URL") + conf.getProperty("data-URL") + "components.data");
|
||||||
|
httpCon = (HttpURLConnection)componentURL.openConnection();
|
||||||
|
date = httpCon.getLastModified();
|
||||||
|
if (date > new File(baseDir + conf.getProperty("data-path") + "components.data").lastModified() || overwrite) {
|
||||||
|
fos = new FileOutputStream(baseDir + conf.getProperty("data-path") + "components.data");
|
||||||
|
rbc = Channels.newChannel(componentURL.openStream());
|
||||||
|
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
|
||||||
|
rbc.close();
|
||||||
|
fos.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
success = false;
|
||||||
|
Logger.write(e);
|
||||||
|
}
|
||||||
|
components = new FileManager("components.data");
|
||||||
|
components.load();
|
||||||
|
try {
|
||||||
|
URL formulaURL = new URL("http://" + conf.getProperty("URL") + conf.getProperty("data-URL") + "formulas.data");
|
||||||
|
httpCon = (HttpURLConnection)formulaURL.openConnection();
|
||||||
|
date = httpCon.getLastModified();
|
||||||
|
if (date > new File(baseDir + conf.getProperty("data-path") + "formulas.data").lastModified() || overwrite) {
|
||||||
|
fos = new FileOutputStream(baseDir + conf.getProperty("data-path") + "formulas.data");
|
||||||
|
rbc = Channels.newChannel(formulaURL.openStream());
|
||||||
|
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
|
||||||
|
rbc.close();
|
||||||
|
fos.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
success = false;
|
||||||
|
Logger.write(e);
|
||||||
|
}
|
||||||
|
formulas = new FileManager("formulas.data");
|
||||||
|
formulas.load();
|
||||||
|
if (!suppress) {
|
||||||
|
if (success) {
|
||||||
|
JOptionPane.showMessageDialog(null, "Update completed successfully", "Update", 1);
|
||||||
|
} else {
|
||||||
|
JOptionPane.showMessageDialog(null, "Update Failed\nCheck log for additional information", "Update", 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void saveAll() {
|
||||||
|
vendors.save();
|
||||||
|
userVendors.save();
|
||||||
|
components.save();
|
||||||
|
userComponents.save();
|
||||||
|
formulas.save();
|
||||||
|
userFormulas.save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
9
source/TableArray.java
Normal file
9
source/TableArray.java
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* Decompiled with CFR 0_123.
|
||||||
|
*/
|
||||||
|
package com.zakscode.FormulaManager;
|
||||||
|
|
||||||
|
interface TableArray {
|
||||||
|
public Object[] toArray();
|
||||||
|
}
|
||||||
|
|
82
source/Vendor.java
Normal file
82
source/Vendor.java
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
/*
|
||||||
|
* Decompiled with CFR 0_123.
|
||||||
|
*/
|
||||||
|
package com.zakscode.FormulaManager;
|
||||||
|
|
||||||
|
import com.zakscode.FormulaManager.TableArray;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class Vendor
|
||||||
|
implements Serializable,
|
||||||
|
TableArray {
|
||||||
|
private static final long serialVersionUID = -5375130332194611512L;
|
||||||
|
private String name;
|
||||||
|
private String phone;
|
||||||
|
private String email;
|
||||||
|
private String website;
|
||||||
|
private Date date;
|
||||||
|
|
||||||
|
public Vendor(String name, String phone, String email, String website) {
|
||||||
|
this.name = name;
|
||||||
|
this.phone = phone;
|
||||||
|
this.email = email;
|
||||||
|
this.website = website;
|
||||||
|
this.date = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
this.date = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPhone() {
|
||||||
|
return this.phone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPhone(String phone) {
|
||||||
|
this.phone = phone;
|
||||||
|
this.date = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEmail() {
|
||||||
|
return this.email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEmail(String email) {
|
||||||
|
this.email = email;
|
||||||
|
this.date = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWebsite() {
|
||||||
|
return this.website;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWebsite(String website) {
|
||||||
|
this.website = website;
|
||||||
|
this.date = Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDate() {
|
||||||
|
return this.date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean equals(Vendor v) {
|
||||||
|
return v.getName().equals(this.name) && v.getPhone().equals(this.phone) && v.getEmail().equals(this.email) && v.getWebsite().equals(this.website);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object[] toArray() {
|
||||||
|
return new Object[]{this.name, this.phone, this.email, this.website, this.date};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
BIN
splash.png
Normal file
BIN
splash.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 279 KiB |
1
temp/Components.html
Normal file
1
temp/Components.html
Normal file
File diff suppressed because one or more lines are too long
BIN
temp/Components.pdf
Normal file
BIN
temp/Components.pdf
Normal file
Binary file not shown.
1
temp/Formulas.html
Normal file
1
temp/Formulas.html
Normal file
File diff suppressed because one or more lines are too long
BIN
temp/Formulas.pdf
Normal file
BIN
temp/Formulas.pdf
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user