KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > compiere > print > MPrintFormatItem


1 /******************************************************************************
2  * The contents of this file are subject to the Compiere License Version 1.1
3  * ("License"); You may not use this file except in compliance with the License
4  * You may obtain a copy of the License at http://www.compiere.org/license.html
5  * Software distributed under the License is distributed on an "AS IS" basis,
6  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
7  * the specific language governing rights and limitations under the License.
8  * The Original Code is Compiere ERP & CRM Business Solution
9  * The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
10  * Portions created by Jorg Janke are Copyright (C) 1999-2002 Jorg Janke, parts
11  * created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
12  * Contributor(s): ______________________________________.
13  *****************************************************************************/

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 /**
29  * Print Format Item Model.
30  * Caches Column Name
31  *
32  * @author Jorg Janke
33  * @version $Id: MPrintFormatItem.java,v 1.29 2003/10/31 05:32:48 jjanke Exp $
34  */

35 public class MPrintFormatItem extends X_AD_PrintFormatItem
36 {
37     /**
38      * Constructor
39      * @param ctx context
40      * @param AD_PrintFormatItem_ID AD_PrintFormatItem_ID
41      */

42     public MPrintFormatItem (Properties ctx, int AD_PrintFormatItem_ID)
43     {
44         super (ctx, AD_PrintFormatItem_ID);
45         // Default Setting
46
if (AD_PrintFormatItem_ID == 0)
47         {
48             setFieldAlignmentType(FIELDALIGNMENTTYPE_Default);
49             setLineAlignmentType(LINEALIGNMENTTYPE_None);
50             setPrintFormatType(PRINTFORMATTYPE_Text);
51             setPrintAreaType(PRINTAREATYPE_Content);
52             //
53
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             //
66
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     } // MPrintFormatItem
80

81     /**
82      * Constructor
83      * @param ctx context
84      * @param rs ResultSet
85      */

86     public MPrintFormatItem (Properties ctx, ResultSet rs)
87     {
88         super (ctx, rs);
89     } // MPrintFormatItem
90

91     /** Locally cached column name */
92     private String JavaDoc m_columnName = null;
93     /** Locally cached label translations */
94     private HashMap m_translationLabel;
95     /** Locally cached suffix translations */
96     private HashMap m_translationSuffix;
97
98     private static Logger s_log = Logger.getLogger (PO.class);
99
100     /*************************************************************************/
101
102     /**
103      * Get print name with language
104      * @param language language - ignored if IsMultiLingualDocument not 'Y'
105      * @return print name
106      */

107     public String JavaDoc getPrintName (Language language)
108     {
109         if (language == null || Env.isBaseLanguage(language, "AD_PrintFormatItem"))
110             return getPrintName();
111         loadTranslations();
112         String JavaDoc retValue = (String JavaDoc)m_translationLabel.get(language.getAD_Language());
113         if (retValue == null || retValue.length() == 0)
114             return getPrintName();
115         return retValue;
116     } // getPrintName
117

118     /**
119      * Load Translations
120      */

121     private void loadTranslations()
122     {
123         if (m_translationLabel == null)
124         {
125             m_translationLabel = new HashMap();
126             m_translationSuffix = new HashMap();
127             String JavaDoc 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     } // loadTranslations
147

148     /**
149      * Get print name suffix with language
150      * @param language language - ignored if IsMultiLingualDocument not 'Y'
151      * @return print name suffix
152      */

153     public String JavaDoc getPrintNameSuffix (Language language)
154     {
155         if (language == null || Env.isBaseLanguage(language, "AD_PrintFormatItem"))
156             return getPrintNameSuffix();
157         loadTranslations();
158         String JavaDoc retValue = (String JavaDoc)m_translationSuffix.get(language.getAD_Language());
159         if (retValue == null || retValue.length() == 0)
160             return getPrintNameSuffix();
161         return retValue;
162     } // getPrintNameSuffix
163

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     /**
230      * Make Parent access available
231      * @param AD_PrintFormat_ID print format
232      */

233     protected void setAD_PrintFormat_ID (int AD_PrintFormat_ID)
234     {
235         super.setValueNoCheck("AD_PrintFormat_ID", new Integer JavaDoc(AD_PrintFormat_ID));
236     } // setAD_PrintFormat_ID
237

238     /*************************************************************************/
239
240     /**
241      * String representation
242      * @return info
243      */

244     public String JavaDoc toString()
245     {
246         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("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         //
266
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         //
277
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     } // toString
285

286
287     /*************************************************************************/
288
289
290     /** Lookup Map of AD_Column_ID for ColumnName */
291     private static CCache s_columns = new CCache("printFormatItemColumns", 200);
292
293     /**
294      * Get ColumnName from AD_Column_ID
295      * @return ColumnName
296      */

297     public String JavaDoc getColumnName()
298     {
299         if (m_columnName == null) // Get Column Name from AD_Column not index
300
m_columnName = getColumnName (new Integer JavaDoc(getAD_Column_ID()));
301         return m_columnName;
302     } // getColumnName
303

304     /**
305      * Get Column Name from AD_Column_ID.
306      * Be careful not to confuse it with PO method getAD_Column_ID (index)
307      * @param AD_Column_ID column
308      * @return Column Name
309      */

310     private static String JavaDoc getColumnName (Integer JavaDoc AD_Column_ID)
311     {
312         if (AD_Column_ID == null || AD_Column_ID.intValue() == 0)
313             return null;
314         //
315
String JavaDoc retValue = (String JavaDoc)s_columns.get(AD_Column_ID);
316         if (retValue == null)
317         {
318             String JavaDoc 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     } // setColumnName
341

342     /*************************************************************************/
343
344     /**
345      * Create Print Format Item from Column
346      * @param ctx context
347      * @param AD_Column_ID column
348      * @param format parent
349      * @param seqNo sequence of display
350      * @return Print Format Item
351      */

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 JavaDoc(format.getAD_Client_ID())); // overwrite to be sure
357
pfi.setValueNoCheck("AD_Org_ID", new Integer JavaDoc(format.getAD_Org_ID()));
358         pfi.setAD_Column_ID(AD_Column_ID);
359         pfi.setPrintFormatType(PRINTFORMATTYPE_Field);
360
361         // translation is dome by trigger
362
String JavaDoc sql = "SELECT c.ColumnName,e.Name,e.PrintName, " // 1..3
363
+ "c.AD_Reference_ID,c.IsKey,c.SeqNo " // 4..6
364
+ "FROM AD_Column c, AD_Element e "
365             + "WHERE c.AD_Column_ID=?"
366             + " AND c.AD_Element_ID=e.AD_Element_ID";
367         // translate base entry if single language - trigger copies to trl tables
368
Language language = format.getLanguage();
369         boolean trl = !Env.isMultiLingualDocument(ctx) && !language.isBaseLanguage();
370         if (trl)
371             sql = "SELECT c.ColumnName,e.Name,e.PrintName, " // 1..3
372
+ "c.AD_Reference_ID,c.IsKey,c.SeqNo " // 4..6
373
+ "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 JavaDoc 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                 //
398
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); // IsIdentifier SortNo
415
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     // pfi.dump();
434
return pfi;
435     } // createFromColumn
436

437     /**
438      * Copy existing Definition To Client
439      * @param To_Client_ID to client
440      * @param AD_PrintFormat_ID parent print format
441      * @return print format item
442      */

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 JavaDoc(To_Client_ID));
448         to.setValueNoCheck("AD_Org_ID", new Integer JavaDoc(0));
449         to.setAD_PrintFormat_ID (AD_PrintFormat_ID);
450         to.save();
451         return to;
452     } // copyToClient
453

454 } // MPrintFormatItem
455
Popular Tags