package nl.itopia.corendon.model;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import nl.itopia.corendon.data.Brand;
import nl.itopia.corendon.data.ChooseItem;
import nl.itopia.corendon.data.LogAction;
import nl.itopia.corendon.utils.DateUtil;
import nl.itopia.corendon.utils.Log;
/**
* © 2014, Biodiscus.net Robin
*/
public class BrandModel {
private final DatabaseManager dbmanager = DatabaseManager.getDefault();
private static final BrandModel _default = new BrandModel();
private BrandModel() {}
public List<Brand> getBrands() {
List<Brand> brands = new ArrayList<>();
try {
String sql = "SELECT * FROM brand";
ResultSet result = dbmanager.doQuery(sql);
while (result.next()) {
int id = result.getInt("id");
String name = result.getString("name");
Brand brand = new Brand(id, name);
brands.add(brand);
}
} catch (SQLException e) {
Log.display("SQLEXCEPTION", e.getErrorCode(), e.getSQLState(), e.getMessage());
}
return brands;
}
public Brand getBrand(String name) {
Brand brand = null;
try {
ResultSet result = dbmanager.doQuery("SELECT * FROM brand WHERE name = '"+name+"'");
if(result.next()) {
brand = resultToBrand(result);
}
} catch (SQLException e) {
Log.display("SQLEXCEPTION", e.getErrorCode(), e.getSQLState(), e.getMessage());
}
return brand;
}
public Brand getBrand(int id) {
Brand brand = null;
try {
ResultSet result = dbmanager.doQuery("SELECT * FROM brand WHERE id = "+ id);
if(result.next()) {
brand = resultToBrand(result);
}
} catch (SQLException e) {
Log.display("SQLEXCEPTION", e.getErrorCode(), e.getSQLState(), e.getMessage());
}
return brand;
}
public int insertBrand(String name) {
String query = "INSERT INTO brand (name) VALUES ('%s')";
String finalQuery = String.format(query, name);
try {
dbmanager.insertQuery(finalQuery);
// After inserting the item, get the last added luggage
// This way we can set the correct ID to the new luggage
ResultSet result = dbmanager.doQuery("SELECT LAST_INSERT_ID()");
if(result.next()) {
return result.getInt(1);
} else {
return -1;
}
} catch (SQLException e) {
Log.display("SQLEXCEPTION", e.getErrorCode(), e.getSQLState(), e.getMessage());
}
return 0;
}
public ChooseItem brandToChoose(Brand brand) {
return new ChooseItem(brand.getID(), brand.getName());
}
private Brand resultToBrand(ResultSet result) throws SQLException {
int id = result.getInt("id");
String name = result.getString("name");
return new Brand(id, name);
}
public Brand handleBrandInput(String name) {
Log.display("Getting brand", name);
Brand brand = getBrand(name);
Log.display("Brand", brand);
if(brand == null) {
int id = insertBrand(name);
Log.display("New id", id);
brand = getBrand(id);
}
return brand;
}
public static BrandModel getDefault() {
return _default;
}
}