1 14 package org.compiere.print; 15 16 import java.util.*; 17 import java.sql.*; 18 19 import org.apache.log4j.Logger; 20 21 import org.compiere.model.*; 22 import org.compiere.util.DB; 23 import org.compiere.util.Env; 24 import org.compiere.util.CCache; 25 import org.compiere.util.DisplayType; 26 import org.compiere.util.Language; 27 28 35 public class MPrintFormatItem extends X_AD_PrintFormatItem 36 { 37 42 public MPrintFormatItem (Properties ctx, int AD_PrintFormatItem_ID) 43 { 44 super (ctx, AD_PrintFormatItem_ID); 45 if (AD_PrintFormatItem_ID == 0) 47 { 48 setFieldAlignmentType(FIELDALIGNMENTTYPE_Default); 49 setLineAlignmentType(LINEALIGNMENTTYPE_None); 50 setPrintFormatType(PRINTFORMATTYPE_Text); 51 setPrintAreaType(PRINTAREATYPE_Content); 52 setIsRelativePosition(true); 54 setIsNextLine(false); 55 setIsNextPage(false); 56 setIsSetNLPosition(false); 57 setXspace(0); 58 setYspace(0); 59 setXposition(0); 60 setYposition(0); 61 setMaxWidth(0); 62 setIsFixedWidth(false); 63 setIsHeightOneLine(false); 64 setMaxHeight(0); 65 setIsOrderBy(false); 67 setSortNo(0); 68 setIsGroupBy(false); 69 setIsPageBreak(false); 70 setIsSummarized(false); 71 setIsAveraged(false); 72 setIsCounted(false); 73 setIsMinCalc(false); 74 setIsMaxCalc(false); 75 setIsRunningTotal(false); 76 setImageIsAttached(false); 77 setIsSuppressNull(false); 78 } 79 } 81 86 public MPrintFormatItem (Properties ctx, ResultSet rs) 87 { 88 super (ctx, rs); 89 } 91 92 private String m_columnName = null; 93 94 private HashMap m_translationLabel; 95 96 private HashMap m_translationSuffix; 97 98 private static Logger s_log = Logger.getLogger (PO.class); 99 100 101 102 107 public String getPrintName (Language language) 108 { 109 if (language == null || Env.isBaseLanguage(language, "AD_PrintFormatItem")) 110 return getPrintName(); 111 loadTranslations(); 112 String retValue = (String )m_translationLabel.get(language.getAD_Language()); 113 if (retValue == null || retValue.length() == 0) 114 return getPrintName(); 115 return retValue; 116 } 118 121 private void loadTranslations() 122 { 123 if (m_translationLabel == null) 124 { 125 m_translationLabel = new HashMap(); 126 m_translationSuffix = new HashMap(); 127 String sql = "SELECT AD_Language, PrintName, PrintNameSuffix FROM AD_PrintFormatItem_Trl WHERE AD_PrintFormatItem_ID=?"; 128 try 129 { 130 PreparedStatement pstmt = DB.prepareStatement(sql); 131 pstmt.setInt(1, getID()); 132 ResultSet rs = pstmt.executeQuery(); 133 while (rs.next()) 134 { 135 m_translationLabel.put (rs.getString (1), rs.getString (2)); 136 m_translationSuffix.put (rs.getString (1), rs.getString (3)); 137 } 138 rs.close(); 139 pstmt.close(); 140 } 141 catch (SQLException e) 142 { 143 log.error("loadTranslations", e); 144 } 145 } 146 } 148 153 public String getPrintNameSuffix (Language language) 154 { 155 if (language == null || Env.isBaseLanguage(language, "AD_PrintFormatItem")) 156 return getPrintNameSuffix(); 157 loadTranslations(); 158 String retValue = (String )m_translationSuffix.get(language.getAD_Language()); 159 if (retValue == null || retValue.length() == 0) 160 return getPrintNameSuffix(); 161 return retValue; 162 } 164 165 public boolean isTypeField() 166 { 167 return getPrintFormatType().equals(PRINTFORMATTYPE_Field); 168 } 169 public boolean isTypeText() 170 { 171 return getPrintFormatType().equals(PRINTFORMATTYPE_Text); 172 } 173 public boolean isTypePrintFormat() 174 { 175 return getPrintFormatType().equals(PRINTFORMATTYPE_PrintFormat); 176 } 177 public boolean isTypeImage() 178 { 179 return getPrintFormatType().equals(PRINTFORMATTYPE_Image); 180 } 181 182 public boolean isFieldCenter() 183 { 184 return getFieldAlignmentType().equals(FIELDALIGNMENTTYPE_Center); 185 } 186 public boolean isFieldAlignLeading() 187 { 188 return getFieldAlignmentType().equals(FIELDALIGNMENTTYPE_LeadingLeft); 189 } 190 public boolean isFieldAlignTrailing() 191 { 192 return getFieldAlignmentType().equals(FIELDALIGNMENTTYPE_TrailingRight); 193 } 194 public boolean isFieldAlignBlock() 195 { 196 return getFieldAlignmentType().equals(FIELDALIGNMENTTYPE_Block); 197 } 198 public boolean isFieldAlignDefault() 199 { 200 return getFieldAlignmentType().equals(FIELDALIGNMENTTYPE_Default); 201 } 202 203 public boolean isLineAlignCenter() 204 { 205 return getLineAlignmentType().equals(LINEALIGNMENTTYPE_Center); 206 } 207 public boolean isLineAlignLeading() 208 { 209 return getLineAlignmentType().equals(LINEALIGNMENTTYPE_LeadingLeft); 210 } 211 public boolean isLineAlignTrailing() 212 { 213 return getLineAlignmentType().equals(LINEALIGNMENTTYPE_TrailingRight); 214 } 215 216 public boolean isHeader() 217 { 218 return getPrintAreaType().equals(PRINTAREATYPE_Header); 219 } 220 public boolean isContent() 221 { 222 return getPrintAreaType().equals(PRINTAREATYPE_Content); 223 } 224 public boolean isFooter() 225 { 226 return getPrintAreaType().equals(PRINTAREATYPE_Footer); 227 } 228 229 233 protected void setAD_PrintFormat_ID (int AD_PrintFormat_ID) 234 { 235 super.setValueNoCheck("AD_PrintFormat_ID", new Integer (AD_PrintFormat_ID)); 236 } 238 239 240 244 public String toString() 245 { 246 StringBuffer sb = new StringBuffer ("MPrintFormatItem["); 247 sb.append("ID=").append(getID()) 248 .append(",Name=").append(getName()) 249 .append(",Print=").append(getPrintName()) 250 .append(", Seq=").append(getSeqNo()) 251 .append(",Sort=").append(getSortNo()) 252 .append(", Area=").append(getPrintAreaType()) 253 .append(", MaxWidth=").append(getMaxWidth()) 254 .append(",MaxHeight=").append(getMaxHeight()) 255 .append(",OneLine=").append(isHeightOneLine()) 256 .append(", Relative=").append(isRelativePosition()); 257 if (isRelativePosition()) 258 sb.append(",X=").append(getXspace()).append(",Y=").append(getYspace()) 259 .append(",LineAlign=").append(getLineAlignmentType()) 260 .append(",NewLine=").append(isNextLine()) 261 .append(",NewPage=").append(isPageBreak()); 262 else 263 sb.append(",X=").append(getXposition()).append(",Y=").append(getYposition()); 264 sb.append(",FieldAlign=").append(getFieldAlignmentType()); 265 sb.append(", Type=").append(getPrintFormatType()); 267 if (isTypeText()) 268 ; 269 else if (isTypeField()) 270 sb.append(",AD_Column_ID=").append(getAD_Column_ID()); 271 else if (isTypePrintFormat()) 272 sb.append(",AD_PrintFormatChild_ID=").append(getAD_PrintFormatChild_ID()) 273 .append(",AD_Column_ID=").append(getAD_Column_ID()); 274 else if (isTypeImage()) 275 sb.append(",ImageIsAttached=").append(isImageIsAttached()).append(",ImageURL=").append(getImageURL()); 276 sb.append(", Printed=").append(isPrinted()) 278 .append(",SeqNo=").append(getSeqNo()) 279 .append(",OrderBy=").append(isOrderBy()) 280 .append(",SortNo=").append(getSortNo()) 281 .append(",Summarized=").append(isSummarized()); 282 sb.append("]"); 283 return sb.toString(); 284 } 286 287 288 289 290 291 private static CCache s_columns = new CCache("printFormatItemColumns", 200); 292 293 297 public String getColumnName() 298 { 299 if (m_columnName == null) m_columnName = getColumnName (new Integer (getAD_Column_ID())); 301 return m_columnName; 302 } 304 310 private static String getColumnName (Integer AD_Column_ID) 311 { 312 if (AD_Column_ID == null || AD_Column_ID.intValue() == 0) 313 return null; 314 String retValue = (String )s_columns.get(AD_Column_ID); 316 if (retValue == null) 317 { 318 String sql = "SELECT ColumnName FROM AD_Column WHERE AD_Column_ID=?"; 319 try 320 { 321 PreparedStatement pstmt = DB.prepareStatement(sql); 322 pstmt.setInt(1, AD_Column_ID.intValue()); 323 ResultSet rs = pstmt.executeQuery(); 324 if (rs.next()) 325 { 326 retValue = rs.getString(1); 327 s_columns.put(AD_Column_ID, retValue); 328 } 329 else 330 s_log.error("getColumnName - Not found AD_Column_ID=" + AD_Column_ID); 331 rs.close(); 332 pstmt.close(); 333 } 334 catch (SQLException e) 335 { 336 s_log.error("getColumnName ID=" + AD_Column_ID, e); 337 } 338 } 339 return retValue; 340 } 342 343 344 352 public static MPrintFormatItem createFromColumn (Properties ctx, int AD_Column_ID, MPrintFormat format, int seqNo) 353 { 354 MPrintFormatItem pfi = new MPrintFormatItem (ctx, 0); 355 pfi.setAD_PrintFormat_ID (format.getAD_PrintFormat_ID()); 356 pfi.setValueNoCheck("AD_Client_ID", new Integer (format.getAD_Client_ID())); pfi.setValueNoCheck("AD_Org_ID", new Integer (format.getAD_Org_ID())); 358 pfi.setAD_Column_ID(AD_Column_ID); 359 pfi.setPrintFormatType(PRINTFORMATTYPE_Field); 360 361 String sql = "SELECT c.ColumnName,e.Name,e.PrintName, " + "c.AD_Reference_ID,c.IsKey,c.SeqNo " + "FROM AD_Column c, AD_Element e " 365 + "WHERE c.AD_Column_ID=?" 366 + " AND c.AD_Element_ID=e.AD_Element_ID"; 367 Language language = format.getLanguage(); 369 boolean trl = !Env.isMultiLingualDocument(ctx) && !language.isBaseLanguage(); 370 if (trl) 371 sql = "SELECT c.ColumnName,e.Name,e.PrintName, " + "c.AD_Reference_ID,c.IsKey,c.SeqNo " + "FROM AD_Column c, AD_Element_Trl e " 374 + "WHERE c.AD_Column_ID=?" 375 + " AND c.AD_Element_ID=e.AD_Element_ID" 376 + " AND e.AD_Language=?"; 377 try 378 { 379 PreparedStatement pstmt = DB.prepareStatement(sql); 380 pstmt.setInt(1, AD_Column_ID); 381 if (trl) 382 pstmt.setString(2, language.getAD_Language()); 383 ResultSet rs = pstmt.executeQuery(); 384 if (rs.next()) 385 { 386 String ColumnName = rs.getString(1); 387 pfi.setName(rs.getString(2)); 388 pfi.setPrintName(rs.getString(3)); 389 int displayType = rs.getInt(4); 390 if (DisplayType.isNumeric(displayType)) 391 pfi.setFieldAlignmentType(FIELDALIGNMENTTYPE_TrailingRight); 392 else if (displayType == DisplayType.Text || displayType == DisplayType.Memo ) 393 pfi.setFieldAlignmentType(FIELDALIGNMENTTYPE_Block); 394 else 395 pfi.setFieldAlignmentType(FIELDALIGNMENTTYPE_LeadingLeft); 396 boolean isKey = "Y".equals(rs.getString(5)); 397 if (isKey 399 || ColumnName.startsWith("Created") || ColumnName.startsWith("Updated") 400 || ColumnName.equals("AD_Client_ID") || ColumnName.equals("AD_Org_ID") 401 || ColumnName.equals("IsActive") 402 || displayType == DisplayType.Button || displayType == DisplayType.Binary 403 || displayType == DisplayType.ID || displayType == DisplayType.Image 404 || displayType == DisplayType.RowID) 405 { 406 pfi.setIsPrinted(false); 407 pfi.setSeqNo(0); 408 } 409 else 410 { 411 pfi.setIsPrinted(true); 412 pfi.setSeqNo(seqNo); 413 } 414 int idSeqNo = rs.getInt(6); if (idSeqNo > 0) 416 { 417 pfi.setIsOrderBy(true); 418 pfi.setSortNo(idSeqNo); 419 } 420 } 421 else 422 s_log.error("createFromColumn - Not Found AD_Column_ID=" + AD_Column_ID 423 + " Trl=" + trl + " " + language.getAD_Language()); 424 rs.close(); 425 pstmt.close(); 426 } 427 catch (SQLException e) 428 { 429 s_log.error("createFromColumn", e); 430 } 431 if (!pfi.save()) 432 return null; 433 return pfi; 435 } 437 443 public MPrintFormatItem copyToClient (int To_Client_ID, int AD_PrintFormat_ID) 444 { 445 MPrintFormatItem to = new MPrintFormatItem (p_ctx, 0); 446 MPrintFormatItem.copyValues(this, to); 447 to.setValueNoCheck("AD_Client_ID", new Integer (To_Client_ID)); 448 to.setValueNoCheck("AD_Org_ID", new Integer (0)); 449 to.setAD_PrintFormat_ID (AD_PrintFormat_ID); 450 to.save(); 451 return to; 452 } 454 }
| Popular Tags
|