メインページ | ファイル一覧 | ファイルメンバ

ColumnData.cpp

00001 // ColumnData.cpp: CColumnData クラスのインプリメンテーション 00002 // 00004 00005 #include "stdafx.h" 00006 #include "nexpcsv.h" 00007 #include "ColumnData.h" 00008 00009 #ifdef _DEBUG 00010 #undef THIS_FILE 00011 static char THIS_FILE[]=__FILE__; 00012 #define new DEBUG_NEW 00013 #endif 00014 00016 // 構築/消滅 00018 00019 CColumnData::CColumnData() 00020 { 00021 m_bOutout = m_bDefaultOutout = FALSE; 00022 m_nColumnType = COLUMNTYPE_NULL; 00023 m_nColumnNumber = -1; 00024 m_bHide = TRUE; 00025 m_bIcon = FALSE; 00026 } 00027 00028 CColumnData::~CColumnData() 00029 { 00030 00031 } 00032 00033 CColumnData::CColumnData(const CColumnData& org){ 00034 Copy(org); 00035 } 00036 00037 CColumnData &CColumnData::operator=(const CColumnData &org) { 00038 if (this == &org) return *this; 00039 Copy(org); 00040 return *this; 00041 } 00042 00043 void CColumnData::Copy(const CColumnData &org) { 00044 m_nColumnType = org.m_nColumnType; 00045 m_nColumnNumber = org.m_nColumnNumber; 00046 m_bHide = org.m_bHide; 00047 m_bIcon = org.m_bIcon; 00048 m_strTitle = org.m_strTitle; 00049 m_formula = org.m_formula; 00050 m_datetimefmt = org.m_datetimefmt; 00051 m_numberfmt = org.m_numberfmt; 00052 m_separator = org.m_separator; 00053 m_bOutout = org.m_bOutout; 00054 m_bDefaultOutout = org.m_bDefaultOutout; 00055 } 00056 00057 //---------------------------------------- 00058 // 列情報の設定 00059 //---------------------------------------- 00060 void CColumnData::SetColumn(LNVFColumn &column) 00061 { 00062 // 列名 00063 m_strTitle = column.GetTitle(); 00064 if ( m_strTitle.IsNull() ) m_strTitle = column.GetInternalName(); 00065 00066 // 列のタイプ 00067 m_nColumnType = COLUMNTYPE_VIEW; 00068 m_bHide = column.GetHideColumn(); 00069 m_bIcon = column.GetDisplayValuesAsIcons(); 00070 m_bOutout = m_bDefaultOutout = (!m_bHide && !m_bIcon); 00071 m_nColumnNumber = column.GetColumnNumber(); 00072 column.GetFormula(&m_formula); 00073 00074 // 列のフォーマット 00075 m_datetimefmt = column.GetDatetimeFormat(); 00076 m_numberfmt = column.GetNumberFormat(); 00077 m_separator = column.GetSeparator(); 00078 00079 } 00080 00081 //---------------------------------------- 00082 // 式情報の設定 00083 //---------------------------------------- 00084 void CColumnData::SetColumn(LPCTSTR szFormula, LNVFSEPARATOR separator ) 00085 { 00086 // 列のタイプ 00087 m_nColumnType = COLUMNTYPE_FORMULA; 00088 m_bDefaultOutout = FALSE; 00089 m_bOutout = TRUE; 00090 00091 // 列のフォーマット 00092 m_formula = szFormula; 00093 m_separator = separator; 00094 } 00095 00096 LNString CColumnData::ToString(const LNVFEntry &entry, const LNNotesSession *session, LPCTSTR separator) 00097 { 00098 // CString strMsg; 00099 // strMsg.Format(_T("entry[%d]"), m_nColumnNumber); 00100 // AfxMessageBox(strMsg); 00101 return ToString(entry[m_nColumnNumber], session, separator); 00102 } 00103 00104 LNString CColumnData::ToString(const LNNote &note, const LNNotesSession *session, LPCTSTR separator) 00105 { 00106 LNItem result; 00107 LNFORMULAFLAGS flags; 00108 m_formula.Evaluate( &result, note, &flags ); 00109 return ToString(result, session, separator); 00110 } 00111 00112 LNString CColumnData::ToString(const LNItem & item, const LNNotesSession *session, LPCTSTR separator) 00113 { 00114 00115 LNString strOutput(""); 00116 if (item.IsNull()) return strOutput; 00117 00118 if (separator == NULL) separator = GetSeparator(); 00119 00120 // AfxMessageBox(m_session->GetUserName()); 00121 try { 00122 switch (item.GetType()) { 00123 /* 00124 // 日付範囲アイテム 00125 case LNITEMTYPE_DATETIMERANGES: 00126 { 00127 LNDatetimeRanges dtrConv = item; 00128 for (LNINT n=0; n<dtrConv.GetCount(); n++) { 00129 if (n > 0) strOutput += ":"; 00130 LNDatetimeRange dtrString; 00131 LNString strTemp; 00132 dtrString = dteConv[n]; 00133 dtrString.GetText(&strTemp);; 00134 // strOutput += strTemp; 00135 // dtrString.GetText(&strTemp); 00136 // strOutput += "["; 00137 // strOutput += "]"; 00138 } 00139 break; 00140 } 00141 */ 00142 // 日付アイテム 00143 case LNITEMTYPE_DATETIMES: 00144 { 00145 LNDatetimes dteConv = item; 00146 for (LNINT n=0; n<dteConv.GetCount(); n++) { 00147 if (n > 0) strOutput += separator; 00148 LNDatetime dteString; 00149 LNString strTemp; 00150 dteString = dteConv[n]; 00151 if (session!=NULL) dteString.GetText(m_datetimefmt, session->GetInternational(), &strTemp); 00152 else dteString.GetText(&strTemp); 00153 strOutput += strTemp; 00154 } 00155 break; 00156 } 00157 // 数値アイテム 00158 case LNITEMTYPE_NUMBERS: 00159 { 00160 LNNumbers numConv = item; 00161 for (LNINT n=0; n<numConv.GetCount(); n++) { 00162 if (n > 0) strOutput += separator; 00163 LNNumber numString; 00164 LNString strTemp; 00165 numString = numConv[n]; 00166 if (session) numString.GetText(m_numberfmt, session->GetInternational(), &strTemp); 00167 else numString.GetText(&strTemp); 00168 strOutput += strTemp; 00169 } 00170 break; 00171 } 00172 // テキストアイテム 00173 case LNITEMTYPE_TEXT: 00174 { 00175 LNText txtConv = item; 00176 for (LNINT n=0; n<txtConv.GetCount(); n++) { 00177 if (n > 0) strOutput += separator; 00178 strOutput += txtConv[n]; 00179 } 00180 break; 00181 } 00182 /* 00183 // リッチテキストアイテム 00184 case LNITEMTYPE_RICHTEXT: 00185 LNRichText rtxConv; 00186 rtxConv = item; 00187 break; 00188 */ 00189 case LNITEMTYPE_ERROR: 00190 case LNITEMTYPE_FONTTABLE: 00191 case LNITEMTYPE_FORMULA: 00192 case LNITEMTYPE_ICON: 00193 case LNITEMTYPE_NOTELINKS: 00194 case LNITEMTYPE_NOTEREFS: 00195 case LNITEMTYPE_OBJECT: 00196 case LNITEMTYPE_SIGNATURE: 00197 case LNITEMTYPE_UNAVAILABLE: 00198 case LNITEMTYPE_UNSUPPORTED: 00199 case LNITEMTYPE_USERDATA: 00200 default: 00201 break; 00202 } 00203 } catch (LNSTATUS lnerror) { 00204 throw lnerror; 00205 } 00206 00207 return strOutput; 00208 00209 } 00210 00211 char * CColumnData::GetSeparator() 00212 { 00213 char *szSeparator = _T(""); 00214 switch (m_separator) { 00215 case LNVFSEPARATOR_NONE: break; 00216 case LNVFSEPARATOR_SPACE: szSeparator = _T(" "); break; 00217 case LNVFSEPARATOR_COMMA: szSeparator = _T(","); break; 00218 case LNVFSEPARATOR_SEMICOLON: szSeparator = _T(";"); break; 00219 case LNVFSEPARATOR_NEWLINE: szSeparator = _T("\n"); break; 00220 } 00221 return szSeparator; 00222 }

LotusNotes CSV Export Plug-inに対してWed Jun 30 15:53:52 2004に生成されました。 doxygen 1.3.7