patch from Guillaume Lelarge
authorroot <root@bogon.bogon>
Sun, 17 Jan 2010 05:27:21 +0000 (13:27 +0800)
committerroot <root@bogon.bogon>
Sun, 17 Jan 2010 05:27:21 +0000 (13:27 +0800)
pgadmin/frm/frmImport.cpp
pgadmin/include/utils/pgcsvfile.h
pgadmin/ui/module.mk
pgadmin/utils/pgcsvfile.cpp

index e37f5006806d5fbd0b76c1f00a0bad94abbef493..702a6b52956c625f25afb67ac69e3b684233d27c 100755 (executable)
@@ -1252,7 +1252,6 @@ void frmImport::OnColSettingFormatStyle(wxCommandEvent &ev)
 void frmImport::OnColSettingCellChange(wxGridEvent &ev)\r
 {\r
     int evrownr = ev.GetRow();\r
-    int evcolnr = ev.GetCol();\r
 \r
     if (m_colsettingerrnum==-1)\r
         return;\r
@@ -1468,7 +1467,7 @@ void frmImport::ImportData()
     {\r
         txtLogMessages->Clear();\r
 \r
-        if (!m_destfile && impdest==IMPDESTFCOPY || impdest==IMPDESTFINS || impdest==IMPDESTFTEST || impdest==IMPDESTFILE)\r
+        if ((!m_destfile && impdest==IMPDESTFCOPY) || impdest==IMPDESTFINS || impdest==IMPDESTFTEST || impdest==IMPDESTFILE)\r
         {\r
             wxString destfilename = txtDestFilePath->GetValue();\r
             if (wxFile::Exists(destfilename) && !wxFile::Access(destfilename, wxFile::write))\r
@@ -4305,7 +4304,7 @@ bool frmImport::GenCSVSQLData(wxString& rowdatalist, wxString& rowlog, wxString*
                 {\r
                     if (haserror)\r
                         rowlog.Append(END_OF_LINE);\r
-                    rowlog.Append(wxString::Format(_("Column: %s can not be NULL."), *m_tgtcolsnames[dbcolidx]));\r
+                    rowlog.Append(_("Column: ") + *m_tgtcolsnames[dbcolidx] + _("%s can not be NULL."));\r
                     haserror = true;\r
                     rowdatalist.Append(wxT("<NULL>"));\r
                 }\r
@@ -6216,7 +6215,8 @@ void frmImport::ParseColsImpSetting(int dbcolnr)
     else\r
     {\r
         txtColsSettingLog->AppendText(_("(Target column"));\r
-        txtColsSettingLog->AppendText(wxString::Format(wxT(" #%d: %s)"), dbcolnr, *m_tgtcolsnames[dbcolnr]));\r
+        txtColsSettingLog->AppendText(wxString::Format(wxT(" #%d: "),\r
+            dbcolnr) + *m_tgtcolsnames[dbcolnr] + wxT(")"));\r
 \r
         origsrccolnr = m_colsrccolnr[dbcolnr];\r
         origcolerr = m_colsettingiserr[dbcolnr];\r
@@ -6328,11 +6328,11 @@ void frmImport::ParseColsImpSetting(int dbcolnr)
                     m_coltrimmode[dbcolidx] = TRIMNONE;\r
 \r
                 if ((formatstyle==FORMATSTYLEANSIC || (impmode==IMPORTMODEINSERT && formatstyle==FORMATSTYLEPGSQL)) &&\r
-                        tgtcoltype == wxT("date") || tgtcoltype == wxT("interval") ||\r
+                        (tgtcoltype == wxT("date") || tgtcoltype == wxT("interval") ||\r
                         tgtcoltype == wxT("time") || tgtcoltype == wxT("time without time zone") ||\r
                         tgtcoltype == wxT("timetz") || tgtcoltype == wxT("time with time zone") ||\r
                         tgtcoltype == wxT("timestamp") || tgtcoltype == wxT("timestamp without time zone") ||\r
-                        tgtcoltype == wxT("timestamptz") || tgtcoltype == wxT("timestamp with time zone"))\r
+                        tgtcoltype == wxT("timestamptz") || tgtcoltype == wxT("timestamp with time zone")))\r
                 {\r
                     colfmt = gridColSetting->GetCellValue(dbcolidx, FILEFMTCOLNUM);\r
                     if (colfmt.IsEmpty())\r
@@ -6643,7 +6643,8 @@ void frmImport::ParseColsImpSetting(int dbcolnr)
     }\r
     else\r
     {\r
-        txtColsSettingLog->AppendText(wxString::Format(_("The setting of target column #%d: %s"), dbcolnr, *m_tgtcolsnames[dbcolnr]));\r
+        txtColsSettingLog->AppendText(wxString::Format(_("The setting of target column #%d: "),\r
+            dbcolnr) + *m_tgtcolsnames[dbcolnr]);\r
         txtColsSettingLog->AppendText(_(" has been changed."));\r
 \r
         if (origsrccolnr!=m_colsrccolnr[dbcolnr])\r
index dc11ce40d2482353b1f147ed3563fd5bd76e54fa..7507dc9a8d9ab18b3b7f127e681dbb710c65da2e 100755 (executable)
@@ -14,7 +14,7 @@ class pgCSVFile
 public:\r
     // Archive format\r
     enum ArchiveFormat { ARCHUNKNOWN=0, ARCHZIP=0x1, ARCHTAR=0x2, ARCHGZIP=0x4, ARCHBZIP2=0x8 };\r
-    static const int MAXENTRYNUM = 127;\r
+    static const uint MAXENTRYNUM = 127;\r
     // Unix: LF, Dos: CR LF, Mac: CR\r
     static const wxChar LF = wxT('\n');//'LF' = 0xA = 10\r
     static const wxChar CR = wxT('\r');//'CR' = 0xD = 13\r
@@ -137,7 +137,7 @@ public:
     bool WidthDlmIsOk() { return m_delimitedbychar || m_widthdlmisok; }\r
        void Close();\r
 \r
-    size_t GenMoreFilePreview(wxString *pvstr = NULL);\r
+    wxFileOffset GenMoreFilePreview(wxString *pvstr = NULL);\r
 \r
     const wxString& GetFilePreview() { return m_pvfilecont; }\r
 \r
@@ -162,14 +162,14 @@ private:
     bool ValidateSetting();\r
 \r
     size_t GenCSVPreview(const bool isinit = false);\r
-    size_t MB2str(wxCSConv *txtconv, wxString *bufstr, char* inbuf, const size_t bufos, size_t& datlen);\r
+    wxFileOffset MB2str(wxCSConv *txtconv, wxString *bufstr, char* inbuf, const size_t bufos, size_t& datlen);\r
 \r
     wxString **ParseLine(const wxChar *csvdata, size_t *parsedoffset, const bool hasmore,\r
                     wxString **parsedvals, size_t *curcolnr,\r
-                    size_t *rsval, wxString *linedata);\r
+                    wxFileOffset *rsval, wxString *linedata);\r
     wxString **ParseLine(const wxChar *csvdata, size_t *parsedoffset, const bool hasmore,\r
                     wxString **parsedvals, size_t *curcolnr, bool *incolparsing, bool *inquotedblk,\r
-                    size_t *rsval, size_t *filelinenum, wxString *linedata);\r
+                    wxFileOffset *rsval, size_t *filelinenum, wxString *linedata);\r
     void ClearParsedLine();\r
 \r
     void ClearPreview();\r
index ff1f272f5b0165dfb3918048ae1ebb5cdb31d19f..50abe7606a3ec397e14843b176d38eb4ba3819e1 100644 (file)
@@ -77,6 +77,7 @@ TMP_ui += \
        $(srcdir)/ui/frmExport.xrc \
        $(srcdir)/ui/frmGrantWizard.xrc \
        $(srcdir)/ui/frmHint.xrc \
+        $(srcdir)/ui/frmImport.xrc \
        $(srcdir)/ui/frmMaintenance.xrc \
        $(srcdir)/ui/frmOptions.xrc \
        $(srcdir)/ui/frmPassword.xrc \
index 86f56089effd9405f997f33189fbe89a7c4d24a6..3212709979d6681e1c02f128fe828336e0bdcf27 100755 (executable)
@@ -10,7 +10,7 @@ const wxRegEx pgCSVFile::m_widthdlmregex(wxT("^([0-9]{1,6}|[Nn][Un][Ll][Ll])?(,(
 pgCSVFile::pgCSVFile()\r
 {\r
     m_fileencoding = wxFONTENCODING_SYSTEM;\r
-       m_fileconv = new wxCSConv(wxFONTENCODING_SYSTEM);\r
+    m_fileconv = new wxCSConv(wxFONTENCODING_SYSTEM);\r
     m_fencisok = false;\r
 \r
     m_rawfile = NULL;\r
@@ -18,16 +18,16 @@ pgCSVFile::pgCSVFile()
     m_ferrmsg = _("Please specify a file.");\r
     m_settingisok = false;\r
 \r
-       m_delimitedbychar = true;\r
-       m_chardlm = DEFAULTCHARDELIMITER;\r
+    m_delimitedbychar = true;\r
+    m_chardlm = DEFAULTCHARDELIMITER;\r
     m_chardlmvals = m_chardlm.GetData();\r
-       m_widthdlm = NULL;\r
+    m_widthdlm = NULL;\r
     m_widthdlmsnum = (size_t)0;\r
     m_widthdlmisok = false;\r
-       m_quotedby = DEFAULTQUOTEDBY;\r
+    m_quotedby = DEFAULTQUOTEDBY;\r
 \r
     m_firstrowisheader = false;\r
-       m_backslashquote = false;\r
+    m_backslashquote = false;\r
     m_pvrowsnum = DEFAULTPREVIEWROWSNUM;\r
     m_forcelinebreak = true;\r
 \r
@@ -77,18 +77,18 @@ pgCSVFile::pgCSVFile(const wxString fpath, wxFontEncoding fileencoding,
                      const wxString chardlm, const wxChar quotedby)\r
 {\r
     m_fileencoding = fileencoding;\r
-       m_fileconv = new wxCSConv(fileencoding);\r
+    m_fileconv = new wxCSConv(fileencoding);\r
     m_fencisok = false;\r
 \r
-       m_delimitedbychar = true;\r
-       m_chardlm = chardlm;\r
+    m_delimitedbychar = true;\r
+    m_chardlm = chardlm;\r
     m_chardlmvals = m_chardlm.GetData();\r
-       m_widthdlm = NULL;\r
+    m_widthdlm = NULL;\r
     m_widthdlmsnum = (size_t)0;\r
     m_widthdlmisok = false;\r
-       m_firstrowisheader = false;\r
-       m_backslashquote = false;\r
-       m_quotedby = quotedby;\r
+    m_firstrowisheader = false;\r
+    m_backslashquote = false;\r
+    m_quotedby = quotedby;\r
     m_pvrowsnum = DEFAULTPREVIEWROWSNUM;\r
     m_forcelinebreak = true;\r
 \r
@@ -106,7 +106,7 @@ pgCSVFile::pgCSVFile(const wxString fpath, wxFontEncoding fileencoding,
 */\r
 pgCSVFile::~pgCSVFile()\r
 {\r
-       Close();\r
+    Close();\r
 \r
     if (m_widthdlm)\r
         delete []m_widthdlm;\r
@@ -175,21 +175,21 @@ bool pgCSVFile::Open(const wxString fpath, bool isarch)
     {\r
         m_fileisok = false;\r
         m_ferrmsg = _("Please specify a file.");\r
-               return false;\r
+        return false;\r
     }\r
 \r
     if (!wxFile::Exists(fpath))\r
     {\r
         m_fileisok = false;\r
         m_ferrmsg = _("File not exists.");\r
-               return false;\r
+        return false;\r
     }\r
 \r
     if (!wxFile::Access(fpath, wxFile::read))\r
     {\r
         m_fileisok = false;\r
         m_ferrmsg = _("Failed to open the file.");\r
-               return false;\r
+        return false;\r
     }\r
 \r
 #if wxUSE_STREAMS && wxUSE_ARCHIVE_STREAMS && (wxUSE_ZIPSTREAM || wxUSE_TARSTREAM)\r
@@ -302,7 +302,7 @@ bool pgCSVFile::Open(const wxString fpath, bool isarch)
     {\r
         m_fileisok = false;\r
         m_ferrmsg = _("Failed to open the file.");\r
-               return false;\r
+        return false;\r
     }\r
 \r
     m_filesize = m_rawfile->Length();\r
@@ -403,7 +403,7 @@ void pgCSVFile::LoadEntryList(const wxString* origentryname)
         entriesnum = 0;\r
         wxTarEntry *tmptarentry;\r
         m_tarentrylist = new wxTarEntry*[MAXENTRYNUM+1];\r
-        while (tmptarentry = m_tarinstrm->GetNextEntry())\r
+        while ((tmptarentry=m_tarinstrm->GetNextEntry()))\r
         {\r
             if (tmptarentry->IsDir())\r
             {\r
@@ -452,7 +452,7 @@ void pgCSVFile::LoadEntryList(const wxString* origentryname)
 \r
         entriesnum = 0;\r
         wxZipEntry *tmpzipentry;\r
-        while (tmpzipentry = m_zipinstrm->GetNextEntry())\r
+        while ((tmpzipentry=m_zipinstrm->GetNextEntry()))\r
         {\r
             if (tmpzipentry->IsDir())\r
             {\r
@@ -703,8 +703,8 @@ void pgCSVFile::Close()
 \r
     if (m_rawfile)\r
     {\r
-           if (m_rawfile->IsOpened())\r
-                   m_rawfile->Close();\r
+        if (m_rawfile->IsOpened())\r
+            m_rawfile->Close();\r
 \r
         delete m_rawfile;\r
         m_rawfile = NULL;\r
@@ -908,45 +908,45 @@ void pgCSVFile::SetCharDelimiter(wxString chardlm)
 \r
 const wxString pgCSVFile::GetWidthDelimiterStr()\r
 {\r
-       if (!m_widthdlm)\r
-               return wxEmptyString;\r
+    if (!m_widthdlm)\r
+        return wxEmptyString;\r
 \r
-       wxString widthdlm;\r
+    wxString widthdlm;\r
     size_t dlmidx;\r
-       for (dlmidx=0; dlmidx<m_widthdlmsnum; dlmidx++)\r
-       {\r
-               if (dlmidx)\r
+    for (dlmidx=0; dlmidx<m_widthdlmsnum; dlmidx++)\r
+    {\r
+        if (dlmidx)\r
             widthdlm << wxT(", ");\r
-        if (m_widthdlm[dlmidx]==NULLWIDTHDELIMITER)\r
+        if ((int)m_widthdlm[dlmidx]==NULLWIDTHDELIMITER)\r
             widthdlm << wxT("NULL");\r
         else\r
-                   widthdlm << m_widthdlm[dlmidx];\r
-       }\r
+            widthdlm << m_widthdlm[dlmidx];\r
+    }\r
 \r
-       return widthdlm;\r
+    return widthdlm;\r
 }\r
 \r
 bool pgCSVFile::SetWidthDelimiter(wxString widthdelimiter)\r
 {\r
-       if (m_widthdlm)\r
-       {\r
-               delete []m_widthdlm;\r
-               m_widthdlm = NULL;\r
-       }\r
+    if (m_widthdlm)\r
+    {\r
+        delete []m_widthdlm;\r
+        m_widthdlm = NULL;\r
+    }\r
 \r
     if (widthdelimiter.IsEmpty())\r
-       {\r
-               m_widthdlm = NULL;\r
+    {\r
+        m_widthdlm = NULL;\r
         m_widthdlmsnum = (size_t)0;\r
         m_widthdlmisok = true;\r
-               return true;\r
-       }\r
+        return true;\r
+    }\r
 \r
-       if (!m_widthdlmregex.Matches(widthdelimiter))\r
+    if (!m_widthdlmregex.Matches(widthdelimiter))\r
     {\r
         m_widthdlmisok = false;\r
         m_ferrmsg = _("Invalid width delimiter.");\r
-               return false;\r
+        return false;\r
     }\r
 \r
     long tkval;\r
@@ -971,7 +971,7 @@ bool pgCSVFile::SetWidthDelimiter(wxString widthdelimiter)
         }\r
 \r
         m_widthdlmisok = true;\r
-               return true;\r
+        return true;\r
     }\r
 \r
     int c_delimiter = 0;\r
@@ -1114,7 +1114,7 @@ void pgCSVFile::SetPreviewRowsNum(const size_t rowsnum)
     GenCSVPreview(rowsnum==(size_t)0);\r
 }\r
 \r
-size_t pgCSVFile::GenMoreFilePreview(wxString *pvstr)\r
+wxFileOffset pgCSVFile::GenMoreFilePreview(wxString *pvstr)\r
 {\r
     size_t readlen = (size_t)0, buflen = (size_t)0, convlen, pvcurbufsz;\r
     char readbuf[READBUFSZ];\r
@@ -1224,7 +1224,7 @@ size_t pgCSVFile::GenMoreFilePreview(wxString *pvstr)
     if (!pvstr)\r
         delete genstr;\r
 \r
-    return buflen;\r
+    return (wxFileOffset)buflen;\r
 }\r
 \r
 void pgCSVFile::ReparseFilePreview()\r
@@ -1256,7 +1256,8 @@ size_t pgCSVFile::GenCSVPreview(const bool isinit)
             return wxInvalidOffset;\r
 \r
     const wxChar *filedata = m_pvfilecont.GetData();\r
-    size_t parsedrs, curcolnr, parsedoffset = m_pvparsedoffset, filelinenum;\r
+    wxFileOffset parsedrs;\r
+    size_t curcolnr, parsedoffset = m_pvparsedoffset, filelinenum;\r
     bool isfileeof = Eof(), incolparsing, inquotedblk;\r
     size_t *tmpcolsnums;\r
     wxString *fileline, **tmpcsvlines, **parsedvals, ***tmpcolsvals;\r
@@ -1414,9 +1415,9 @@ void pgCSVFile::ClearCSVPreview()
     m_maxcolsnum = (size_t)0;\r
 }\r
 \r
-size_t pgCSVFile::MB2str(wxCSConv *txtconv, wxString *bufstr, char* inbuf, const size_t bufos, size_t& datlen)\r
+wxFileOffset pgCSVFile::MB2str(wxCSConv *txtconv, wxString *bufstr, char* inbuf, const size_t bufos, size_t& datlen)\r
 {\r
-    size_t convlen;\r
+    wxFileOffset convlen;\r
 \r
     int decr;\r
     for (decr=0 ; decr < 4 ; decr++)\r
@@ -1446,7 +1447,7 @@ return value:
     wxInvalidOffset mean need more data\r
 */\r
 wxString **pgCSVFile::ParseLine(const wxChar *csvdata, size_t *parsedoffset, bool hasmore,\r
-                wxString **parsedvals, size_t *curcolnr, size_t *rsval, wxString *linedata)\r
+                wxString **parsedvals, size_t *curcolnr, wxFileOffset *rsval, wxString *linedata)\r
 {\r
     wxASSERT(csvdata[*parsedoffset]);\r
 \r
@@ -1501,7 +1502,7 @@ wxString **pgCSVFile::ParseLine(const wxChar *csvdata, size_t *parsedoffset, boo
 \r
             while (*curcolnr<m_widthdlmsnum)\r
             {\r
-                if (m_widthdlm[*curcolnr]==NULLWIDTHDELIMITER)\r
+                if ((int)m_widthdlm[*curcolnr]==NULLWIDTHDELIMITER)\r
                     parsedvals[*curcolnr] = NULL;\r
                 else if (m_widthdlm[*curcolnr])\r
                     break;\r
@@ -1534,7 +1535,7 @@ wxString **pgCSVFile::ParseLine(const wxChar *csvdata, size_t *parsedoffset, boo
 \r
                 while (*curcolnr<m_widthdlmsnum)\r
                 {\r
-                    if (m_widthdlm[*curcolnr]==NULLWIDTHDELIMITER)\r
+                    if ((int)m_widthdlm[*curcolnr]==NULLWIDTHDELIMITER)\r
                         parsedvals[*curcolnr] = NULL;\r
                     else if (m_widthdlm[*curcolnr])\r
                         break;\r
@@ -1564,7 +1565,7 @@ wxString **pgCSVFile::ParseLine(const wxChar *csvdata, size_t *parsedoffset, boo
         {\r
             while (*curcolnr<m_widthdlmsnum)\r
             {\r
-                if (m_widthdlm[*curcolnr]==NULLWIDTHDELIMITER)\r
+                if ((int)m_widthdlm[*curcolnr]==NULLWIDTHDELIMITER)\r
                     parsedvals[*curcolnr] = NULL;\r
                 else if (m_widthdlm[*curcolnr])\r
                     break;\r
@@ -1667,7 +1668,7 @@ filelinenum: how much file lines that be contained in csv row
 */\r
 wxString **pgCSVFile::ParseLine(const wxChar *csvdata, size_t *parsedoffset, const bool hasmore,\r
                                 wxString **parsedvals, size_t *curcolnr, bool *incolparsing, bool *inquotedblk,\r
-                                size_t *rsval, size_t *filelinenum, wxString *linedata)\r
+                                wxFileOffset *rsval, size_t *filelinenum, wxString *linedata)\r
 {\r
     wxASSERT(csvdata[*parsedoffset]);\r
 \r
@@ -2395,7 +2396,8 @@ bool pgCSVFile::EndPreview()
     m_parsedoffset = 0;\r
     if (m_firstrowisheader)\r
     {\r
-        size_t parsedrs, curcolnr = (size_t)0, parsedoffset = (size_t)0;\r
+        wxFileOffset parsedrs;\r
+        size_t curcolnr = (size_t)0, parsedoffset = (size_t)0;\r
         wxString **parsedvals;\r
         if (m_delimitedbychar)\r
         {\r
@@ -2474,7 +2476,8 @@ bool pgCSVFile::NextLine(wxString& linedata, wxString**& linevals, int &valsnum)
     if (!filedata[m_parsedoffset] && Eof())\r
         return true;\r
 \r
-    size_t parsedrs, curcolnr = (size_t)0, parsedoffset = m_parsedoffset, convlen;\r
+    wxFileOffset parsedrs;\r
+    size_t curcolnr = (size_t)0, parsedoffset = m_parsedoffset, convlen;\r
     wxString **parsedvals = NULL;\r
     char* readbuf = NULL;\r
     bool incolparsing = false, inquotedblk = false;\r