Package realcix20.classes

Source Code of realcix20.classes.CorrespondenceClass

package realcix20.classes;

import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.Iterator;
import java.util.StringTokenizer;
import java.util.Vector;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SealedObject;
import javax.crypto.SecretKey;

import realcix20.classes.basic.BaseClass;
import realcix20.classes.basic.Cell;
import realcix20.classes.basic.ClassManager;
import realcix20.classes.basic.Row;
import realcix20.classes.plugins.CixFile;
import realcix20.classes.plugins.RealCIXFile;
import realcix20.guis.listeners.MainListener;
import realcix20.guis.utils.DialogManager;
import realcix20.guis.utils.TimeManager;
import realcix20.guis.utils.TxtManager;
import realcix20.guis.views.ObjectEdit;
import realcix20.utils.DAO;
import realcix20.utils.ObjectUtil;
import realcix20.utils.Resources;

public class CorrespondenceClass extends BaseClass {
   
   
        public CorrespondenceClass(int clsId) {
                super(clsId);
        }
       
        public CorrespondenceClass(int clsId, boolean t) {
            super(clsId, t);
        }
       
        public static boolean isCorrespondencePartnerBlocked(Row correspondenceRow) {
            boolean result = false;
            String ns = (String)ObjectUtil.findNewCell(correspondenceRow, "T", "NS").getColumnValue();
            String p = (String)ObjectUtil.findNewCell(correspondenceRow, "T", "P").getColumnValue();
            String pa = (String)ObjectUtil.findNewCell(correspondenceRow, "T", "PA").getColumnValue();
            DAO dao = DAO.getInstance();
            dao.query(Resources.GET_PA_SQL);
            dao.setString(1, ns);
            dao.setString(2, p);
            dao.setString(3, pa);
            ResultSet rs = dao.executeQuery();
            try {
                if (rs.next()) {
                    result = rs.getBoolean("BLOCK");
                }
                rs.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
       
        public static void deleteRelativeRegs(Row correspondenceRow) {
            CorrespondenceClass correspondence = (CorrespondenceClass)ClassManager.createClass(520);
            correspondence.loadChilds(correspondenceRow);
            Iterator cItemRowsIter = correspondenceRow.getRowSet().getRows().iterator();           
            while (cItemRowsIter.hasNext()) {               
                Row cItemRow = (Row)cItemRowsIter.next();
                boolean needDelete = true;
                if ( (ObjectUtil.findNewCell(cItemRow, "TI", "R").getColumnValue() == null) ||
                        (ObjectUtil.findNewCell(cItemRow, "TI", "RI").getColumnValue() == null) ) {
                    needDelete = false;
                }
/*                if (needDelete) {
                    int r = Integer.parseInt(ObjectUtil.findNewCell(cItemRow, "TI", "R").getColumnValue().toString());
                    int ri = Integer.parseInt(ObjectUtil.findNewCell(cItemRow, "TI", "RI").getColumnValue().toString());
                    RegClass.deleteRelativeThings(r, ri);
                    DAO dao = DAO.getInstance();
                    dao.update(Resources.DELETE_RI_BY_R_RI_SQL);
                    dao.setInt(1, r);
                    dao.setInt(2, ri);
                    dao.executeUpdate();
                }*/
                if(needDelete){
                  int r = Integer.parseInt(ObjectUtil.findNewCell(cItemRow, "TI", "R").getColumnValue().toString());
                  RegClass.delete(r);
                }
            }
        }
       
        public static boolean isRegUsedInCorrespondence(Row regItemRow) {
            boolean result = false;
            if ( (ObjectUtil.findNewCell(regItemRow, "RI", "R").getColumnValue() == null) ||
                    (ObjectUtil.findNewCell(regItemRow, "RI", "RI").getColumnValue() == null) ) {
                return false;
            }
            int r = Integer.parseInt(ObjectUtil.findNewCell(regItemRow, "RI", "R").getColumnValue().toString());
            int ri = Integer.parseInt(ObjectUtil.findNewCell(regItemRow, "RI", "RI").getColumnValue().toString());
            DAO dao = DAO.getInstance();
            dao.query(Resources.SELECT_FROM_TI_BY_R_RI_SQL);
            dao.setInt(1, r);
            dao.setInt(2, ri);
            ResultSet rs = dao.executeQuery();
            try {
                if (rs.next()) {
                    result = true;                   
                }
                rs.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
       
        public static boolean isIPUsedInCorrespondence(Row ipRow) {           
            boolean result = false;
            String im = ObjectUtil.findNewCell(ipRow, "IP", "IM").getColumnValue().toString();
            String ip = ObjectUtil.findNewCell(ipRow, "IP", "IP").getColumnValue().toString();
            CorrespondenceClass correspondence = (CorrespondenceClass)ClassManager.createClass(520);
            StringBuffer sb = new StringBuffer(correspondence.getBasicSQL());
            sb.append(" WHERE TI.IM=? AND TI.IP=?");
            String sql = sb.toString();
            DAO dao = DAO.getInstance();
            dao.query(sql);
//            System.out.println("im = " + im + "   ip = " + ip);
            dao.setObject(1, im);
            dao.setObject(2, ip);
            ResultSet rs = dao.executeQuery();
            try {
                if ( (rs.next()) && (im.equals(rs.getObject("IM"))) && (ip.equals(rs.getObject("IP"))) ) {
                    result = true;
                }
                rs.close();
            } catch (SQLException sqle) {
                sqle.printStackTrace();
            }
            return result;           
        }
       
        public static boolean isPReferencedInCorrespondence(Row pRow) {           
            boolean result = false;
            String ns = ObjectUtil.findNewCell(pRow, "P", "NS").getColumnValue().toString();
            String p = ObjectUtil.findNewCell(pRow, "P", "P").getColumnValue().toString();
            CorrespondenceClass correspondence = (CorrespondenceClass)ClassManager.createClass(520);
            StringBuffer sb = new StringBuffer(correspondence.getBasicSQL());
            sb.append(" WHERE T.NS=? AND T.P=?");
            String sql = sb.toString();
            DAO dao = DAO.getInstance();
            dao.query(sql);
            dao.setString(1, ns);
            dao.setString(2, p);
            ResultSet rs = dao.executeQuery();
            try {
                if ( (rs.next()) && (ns.equals(rs.getObject("NS"))) && (p.equals(rs.getObject("P"))) ) {
                    result = true;
                }
                rs.close();
            } catch (SQLException sqle) {
                sqle.printStackTrace();
            }
            return result;           
        }
       
        public static void analyCorrespondenceCIXFile(RealCIXFile realCIXFile, MainListener listener) {
           
                Vector notEncryedDatas = realCIXFile.getNotEncryedDatas();
                String ns = (String)notEncryedDatas.get(0);
                String p = (String)notEncryedDatas.get(1);
                String pa = (String)notEncryedDatas.get(2);
                PartnerClass partner = (PartnerClass)ClassManager.createClass(250);
//                System.err.println("ns = " + ns + " p = " + p + " pa = " + pa);
                Row partnerAccountRow = PartnerClass.findPartnerAccountRow(partner, ns, p, pa);
                if (partnerAccountRow == null) {
                    StringBuffer sb = new StringBuffer(TxtManager.getTxt("INFORMATION.IMPORT.NOTFINDPA1"));
                    sb.append(ns + "/" + p + "/" + pa + " !");
                    DialogManager.showMessageDialog(listener.getContainer(), sb.toString());
                } else {
                    boolean result = true;
                    String urns = (String)ObjectUtil.findNewCell(partnerAccountRow, "PA", "URNS").getColumnValue();
                    String urp = (String)ObjectUtil.findNewCell(partnerAccountRow, "PA", "URP").getColumnValue();
                    String urpa = (String)ObjectUtil.findNewCell(partnerAccountRow, "PA", "URPA").getColumnValue();
                    PublicKey publicKey = (PublicKey)ObjectUtil.findNewCell(partnerAccountRow, "PA", "PUBKEY").getColumnValue();
                    if ( ( (urns == null) || (urns.trim().length() <= 0) ) ||
                            ( (urp == null) || (urp.trim().length() <= 0) ) ||
                            ( (urpa == null) || (urpa.trim().length() <= 0) ) ||
                            (publicKey == null) ) {
                        result = false;
                    }
                    if (!result) {
                        StringBuffer sb = new StringBuffer(TxtManager.getTxt("INFORMATION.IMPORT.NOTCREATERELATIVE1"));
                        sb.append(ns + "/" + p + "/" + pa + " , ");
                        sb.append(TxtManager.getTxt("INFORMATION.IMPORT.NOTCREATERELATIVE2"));
                        DialogManager.showMessageDialog(listener.getContainer(), sb.toString());
                    } else {
                        if (publicKey != null) {
                            Vector datas = realCIXFile.getDatas(publicKey);
                            if (datas == null) {
                                StringBuffer sb = new StringBuffer(TxtManager.getTxt("INFORMATION.IMPORT.PUBKEYISWRONG1"));
                                sb.append(ns + "/" + p + "/" + pa + " , ");
                                sb.append(TxtManager.getTxt("INFORMATION.IMPORT.PUBKEYISWRONG2"));
                                DialogManager.showMessageDialog(listener.getContainer(), sb.toString());
                            } else {//import success
//                                System.err.println("urns = " + urns + " urp = " + urp + " urpa = " + urpa);
                                DialogManager.showMessageDialog(listener.getContainer(), TxtManager.getTxt("INFORMATION.IMPORT.IMPORTSUCCESS"));
                                DialogManager.showMessageDialog(listener.getContainer(), TxtManager.getTxt("INFORMATION.IMPORT.CREATECORRESPONDENCE"));
                                Row correspondenceRow = (Row)datas.get(0);
                                listener.showObjectView(520);
                                listener.getContainer().updateTable();
                                Row newRow = new Row(listener.getContainer().getCurrentObject().getRowType());
                                ObjectUtil.findNewCell(newRow, "T", "URT").setColumnValue(ObjectUtil.findNewCell(correspondenceRow, "T", "T").getColumnValue());
                                ObjectUtil.findNewCell(newRow, "T", "TT").setColumnValue(ObjectUtil.findNewCell(correspondenceRow, "T", "TT").getColumnValue());
                                ObjectUtil.findNewCell(newRow, "T", "NS").setColumnValue(ns);
                                ObjectUtil.findNewCell(newRow, "T", "P").setColumnValue(p);
                                ObjectUtil.findNewCell(newRow, "T", "PA").setColumnValue(pa);
                                ObjectUtil.findNewCell(newRow, "T", "RECBNS").setColumnValue(ObjectUtil.findNewCell(correspondenceRow, "T", "RECBNS").getColumnValue());
                                ObjectUtil.findNewCell(newRow, "T", "RECB").setColumnValue(ObjectUtil.findNewCell(correspondenceRow, "T", "RECB").getColumnValue());
                                ObjectUtil.findNewCell(newRow, "T", "RECBA").setColumnValue(ObjectUtil.findNewCell(correspondenceRow, "T", "RECBA").getColumnValue());
                                ObjectUtil.findNewCell(newRow, "T", "REQUEST").setColumnValue(ObjectUtil.findNewCell(correspondenceRow, "T", "REQUEST").getColumnValue());
                                ObjectUtil.findNewCell(newRow, "T", "DUE").setColumnValue(ObjectUtil.findNewCell(correspondenceRow, "T", "DUE").getColumnValue());
                                ObjectUtil.findNewCell(newRow, "T", "TXT256").setColumnValue(ObjectUtil.findNewCell(correspondenceRow, "T", "TXT256").getColumnValue());
                                Iterator correspondenceItemRowsIter = correspondenceRow.getRowSet().getRows().iterator();
                                while (correspondenceItemRowsIter.hasNext()) {
                                    Row correspondenceItemRow = (Row)correspondenceItemRowsIter.next();
                                    boolean stat = false;
                                    if ( ( (correspondenceRow.isAdd()) && (correspondenceItemRow != correspondenceRow) ) ||
                                            (!correspondenceRow.isAdd()) ) {
                                        stat = true;
                                    }
                                    if (stat) {//add childRow
                                        Row childRow = ObjectUtil.addnewChildRow(listener.getContainer().getCurrentObject(), correspondenceItemRow);
                                        double tamt = 0.0;
                                        if ( (ObjectUtil.findNewCell(correspondenceItemRow, "TI", "TAMT").getColumnValue() != null) &&
                                                (ObjectUtil.findNewCell(correspondenceItemRow, "TI", "TAMT").getColumnValue().toString().trim().length() > 0) ) {
                                            tamt = 0 - Double.parseDouble(ObjectUtil.findNewCell(correspondenceItemRow, "TI", "TAMT").getColumnValue().toString());                                           
                                        }
                                        ObjectUtil.findNewCell(childRow, "TI", "TAMT").setColumnValue(tamt);
                                        //just for import CIX file....
                                        ObjectUtil.findNewCell(childRow, "TI", "R").setColumnValue(0);
                                        ObjectUtil.findNewCell(childRow, "TI", "RI").setColumnValue(0);
                                        newRow.getRowSet().getRows().add(childRow);
                                        listener.getContainer().getCurrentObject().getRows().add(childRow);
                                    }
                                }
                                listener.getContainer().getCurrentObject().getRows().add(newRow);
                                new ObjectEdit(listener.getContainer(), listener.getContainer().getCurrentObject(), newRow, "Add", "Add");                   
                                listener.getContainer().setEnabled(false);
                            }
                        }
                    }
                }
           
        }
       
        public static RealCIXFile exportCorrespondenceCIXFile(Row correspondenceRow) {
           
                RealCIXFile realCIXFile = null;
                String type = "Correspondence";
                Vector datas = new Vector();
                Vector notEncryedDatas = new Vector();
                datas.add(correspondenceRow);
                String ns = ObjectUtil.findNewCell(correspondenceRow, "T", "NS").getColumnValue().toString();
                String p = ObjectUtil.findNewCell(correspondenceRow, "T", "P").getColumnValue().toString();
                String pa = ObjectUtil.findNewCell(correspondenceRow, "T", "PA").getColumnValue().toString();
                PartnerClass partner = (PartnerClass)ClassManager.createClass(250);
                Row partnerAccountRow = null;             
                partnerAccountRow = PartnerClass.findPartnerAccountRow(partner, ns, p, pa);
                Row mePartnerAccountRow = null;
                if (partnerAccountRow != null)
                    mePartnerAccountRow = PartnerClass.getMePartnerAccount(partnerAccountRow);
                PrivateKey privateKey = null;
                if (mePartnerAccountRow != null) {
                    privateKey = (PrivateKey)ObjectUtil.findNewCell(mePartnerAccountRow, "PA", "PRIKEY").getColumnValue();
                }
                if (privateKey != null) {
                    String urns = ObjectUtil.findNewCell(partnerAccountRow, "PA", "URNS").getColumnValue().toString();
                    String urp = ObjectUtil.findNewCell(partnerAccountRow, "PA", "URP").getColumnValue().toString();
                    String urpa = ObjectUtil.findNewCell(partnerAccountRow, "PA", "URPA").getColumnValue().toString();
                    notEncryedDatas.add(urns);
                    notEncryedDatas.add(urp);
                    notEncryedDatas.add(urpa);
                    realCIXFile = new RealCIXFile(type, privateKey, notEncryedDatas, datas);
                }
                return realCIXFile;
           
        }
       
        public static boolean isThisCorrespondenceCanExport(Row correspondenceRow) {
           
                boolean result = true;               
                String ns = ObjectUtil.findNewCell(correspondenceRow, "T", "NS").getColumnValue().toString();
                String p = ObjectUtil.findNewCell(correspondenceRow, "T", "P").getColumnValue().toString();
                String pa = ObjectUtil.findNewCell(correspondenceRow, "T", "PA").getColumnValue().toString();
                DAO dao = DAO.getInstance();
                dao.query(Resources.SELECT_PA_SQL);
                dao.setString(1, ns);
                dao.setString(2, p);
                dao.setString(3, pa);
                ResultSet rs = dao.executeQuery();
                String urns = null;
                String urp = null;
                String urpa = null;
                PublicKey pubkey = null;
                try {
                    if (rs.next()) {
                        urns = rs.getString("URNS");
                        urp = rs.getString("URP");
                        urpa = rs.getString("URPA");
                        pubkey = (PublicKey)rs.getObject("PUBKEY");
                    }
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                if ( ( (urns == null) || (urns.trim().length() <= 0) ) ||
                        ( (urp == null) || (urp.trim().length() <= 0) ) ||
                        ( (urpa == null) || (urpa.trim().length() <= 0) ) ||
                        (pubkey == null) ) {
                    result = false;
                }
               
                return result;
           
        }
       
        public static boolean registerTransfer(Row mainRow, String ld) {
           
                boolean result = false;
               
                int r = RegClass.getMaxR() + 1;
                String at = "REAL";
                java.util.Date now = new java.util.Date(System.currentTimeMillis());
                String rdate = getTime(now);
                String created = TimeManager.getTime(now.getTime());       
                String createdby = UserClass.getCurrentRUser();
                String lastchanged = created;
                String lastchangedby = createdby;
                Cell txt256Cell = ObjectUtil.findNewCell(mainRow, "T", "TXT256");
                String txt256 = (String)txt256Cell.getColumnValue();
               
                DAO dao = DAO.getInstance();
                dao.update(Resources.INSERT_R_SQL);
                dao.setObject(1, r);
                dao.setObject(2, at);
                dao.setObject(3, rdate);
                dao.setObject(4, created);
                dao.setObject(5, createdby);
                dao.setObject(6, lastchanged);
                dao.setObject(7, lastchangedby);
                dao.setObject(8, txt256);
                dao.executeUpdate();
               
                int currentRi = 0;
                double amt = 0.0;
                Iterator rowsIter = mainRow.getRowSet().getRows().iterator();
                while (rowsIter.hasNext()) {
                    Row childRow = (Row)rowsIter.next();
                    if ( (childRow != null) && (childRow != mainRow) ) {                      
                        currentRi++;
                        txt256Cell = ObjectUtil.findNewCell(childRow, "TI", "TXT256");
                        txt256 = (String)txt256Cell.getColumnValue();
                       
                        Cell tcCell = ObjectUtil.findNewCell(childRow, "TI", "TC");
                        String tc = (String)tcCell.getColumnValue();
                        Cell tamtCell = ObjectUtil.findNewCell(childRow, "TI", "TAMT");
                        double tamt = 0.0;
                        if (tamtCell.getColumnValue() != null) {
                            tamt = ((Number)tamtCell.getColumnValue()).doubleValue();
                        }
                        String lc = FamilyClass.getLocalCurrency();
                        double xr = XRClass.getExchangeRate(lc, tc, rdate);
                        double lamt = tamt * xr;
                        amt+= lamt;
                        Cell nsCell = ObjectUtil.findNewCell(mainRow, "T", "NS");
                        String ns = (String)nsCell.getColumnValue();
                        Cell pCell = ObjectUtil.findNewCell(mainRow, "T", "P");
                        String p = (String)pCell.getColumnValue();
                        Cell paCell = ObjectUtil.findNewCell(mainRow, "T", "PA");
                        String pa = (String)paCell.getColumnValue();
                        Cell mCell = ObjectUtil.findNewCell(childRow, "TI", "M");
                        String m = (String)mCell.getColumnValue();
                        Cell muomCell = ObjectUtil.findNewCell(childRow, "TI", "MUOM");
                        String muom = (String)muomCell.getColumnValue();
                        Cell mquanCell = ObjectUtil.findNewCell(childRow, "TI", "MQUAN");
                        double mquan = 0.0;
                        if (mquanCell.getColumnValue() != null) {
                            mquan = ((Number)mquanCell.getColumnValue()).doubleValue();
                        }
                        Cell mpriceCell = ObjectUtil.findNewCell(childRow, "TI", "MPRICE");
                        double mprice = 0.0;
                        if (mpriceCell.getColumnValue() != null) {
                            mprice = ((Number)mpriceCell.getColumnValue()).doubleValue();
                        }
                        Cell imCell = ObjectUtil.findNewCell(childRow, "TI", "IM");
                        String im = (String)imCell.getColumnValue();
                        Cell ipCell = ObjectUtil.findNewCell(childRow, "TI", "IP");
                        String ip = (String)ipCell.getColumnValue();
                        Cell ipuomCell = ObjectUtil.findNewCell(childRow, "TI", "IPUOM");
                        String ipuom = (String)ipuomCell.getColumnValue();
                        Cell ipquanCell = ObjectUtil.findNewCell(childRow, "TI", "IPQUAN");
                        double ipquan = 0.0;
                        if (ipquanCell.getColumnValue() != null) {
                            ipquan = ((Number)ipquanCell.getColumnValue()).doubleValue();
                        }
                        Cell ippriceCell = ObjectUtil.findNewCell(childRow, "TI", "IPPRICE");
                        double ipprice = 0.0;
                        if (ippriceCell.getColumnValue() != null) {
                            ipprice = ((Number)ippriceCell.getColumnValue()).doubleValue();
                        }
                       
                        dao.update(Resources.INSERT_RI_SQL);
                        dao.setObject(1, r);
                        dao.setObject(2, currentRi);
                        dao.setObject(3, txt256);
                        dao.setObject(4, ld);
                        dao.setObject(5, tc);
                        dao.setObject(6, -tamt);
                        dao.setObject(7, lc);
                        dao.setObject(8, xr);
                        dao.setObject(9, -lamt);
                        dao.setObject(10, ns);
                        dao.setObject(11, p);
                        dao.setObject(12, pa);
                        dao.setObject(13, m);
                        dao.setObject(14, muom);
                        dao.setObject(15, mquan);
                        dao.setObject(16, mprice);
                        dao.setObject(17, null);
                        dao.setObject(18, im);
                        dao.setObject(19, ip);
                        dao.setObject(20, ipuom);
                        dao.setObject(21, ipquan);
                        dao.setObject(22, ipprice);
                        dao.executeUpdate();
                       
                    }
                }
               
                //At this point, setld zhanghu to add ouy.
                txt256Cell = ObjectUtil.findNewCell(mainRow, "TI", "TXT256");
                txt256 = (String)txt256Cell.getColumnValue();

                Cell tcCell = ObjectUtil.findNewCell(mainRow, "TI", "TC");
                String tc = (String)tcCell.getColumnValue();
                Cell tamtCell = ObjectUtil.findNewCell(mainRow, "TI", "TAMT");
                double tamt = 0.0;
                if (tamtCell.getColumnValue() != null) {
                    tamt = amt;
                }
                String lc = FamilyClass.getLocalCurrency();
                double xr = XRClass.getExchangeRate(lc, tc, rdate);
                double lamt = tamt * xr;
                amt+= lamt;
                Cell nsCell = ObjectUtil.findNewCell(mainRow, "T", "NS");
                String ns = (String)nsCell.getColumnValue();
                Cell pCell = ObjectUtil.findNewCell(mainRow, "T", "P");
                String p = (String)pCell.getColumnValue();
                Cell paCell = ObjectUtil.findNewCell(mainRow, "T", "PA");
                String pa = (String)paCell.getColumnValue();
                Cell mCell = ObjectUtil.findNewCell(mainRow, "TI", "M");
                String m = (String)mCell.getColumnValue();
                Cell muomCell = ObjectUtil.findNewCell(mainRow, "TI", "MUOM");
                String muom = (String)muomCell.getColumnValue();
                Cell mquanCell = ObjectUtil.findNewCell(mainRow, "TI", "MQUAN");
                double mquan = 0.0;
                if (mquanCell.getColumnValue() != null) {
                    mquan = ((Number)mquanCell.getColumnValue()).doubleValue();
                }
                Cell mpriceCell = ObjectUtil.findNewCell(mainRow, "TI", "MPRICE");
                double mprice = 0.0;
                if (mpriceCell.getColumnValue() != null) {
                    mprice = ((Number)mpriceCell.getColumnValue()).doubleValue();
                }
                Cell imCell = ObjectUtil.findNewCell(mainRow, "TI", "IM");
                String im = (String)imCell.getColumnValue();
                Cell ipCell = ObjectUtil.findNewCell(mainRow, "TI", "IP");
                String ip = (String)ipCell.getColumnValue();
                Cell ipuomCell = ObjectUtil.findNewCell(mainRow, "TI", "IPUOM");
                String ipuom = (String)ipuomCell.getColumnValue();
                Cell ipquanCell = ObjectUtil.findNewCell(mainRow, "TI", "IPQUAN");
                double ipquan = 0.0;
                if (ipquanCell.getColumnValue() != null) {
                    ipquan = ((Number)ipquanCell.getColumnValue()).doubleValue();
                }
                Cell ippriceCell = ObjectUtil.findNewCell(mainRow, "TI", "IPPRICE");
                double ipprice = 0.0;
                if (ippriceCell.getColumnValue() != null) {
                    ipprice = ((Number)ippriceCell.getColumnValue()).doubleValue();
                }
                currentRi++;
                dao.update(Resources.INSERT_RI_SQL);
                dao.setObject(1, r);
                dao.setObject(2, currentRi);
                dao.setObject(3, txt256);
                dao.setObject(4, ld);
                dao.setObject(5, tc);
                dao.setObject(6, amt);
                dao.setObject(7, lc);
                dao.setObject(8, xr);
                dao.setObject(9, amt);
                dao.setObject(10, ns);
                dao.setObject(11, p);
                dao.setObject(12, pa);
                dao.setObject(13, m);
                dao.setObject(14, muom);
                dao.setObject(15, mquan);
                dao.setObject(16, mprice);
                dao.setObject(17, null);
                dao.setObject(18, im);
                dao.setObject(19, ip);
                dao.setObject(20, ipuom);
                dao.setObject(21, ipquan);
                dao.setObject(22, ipprice);
                dao.executeUpdate();
               
                return result;
           
        }
                       
        public static boolean needDeleteRegs(Row correspondenceRow) {
           
                boolean result = false;
               
                Iterator correspondenceItemRowsIter = correspondenceRow.getRowSet().getRows().iterator();
                while (correspondenceItemRowsIter.hasNext()) {
                    Row correspondenceItemRow = (Row)correspondenceItemRowsIter.next();
                    int newR = -1;
                    if ( (ObjectUtil.findNewCell(correspondenceItemRow, "TI", "R").getColumnValue() != null) &&
                            (ObjectUtil.findNewCell(correspondenceItemRow, "TI", "R").getColumnValue().toString().trim().length() > 0) ) {
                        newR = Integer.parseInt(ObjectUtil.findNewCell(correspondenceItemRow, "TI", "R").getColumnValue().toString());
                    }
                    if (newR != -1) {
                        result = true;
                        break;
                    }
                }
               
                return result;
           
        }
       
        public static boolean correspondenceRegsInformation(Row correspondenceRow) {
           
                boolean result = true;
       
                Vector rAndRis = new Vector();
                Iterator rowsIter = correspondenceRow.getRowSet().getRows().iterator();
                while (rowsIter.hasNext()) {
                    Row row = (Row)rowsIter.next();
                    int newR = -1;
                    int newRI = -1;
                    if ( (ObjectUtil.findNewCell(row, "TI", "R").getColumnValue() != null) && (ObjectUtil.findNewCell(row, "TI", "R").getColumnValue().toString().trim().length() > 0) ) {
                        newR = Integer.parseInt(ObjectUtil.findNewCell(row, "TI", "R").getColumnValue().toString());                  
                    }
                    if ( (ObjectUtil.findNewCell(row, "TI", "RI").getColumnValue() != null) && (ObjectUtil.findNewCell(row, "TI", "RI").getColumnValue().toString().trim().length() > 0) ) {
                        newRI = Integer.parseInt(ObjectUtil.findNewCell(row, "TI", "RI").getColumnValue().toString());
                    }
                    if (rAndRis.size() == 0) {
                        String str = newR + "-" + newRI;
                        rAndRis.add(str);
                    } else {
                        String str = newR + "-" + newRI;
                        Iterator rAndRisIter = rAndRis.iterator();
                        while (rAndRisIter.hasNext()) {
                            String tempStr = (String)rAndRisIter.next();
                            if ( (newR != -1) && (newRI != -1) ) {
                                if (tempStr.equals(str)) {
                                    result = false;
                                    break;
                                }
                            }
                        }
                    }                
                }

                return result;
           
        }
       
        public static int correspondenceRegs(Row correspondenceRow, String balanceLD) {
           
                //Test if can regs
                boolean allTamtEqualsZero = true;
                Iterator rowsIter = correspondenceRow.getRowSet().getRows().iterator();
                while (rowsIter.hasNext()) {
                    Row row = (Row)rowsIter.next();
                    if (correspondenceRow.isAdd()) {
                        if (row != correspondenceRow) {
                            Double tempTAmt = Double.parseDouble(ObjectUtil.findNewCell(row, "TI", "TAMT").getColumnValue().toString());
                            if (tempTAmt != 0.0) {
                                allTamtEqualsZero = false;
                                break;
                            }
                        }
                    } else {
                        Double tempTAmt = Double.parseDouble(ObjectUtil.findNewCell(row, "TI", "TAMT").getColumnValue().toString());
                        if (tempTAmt != 0.0) {
                            allTamtEqualsZero = false;
                            break;
                        }
                    }
                }
                if (allTamtEqualsZero) {
                    return -1;
                }
           
                //delete oldR
                Vector newRAndOldRs = new Vector();//data struct: new_R-newR
                rowsIter = correspondenceRow.getRowSet().getRows().iterator();
                while (rowsIter.hasNext()) {
                    Row row = (Row)rowsIter.next();
                    int oldR = -1;
                    int newR = -1;
                    if ( (ObjectUtil.findOldCell(row, "TI", "R").getColumnValue() != null) && (ObjectUtil.findOldCell(row, "TI", "R").getColumnValue().toString().trim().length() > 0) ) {
                        oldR = Integer.parseInt(ObjectUtil.findOldCell(row, "TI", "R").getColumnValue().toString());                  
                    }
                    if ( (ObjectUtil.findNewCell(row, "TI", "R").getColumnValue() != null) && (ObjectUtil.findNewCell(row, "TI", "R").getColumnValue().toString().trim().length() > 0) ) {
                        newR = Integer.parseInt(ObjectUtil.findNewCell(row, "TI", "R").getColumnValue().toString());                  
                    }
                    if (!row.isDelete()) {
                        if (oldR != -1) {
                            TaxClass.deleteR(oldR);//USE TaxClass
                            TaxClass.deleteRI(oldR);//USE TaxClass
                        }
                        if (newR != -1) {
                            TaxClass.deleteR(newR);//USE TaxClass
                            TaxClass.deleteRI(newR);//USE TaxClass
                        }
                    } else {
                        if (!row.isAdd()) {
                            if (oldR != -1) {
                                TaxClass.deleteR(oldR);//USE TaxClass
                                TaxClass.deleteRI(oldR);//USE TaxClass
                            }
                        }
                    }                   
                }               
                rowsIter = correspondenceRow.getRowSet().getRows().iterator();
                int new_R = TaxClass.getMAXR() + 1;
                while (rowsIter.hasNext()) {
                    Row row = (Row)rowsIter.next();
                    int newR = -1;
                    if ( (ObjectUtil.findNewCell(row, "TI", "R").getColumnValue() != null) && (ObjectUtil.findNewCell(row, "TI", "R").getColumnValue().toString().trim().length() > 0) ) {
                        newR = Integer.parseInt(ObjectUtil.findNewCell(row, "TI", "R").getColumnValue().toString());                  
                    }
                    String str = new_R + "-" + newR;
                    newRAndOldRs.add(str);               
                }
               
                //add new R
                rowsIter = correspondenceRow.getRowSet().getRows().iterator();
                Iterator newRAndOldRsIter = newRAndOldRs.iterator();
                while (rowsIter.hasNext()) {
                    Row row = (Row)rowsIter.next();
                    String str = (String)newRAndOldRsIter.next();
                    StringTokenizer st = new StringTokenizer(str, "-");    
                    String tDate = ObjectUtil.findNewCell(correspondenceRow, "T", "DUE").getColumnValue().toString();
                    String txt512 = "";
                    if (ObjectUtil.findNewCell(correspondenceRow, "T", "TXT256").getColumnValue() != null)
                        txt512 = ObjectUtil.findNewCell(correspondenceRow, "T", "TXT256").getColumnValue().toString();
                    new_R = Integer.parseInt(st.nextElement().toString());
                    TaxClass.insertr(new_R, tDate, txt512);//USE TaxClass                             
                }
               
                //add newri
                correspondenceRow.setModify(true);
                rowsIter = correspondenceRow.getRowSet().getRows().iterator();
                newRAndOldRsIter = newRAndOldRs.iterator();
                int currentRI = 1;
                while (rowsIter.hasNext()) {
                    Row row = (Row)rowsIter.next();
                    String str = (String)newRAndOldRsIter.next();
                    StringTokenizer st = new StringTokenizer(str, "-");
                    String tDate = ObjectUtil.findNewCell(correspondenceRow, "T", "DUE").getColumnValue().toString();
                    String txt512 = "";
                    String ld = CorrespondenceClass.getLD(correspondenceRow);
                    if (ObjectUtil.findNewCell(row, "TI", "TXT256").getColumnValue() != null)
                        txt512 = ObjectUtil.findNewCell(row, "TI", "TXT256").getColumnValue().toString();
                    String tc = "";
                    double tamt = 0.0;                   
                    if (correspondenceRow.isAdd()) {
                        if (row != correspondenceRow) {
                            String t = ObjectUtil.findNewCell(row, "TI", "T").getColumnValue().toString();
                            String ti = ObjectUtil.findNewCell(row, "TI", "TI").getColumnValue().toString();
                            txt512 = "Correspondence - " + t + " - " + ti;
                            tc = ObjectUtil.findNewCell(row, "TI", "TC").getColumnValue().toString();
                            tamt = Double.parseDouble(ObjectUtil.findNewCell(row, "TI", "TAMT").getColumnValue().toString());
                        }
                    } else if (correspondenceRow.isModify()) {
                        String t = ObjectUtil.findNewCell(row, "TI", "T").getColumnValue().toString();
                        String ti = ObjectUtil.findNewCell(row, "TI", "TI").getColumnValue().toString();
                        txt512 = "Correspondence - " + t + " - " + ti;
                        tc = ObjectUtil.findNewCell(row, "TI", "TC").getColumnValue().toString();
                        tamt = Double.parseDouble(ObjectUtil.findNewCell(row, "TI", "TAMT").getColumnValue().toString());
                    }
                    new_R = Integer.parseInt(st.nextElement().toString());
                    if (correspondenceRow.isAdd()) {
                        if (row != correspondenceRow) {
                            insertri(row, new_R, currentRI, ld, txt512, tc, tamt, tDate);
                            ObjectUtil.findNewCell(row, "TI", "RI").setColumnValue(currentRI);
                            currentRI++;
                            ObjectUtil.findNewCell(row, "TI", "R").setColumnValue(new_R)
                        }                     
                    } else {
                        insertri(row, new_R, currentRI, ld, txt512, tc, tamt, tDate);
                        ObjectUtil.findNewCell(row, "TI", "RI").setColumnValue(currentRI);
                        currentRI++;
                        ObjectUtil.findNewCell(row, "TI", "R").setColumnValue(new_R);
                    }
                }
               
                //BALANCE
                newRAndOldRsIter = newRAndOldRs.iterator();
                String balanceLd = balanceLD;
                String txt256 = TxtManager.getTxt("VIEW.OBJECTEDIT.CORRESPONDENCE.CORRESPONDENCEOFFSET");
                String tc = FamilyClass.getLocalCurrency();
                String lc = tc;
                String tDate = ObjectUtil.findNewCell(correspondenceRow, "T", "DUE").getColumnValue().toString();
                int currentR = -1;
                while (newRAndOldRsIter.hasNext()) {
                    String str = (String)newRAndOldRsIter.next();
                    StringTokenizer st = new StringTokenizer(str, "-");
                    new_R = Integer.parseInt(st.nextElement().toString());
                    if (currentR != new_R) {
                        currentR = new_R;
                        int ri = TaxClass.getMAXRIByR(currentR) + 1;//USE TaxClass
                        double tamt = 0 - TaxClass.getSUMLamt(currentR);//USE TaxClass
                        insertri_balance(correspondenceRow, currentR, ri, balanceLd, txt256, tc, tamt, tDate);
                    }               
                }
               
                return new_R;
           
        }
               
       
        public static void insertri_balance(Row correspondenceRow, int r, int ri, String ld, String txt256, String tc, double tamt, String rDate) {
                DAO dao = DAO.getInstance();
                String lc = FamilyClass.getLocalCurrency();
                double xr = TaxClass.getXR(lc, tc, rDate);//USE TaxClass
                double lamt = tamt * xr;
                dao.update(Resources.INSERT_RI_VALUE_SQL);
                dao.setObject(1, r);
                dao.setObject(2, ri);
                dao.setObject(3, txt256);
                dao.setObject(4, ld);
                dao.setObject(5, tc);
                dao.setObject(6, tamt);
                dao.setObject(7, lc);
                dao.setObject(8, xr);
                dao.setObject(9, lamt);
                dao.setObject(10, null);
                dao.setObject(11, null);
                dao.setObject(12, null);
                dao.executeUpdate();
        }
       
        public static void insertri(Row correspondenceRow, int r, int ri, String ld, String txt256, String tc, double tamt, String rDate) {
           
                DAO dao = DAO.getInstance();
                String lc = FamilyClass.getLocalCurrency();
                double xr = TaxClass.getXR(lc, tc, rDate);//USE TaxClass
                double lamt = tamt * xr;
                dao.update(Resources.INSERT_RI_VALUE_SQL_CORR);
                dao.setObject(1, r);
                dao.setObject(2, ri);
                dao.setObject(3, txt256);
                dao.setObject(4, ld);
                dao.setObject(5, tc);
                dao.setObject(6, tamt);
                dao.setObject(7, lc);
                dao.setObject(8, xr);
                dao.setObject(9, lamt);
                dao.setObject(10, ObjectUtil.findNewCell(correspondenceRow, "T", "NS").getColumnValue());
                dao.setObject(11, ObjectUtil.findNewCell(correspondenceRow, "T", "P").getColumnValue());
                dao.setObject(12, ObjectUtil.findNewCell(correspondenceRow, "T", "PA").getColumnValue());
                dao.setObject(13, ObjectUtil.findNewCell(correspondenceRow, "TI", "M").getColumnValue());
                dao.setObject(14, ObjectUtil.findNewCell(correspondenceRow, "TI", "MUOM").getColumnValue());
                dao.setObject(15, ObjectUtil.findNewCell(correspondenceRow, "TI", "MQUAN").getColumnValue());
                dao.setObject(16, ObjectUtil.findNewCell(correspondenceRow, "TI", "MPRICE").getColumnValue());
                dao.setObject(17, ObjectUtil.findNewCell(correspondenceRow, "TI", "IM").getColumnValue());
                dao.setObject(18, ObjectUtil.findNewCell(correspondenceRow, "TI", "IP").getColumnValue());
                dao.setObject(19, ObjectUtil.findNewCell(correspondenceRow, "TI", "IPUOM").getColumnValue());
                dao.setObject(20, ObjectUtil.findNewCell(correspondenceRow, "TI", "IPQUAN").getColumnValue());
                dao.setObject(21, ObjectUtil.findNewCell(correspondenceRow, "TI", "IPPRICE").getColumnValue());
                dao.executeUpdate();           
               
//                System.err.println("ObjectUtil.findNewCell(correspondenceRow, 'TI', 'MPRICE') =  " + ObjectUtil.findNewCell(correspondenceRow, "TI", "MPRICE").getColumnValue());
        }
       
        public static String getLD(Row correspondenceRow) {
           
                String ld = null;
                DAO dao = DAO.getInstance();
                dao.query(Resources.SELECT_LD_FROM_PA_SQL);
                dao.setObject(1, ObjectUtil.findNewCell(correspondenceRow, "T", "NS").getColumnValue().toString());
                dao.setObject(2, ObjectUtil.findNewCell(correspondenceRow, "T", "P").getColumnValue().toString());
                dao.setObject(3, ObjectUtil.findNewCell(correspondenceRow, "T", "PA").getColumnValue().toString());
                ResultSet rs = dao.executeQuery();
                try {
                    if (rs.next()) {
                        ld = rs.getString("LD");
                    }
                    rs.close();
                } catch (Exception e) {

                }

                return ld;
           
        }
       
        public Vector dealWithCorrespondence(Row mainRow) {
           
                Vector data = null;
               
                Cell nsCell = ObjectUtil.findNewCell(mainRow, "T", "NS");
                String ns = (String)nsCell.getColumnValue();
                Cell pCell = ObjectUtil.findNewCell(mainRow, "T", "P");
                String p = (String)pCell.getColumnValue();
                Cell paCell = ObjectUtil.findNewCell(mainRow, "T", "PA");
                String pa = (String)paCell.getColumnValue();
                if (isthisPartnerAccountCanTransfer(ns, p, pa)) {
                    data = generateCixFile(mainRow);                  
                } else {
                    data = null;
                }
                                               
                return data;
           
        }
       
        private Vector generateCixFile(Row mainRow) {
           
                Vector data = new Vector();
           
                Cell urtCell = ObjectUtil.findNewCell(mainRow, "T", "URT");
                String urt = (String)urtCell.getColumnValue();
                if ( (urt == null) || (urt.trim().equals("")) ) {                   
                    CixFile file = generateCixFile_Stat4(mainRow);
                    String fileName = generateCixFileName(mainRow, 4);
                    data.add(file);
                    data.add(fileName);
                } else {
                    CixFile file = generateCixFile_Stat5(mainRow);
                    String fileName = generateCixFileName(mainRow, 5);
                    data.add(file);
                    data.add(fileName);
                    registerTransfer(mainRow, null);
                }         
               
                return data;
           
        }
       
        private CixFile generateCixFile_Stat4(Row mainRow) {
           
                CixFile file = null;
               
                int cixFileStat = 4;
                Vector noEncryData = new Vector();
                byte[] wrappedKey = null;
                Vector encryData = new Vector();
                SealedObject sealedEncryData = null;
               
                Cell nsCell = ObjectUtil.findNewCell(mainRow, "T", "NS");
                String ns = (String)nsCell.getColumnValue();
                Cell pCell = ObjectUtil.findNewCell(mainRow, "T", "P");
                String p = (String)pCell.getColumnValue();
                Cell paCell = ObjectUtil.findNewCell(mainRow, "T", "PA");
                String pa = (String)paCell.getColumnValue();
               
                String urns = null;
                String urp = null;
                DAO dao = DAO.getInstance();
                dao.query(Resources.SELECT_URNS_URP_FORM_P_SQL);
                dao.setObject(1, ns);
                dao.setObject(2, p);
                ResultSet rs = dao.executeQuery();
                try {
                    if (rs.next()) {
                        urns = rs.getString("URNS");
                        urp = rs.getString("URP");
                    }
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
               
                String urpa = null;
                dao.query(Resources.SELECT_URPA_FROM_PA_SQL);
                dao.setObject(1, ns);
                dao.setObject(2, p);
                dao.setObject(3, pa);
                rs = dao.executeQuery();
                try {
                    if (rs.next()) {
                        urpa = rs.getString("URPA");
                    }
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
               
                noEncryData.add(urns);
                noEncryData.add(urp);
                noEncryData.add(urpa);
               
                encryData.add(mainRow);
               
                PrivateKey priKey = getPriKey(ns, p, pa);
                try {
                    KeyGenerator keyGen = KeyGenerator.getInstance("DES");
                    SecureRandom random = new SecureRandom();
                    keyGen.init(random);
                    SecretKey key = keyGen.generateKey();
                    Cipher cipher = Cipher.getInstance("DES");
                    cipher.init(Cipher.ENCRYPT_MODE,key);
                    sealedEncryData = new SealedObject(encryData, cipher);                      
                    cipher = Cipher.getInstance("RSA");
                    cipher.init(Cipher.WRAP_MODE, priKey);
                    wrappedKey = cipher.wrap(key);
                } catch (Exception e) {
                    e.printStackTrace();
                }
               
                file = new CixFile(cixFileStat, noEncryData, null, wrappedKey, sealedEncryData);
               
                return file;
           
        }
       
        private CixFile generateCixFile_Stat5(Row mainRow) {
               
                CixFile file = null;
               
               
               
                return file;
           
        }
       
        private String generateCixFileName(Row mainRow, int stat) {
           
                StringBuffer sb = new StringBuffer("");
                Cell tCell = ObjectUtil.findNewCell(mainRow, "T", "T");
                java.sql.Date now = new java.sql.Date(System.currentTimeMillis());
                String time = now.toString();
                sb.append(tCell.getColumnValue() + "_");
                sb.append(stat + "_");
                sb.append(time);
               
                return sb.toString();
           
        }
       
        private boolean isthisPartnerAccountCanTransfer(String ns, String p, String pa) {
           
                boolean result = false;
               
                DAO dao = DAO.getInstance();
                dao.query(Resources.SELECT_URPA_FROM_PA_SQL);
                dao.setObject(1, ns);
                dao.setObject(2, p);
                dao.setObject(3, pa);               
                ResultSet rs = dao.executeQuery();
                try {                   
                    if (rs.next()) {                       
                        String urpa = rs.getString("urpa");                      
                        if ( (urpa == null) || (urpa.trim().equals("")) )
                            result = false;
                        else
                            result = true;
                    }
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }                           
               
                return result;
           
        }
       
        private PrivateKey getPriKey(String ns, String p, String pa) {
           
                PrivateKey priKey = null;
               
                DAO dao = DAO.getInstance();
                dao.query(Resources.SELECT_PRIKEY_FROM_PA_BY_NS_P_PA_SQL);
                dao.setObject(1, ns);
                dao.setObject(2, p);
                dao.setObject(3, pa);
                dao.setObject(4, ns);
                dao.setObject(5, p);
                dao.setObject(6, pa);
                ResultSet rs = dao.executeQuery();
                try {
                    if (rs.next())
                        priKey = (PrivateKey)rs.getObject("PRIKEY");
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }                              
               
                return priKey;
           
        }
       
        private static String getTime(java.util.Date date) {
           
                Calendar cal = Calendar.getInstance();
                cal.setTime(date);
                int year = cal.get(Calendar.YEAR);
                int month = cal.get(Calendar.MONTH) + 1;
                int day = cal.get(Calendar.DATE);
                StringBuffer sb = new StringBuffer(year + "-");
                if (month < 10) {
                    sb.append("0" + month + "-");
                } else {
                    sb.append(month + "-");
                }
                if (day < 10) {
                    sb.append("0" + day);
                } else {
                    sb.append(day);
                }
               
                return sb.toString();
           
        }
   
}
TOP

Related Classes of realcix20.classes.CorrespondenceClass

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.