*/
package habeas;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.prefs.Preferences;
import java.sql.*;
+import java.text.DateFormat;
+import java.text.MessageFormat;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
import java.util.logging.Level;
import java.util.logging.Logger;
+import jdk.dynalink.linker.support.Guards;
/**
*
* @author hari
*/
public class Utility {
+
+ static void saveStationerySettings (String left_header,
+ String right_header, String signatory) {
+ leftLetterHeader = left_header;
+ rightLetterHeader = right_header;
+ signatoryName = signatory;
+ Preferences myPrefs = Preferences.userRoot().node("org/harishankar/Habeas");
+ myPrefs.put ("LeftHeader", left_header);
+ myPrefs.put ("RightHeader", right_header);
+ myPrefs.put ("Signatory", signatory);
+ }
+
+ static void retrieveStationerySettings () {
+ Preferences myPrefs = Preferences.userRoot().node ("org/harishankar/Habeas");
+ leftLetterHeader = myPrefs.get("LeftHeader", "Left Header");
+ rightLetterHeader = myPrefs.get ("RightHeader", "Right Header");
+ signatoryName = myPrefs.get ("Signatory", "Signatory Name");
+ }
static void saveConnectionURL(String text) {
connectionURL = text;
- Preferences.userRoot().put("ConnectionURL", text);
+ Preferences myPrefs = Preferences.userRoot().node ("org/harishankar/Habeas");
+ myPrefs.put("ConnectionURL", text);
}
static ArrayList<Object> getClientDetails(int r) {
ArrayList<Object> notice = new ArrayList<>();
try {
Connection conn = DriverManager.getConnection(JDBC + connectionURL);
- PreparedStatement st = conn.prepareStatement("SELECT * FROM legalnotices WHERE id=?;");
+ PreparedStatement st = conn.prepareStatement("SELECT legalnotices.*, clients.ClientName "
+ + "FROM legalnotices "
+ + "INNER JOIN clients WHERE ClientId=clients.id AND legalnotices.id=?;");
st.setInt(1, selid);
ResultSet rs = st.executeQuery();
while (rs.next()) {
notice.add (getValidDate (rs, "BillDate"));
notice.add (rs.getBoolean ("ClarificationPending"));
notice.add (rs.getString("ClarificationRemarks"));
+ notice.add (rs.getString("ClientName"));
}
return notice;
} catch (SQLException ex) {
" \"ClarificationPending\" INTEGER DEFAULT 0,\n" +
" \"ClarificationRemarks\" TEXT\n" +
");";
- String tblSettings = "CREATE TABLE IF NOT EXISTS \"settings\" (\n" +
-" \"key\" TEXT UNIQUE,\n" +
-" \"value\" TEXT,\n" +
-" PRIMARY KEY(\"key\")\n" +
- ");";
+
try {
Connection conn = DriverManager.getConnection(JDBC + connectionURL);
Statement st1 = conn.createStatement();
- st1.execute(tblSettings);
st1.execute(tblClients);
st1.execute(tblNotices);
conn.close();
return false;
}
+ }
+
+ static boolean deleteNotice(int r) {
+ try {
+ Connection conn = DriverManager.getConnection(JDBC + connectionURL);
+ PreparedStatement st = conn.prepareStatement("DELETE FROM legalnotices"
+ + " WHERE id=?;");
+ st.setInt(1, r);
+ st.execute();
+ conn.close();
+ return true;
+ } catch (SQLException ex) {
+ Logger.getLogger(Utility.class.getName()).log(Level.SEVERE, null, ex);
+ return false;
+ }
+
+ }
+
+ static ArrayList<Object> getRaisedBills (int client_id) {
+ try {
+ Connection conn = DriverManager.getConnection(JDBC + connectionURL);
+ PreparedStatement st = conn.prepareStatement("SELECT ReferenceNumber, "
+ + "Description, BillDate, BillAmount"
+ + " FROM legalnotices WHERE BillStatus='RAISED' AND ClientId=?;");
+ st.setInt (1, client_id);
+
+ ResultSet rs = st.executeQuery ();
+ ArrayList<Object> bills = new ArrayList<>();
+ while (rs.next()) {
+ bills.add (rs.getString("ReferenceNumber"));
+ bills.add (rs.getString("Description"));
+ bills.add (getValidDate(rs, "BillDate"));
+ bills.add (rs.getInt("BillAmount"));
+ }
+ conn.close();
+ return bills;
+
+ } catch (SQLException ex) {
+ Logger.getLogger(Utility.class.getName()).log(Level.SEVERE, null, ex);
+ return null;
+ }
+
+ }
+
+ static boolean generateRaisedNoticesBill(String fileName, String clientName,
+ String clientAddress, String contactPerson, ArrayList<Object> bills) {
+ if (bills == null)
+ return false;
+ try {
+ InputStream templ = Utility.class.getClassLoader().getResourceAsStream("resources/noticebill.template.fodt");
+ if (templ == null)
+ return false;
+ DateFormat fmt = new SimpleDateFormat("dd MMM yyyy");
+ String templateMain = new String (templ.readAllBytes());
+ // this is for openoffice ODT - replace normal line breaks with the XML equivalent
+ String left = leftLetterHeader.replaceAll("\n", "<text:line-break/>");
+ String right = rightLetterHeader.replaceAll("\n", "<text:line-break/>");
+ String client_address = clientAddress.replaceAll ("\n", "<text:line-break/>");
+ String rows = generateBillRows (bills);
+ System.out.println (rows);
+
+ String strMain = MessageFormat.format(templateMain,
+ left, right,
+ fmt.format(new Date(System.currentTimeMillis())),
+ clientName, client_address, contactPerson, signatoryName, rows);
+
+ FileOutputStream f = new FileOutputStream (fileName);
+ f.write (strMain.getBytes());
+ f.close();
+ return true;
+ } catch (IOException ex) {
+ Logger.getLogger(Utility.class.getName()).log(Level.SEVERE, null, ex);
+ return false;
+ }
+ }
+
+ private static String generateBillRows(ArrayList<Object> bills) {
+ try {
+ InputStream tmpl = Utility.class.getClassLoader().getResourceAsStream("resources/tablerow.template.xml");
+ String rowtpl = new String(tmpl.readAllBytes());
+
+ DateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
+
+ StringBuilder bldr = new StringBuilder ();
+ for (int i = 0; i < bills.size(); i += 4) {
+ String row = MessageFormat.format (rowtpl, (String)bills.get(i),
+ (String)bills.get(i+1), fmt.format((java.util.Date)bills.get(i+2)),
+ (int)bills.get(i+3));
+ bldr.append(row);
+ }
+ return (bldr.toString());
+ } catch (IOException ex) {
+ Logger.getLogger(Utility.class.getName()).log(Level.SEVERE, null, ex);
+ return null;
+ }
+ }
+
+ static boolean updateNoticeBillStatus(int client_id, String from_status,
+ String to_status) {
+ try {
+ Connection conn = DriverManager.getConnection(JDBC + connectionURL);
+ PreparedStatement st = conn.prepareStatement("UPDATE legalnotices"
+ + " SET BillStatus=? WHERE BillStatus=? AND ClientId=?;");
+ st.setString (1, to_status);
+ st.setString (2, from_status);
+ st.setInt (3, client_id);
+ st.execute();
+ conn.close();
+ return true;
+ } catch (SQLException ex) {
+ Logger.getLogger(Utility.class.getName()).log(Level.SEVERE, null, ex);
+ return false;
+ }
+
}
public Utility () {
}
public static String connectionURL ;
+ public static String leftLetterHeader;
+ public static String rightLetterHeader;
+ public static String signatoryName;
/**
*
}
public static void retrieveConnectionURL () {
- connectionURL = Preferences.userRoot().get("ConnectionURL", "legaldb");
+ Preferences myPrefs = Preferences.userRoot().node("org/harishankar/Habeas");
+ connectionURL = myPrefs.get("ConnectionURL", "legaldb");
}
}