IDEMPIERE-4389 (#206)
* IDEMPIERE-4389 Implement Copy Constructor support for PO Implement PO support for copy constructor * IDEMPIERE-4389 Implement Copy Constructor support for PO deprecate clone replace clone with copy constructor * IDEMPIERE-4389 Implement Copy Constructor support for PO add unit test for MPrintFormat copy constructor * IDEMPIERE-4389 Implement Copy Constructor support for PO fix wrong import
This commit is contained in:
parent
a3e25375fe
commit
c17f1ae733
|
@ -58,6 +58,16 @@ public class MInfoProcess extends X_AD_InfoProcess implements IInfoColumn {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy constructor
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public MInfoProcess(MInfoProcess copy) {
|
||||||
|
this(Env.getCtx(), 0, (String)null);
|
||||||
|
copyPO(copy);
|
||||||
|
this.m_viewIDName = copy.m_viewIDName;
|
||||||
|
}
|
||||||
|
|
||||||
protected String m_viewIDName;
|
protected String m_viewIDName;
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
|
|
@ -20,6 +20,7 @@ import java.util.logging.Level;
|
||||||
import org.compiere.model.MInfoColumn;
|
import org.compiere.model.MInfoColumn;
|
||||||
import org.compiere.model.Query;
|
import org.compiere.model.Query;
|
||||||
import org.compiere.model.X_AD_InfoRelated;
|
import org.compiere.model.X_AD_InfoRelated;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
|
||||||
public class MInfoRelated extends X_AD_InfoRelated implements IInfoColumn {
|
public class MInfoRelated extends X_AD_InfoRelated implements IInfoColumn {
|
||||||
/**
|
/**
|
||||||
|
@ -35,6 +36,15 @@ public class MInfoRelated extends X_AD_InfoRelated implements IInfoColumn {
|
||||||
super(ctx, rs, trxName);
|
super(ctx, rs, trxName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy constructor
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public MInfoRelated(MInfoRelated copy) {
|
||||||
|
this(Env.getCtx(), 0, (String)null);
|
||||||
|
copyPO(copy);
|
||||||
|
}
|
||||||
|
|
||||||
public MInfoColumn getLinkInfoColumn() {
|
public MInfoColumn getLinkInfoColumn() {
|
||||||
if (log.isLoggable(Level.INFO)) log.info("Link Column ID: ----- : " + getRelatedColumn_ID());
|
if (log.isLoggable(Level.INFO)) log.info("Link Column ID: ----- : " + getRelatedColumn_ID());
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ import java.sql.Timestamp;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
import org.apache.tools.ant.Project;
|
import org.apache.tools.ant.Project;
|
||||||
|
@ -136,6 +137,17 @@ public class MAttachment extends X_AD_Attachment
|
||||||
initAttachmentStoreDetails(ctx, trxName);
|
initAttachmentStoreDetails(ctx, trxName);
|
||||||
} // MAttachment
|
} // MAttachment
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy constructor
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public MAttachment(MAttachment copy)
|
||||||
|
{
|
||||||
|
this(Env.getCtx(), 0, (String)null);
|
||||||
|
copyPO(copy);
|
||||||
|
this.m_items = copy.m_items != null ? copy.m_items.stream().map(MAttachmentEntry::new).collect(Collectors.toCollection(ArrayList::new)) : null;
|
||||||
|
}
|
||||||
|
|
||||||
/** Indicator for no data */
|
/** Indicator for no data */
|
||||||
public static final String NONE = ".";
|
public static final String NONE = ".";
|
||||||
/** Indicator for zip data */
|
/** Indicator for zip data */
|
||||||
|
|
|
@ -21,6 +21,7 @@ import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
@ -71,6 +72,17 @@ public class MAttachmentEntry
|
||||||
this (name, data, 0);
|
this (name, data, 0);
|
||||||
} // MAttachmentItem
|
} // MAttachmentItem
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy constructor
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public MAttachmentEntry(MAttachmentEntry copy)
|
||||||
|
{
|
||||||
|
this.m_data = copy.m_data != null ? Arrays.copyOf(copy.m_data, copy.m_data.length) : null;
|
||||||
|
this.m_index = copy.m_index;
|
||||||
|
this.m_name = copy.m_name;
|
||||||
|
}
|
||||||
|
|
||||||
/** The Name */
|
/** The Name */
|
||||||
private String m_name = "?";
|
private String m_name = "?";
|
||||||
/** The Data */
|
/** The Data */
|
||||||
|
|
|
@ -72,6 +72,16 @@ public class MInfoColumn extends X_AD_InfoColumn implements IInfoColumn
|
||||||
this.setEntityType(targetInfoWindow.getEntityType());
|
this.setEntityType(targetInfoWindow.getEntityType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* copy constructor
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public MInfoColumn(MInfoColumn copy) {
|
||||||
|
this(Env.getCtx(), 0, (String)null);
|
||||||
|
copyPO(copy);
|
||||||
|
this.m_parent = copy.m_parent != null ? new MInfoWindow(copy.m_parent) : null;
|
||||||
|
}
|
||||||
|
|
||||||
/** Parent */
|
/** Parent */
|
||||||
private MInfoWindow m_parent = null;
|
private MInfoWindow m_parent = null;
|
||||||
|
|
||||||
|
@ -219,17 +229,4 @@ public class MInfoColumn extends X_AD_InfoColumn implements IInfoColumn
|
||||||
else
|
else
|
||||||
return MValRule.get(getCtx(), getAD_Val_Rule_ID());
|
return MValRule.get(getCtx(), getAD_Val_Rule_ID());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected MInfoColumn clone() {
|
|
||||||
try {
|
|
||||||
MInfoColumn ic = (MInfoColumn) super.clone();
|
|
||||||
ic.m_parent = null;
|
|
||||||
return ic;
|
|
||||||
} catch (CloneNotSupportedException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} // MInfoColumn
|
} // MInfoColumn
|
||||||
|
|
|
@ -20,6 +20,7 @@ import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
@ -68,6 +69,20 @@ public class MInfoWindow extends X_AD_InfoWindow
|
||||||
super (ctx, rs, trxName);
|
super (ctx, rs, trxName);
|
||||||
} // MInfoWindow
|
} // MInfoWindow
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy constructor
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public MInfoWindow(MInfoWindow copy)
|
||||||
|
{
|
||||||
|
this(Env.getCtx(), 0, (String)null);
|
||||||
|
copyPO(copy);
|
||||||
|
this.m_validateEachColumn = copy.m_validateEachColumn;
|
||||||
|
this.m_infocolumns = copy.m_infocolumns != null ? Arrays.stream(copy.m_infocolumns).map(MInfoColumn::new).toArray(MInfoColumn[]::new) : null;
|
||||||
|
this.m_infoProcess = copy.m_infoProcess != null ? Arrays.stream(copy.m_infoProcess).map(MInfoProcess::new).toArray(MInfoProcess[]::new) : null;
|
||||||
|
this.m_infoRelated = copy.m_infoRelated != null ? Arrays.stream(copy.m_infoRelated).map(MInfoRelated::new).toArray(MInfoRelated[]::new) : null;
|
||||||
|
}
|
||||||
|
|
||||||
public static MInfoWindow get(String tableName, String trxName) {
|
public static MInfoWindow get(String tableName, String trxName) {
|
||||||
Query query = new Query(Env.getCtx(), MTable.get(Env.getCtx(), MInfoWindow.Table_ID), MInfoWindow.COLUMNNAME_AD_Table_ID+"=? AND IsValid='Y' ", null);
|
Query query = new Query(Env.getCtx(), MTable.get(Env.getCtx(), MInfoWindow.Table_ID), MInfoWindow.COLUMNNAME_AD_Table_ID+"=? AND IsValid='Y' ", null);
|
||||||
MTable table = MTable.get(Env.getCtx(), tableName);
|
MTable table = MTable.get(Env.getCtx(), tableName);
|
||||||
|
|
|
@ -30,6 +30,7 @@ import java.sql.Savepoint;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.text.Collator;
|
import java.text.Collator;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
@ -37,6 +38,7 @@ import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import javax.xml.XMLConstants;
|
import javax.xml.XMLConstants;
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
|
@ -225,7 +227,24 @@ public abstract class PO
|
||||||
setAD_Org_ID(AD_Org_ID);
|
setAD_Org_ID(AD_Org_ID);
|
||||||
} // PO
|
} // PO
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy all properties from copy. Method to help the implementation of copy constructor.
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
protected void copyPO(PO copy)
|
||||||
|
{
|
||||||
|
this.m_attachment = copy.m_attachment != null ? new MAttachment(copy.m_attachment) : null;
|
||||||
|
this.m_attributes = copy.m_attributes != null ? new HashMap<String, Object>(copy.m_attributes) : null;
|
||||||
|
this.m_createNew = copy.m_createNew;
|
||||||
|
this.m_custom = copy.m_custom != null ? new HashMap<String, String>(copy.m_custom) : null;
|
||||||
|
this.m_IDs = copy.m_IDs != null ? Arrays.copyOf(copy.m_IDs, copy.m_IDs.length) : null;
|
||||||
|
this.m_KeyColumns = copy.m_KeyColumns != null ? Arrays.copyOf(copy.m_KeyColumns, copy.m_KeyColumns.length) : null;
|
||||||
|
this.m_lobInfo = copy.m_lobInfo != null ? copy.m_lobInfo.stream().map(PO_LOB::new).collect(Collectors.toCollection(ArrayList::new)) : null;
|
||||||
|
this.m_newValues = copy.m_newValues != null ? Arrays.copyOf(copy.m_newValues, copy.m_newValues.length) : null;
|
||||||
|
this.m_oldValues = copy.m_oldValues != null ? Arrays.copyOf(copy.m_oldValues, copy.m_oldValues.length) : null;
|
||||||
|
this.s_acctColumns = copy.s_acctColumns != null ? copy.s_acctColumns.stream().collect(Collectors.toCollection(ArrayList::new)) : null;
|
||||||
|
}
|
||||||
|
|
||||||
/** Logger */
|
/** Logger */
|
||||||
protected transient CLogger log = CLogger.getCLogger (getClass());
|
protected transient CLogger log = CLogger.getCLogger (getClass());
|
||||||
/** Static Logger */
|
/** Static Logger */
|
||||||
|
@ -4776,6 +4795,7 @@ public abstract class PO
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
protected Object clone() throws CloneNotSupportedException {
|
protected Object clone() throws CloneNotSupportedException {
|
||||||
PO clone = (PO) super.clone();
|
PO clone = (PO) super.clone();
|
||||||
clone.m_trxName = null;
|
clone.m_trxName = null;
|
||||||
|
|
|
@ -60,6 +60,19 @@ public class PO_LOB implements Serializable
|
||||||
m_value = value;
|
m_value = value;
|
||||||
} // PO_LOB
|
} // PO_LOB
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy constructor
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public PO_LOB (PO_LOB copy)
|
||||||
|
{
|
||||||
|
this.m_columnName = copy.m_columnName;
|
||||||
|
this.m_displayType = copy.m_displayType;
|
||||||
|
this.m_tableName = copy.m_tableName;
|
||||||
|
this.m_value = copy.m_value;
|
||||||
|
this.m_whereClause = copy.m_whereClause;
|
||||||
|
}
|
||||||
|
|
||||||
/** Logger */
|
/** Logger */
|
||||||
protected CLogger log = CLogger.getCLogger (getClass());
|
protected CLogger log = CLogger.getCLogger (getClass());
|
||||||
/** Table Name */
|
/** Table Name */
|
||||||
|
|
|
@ -101,6 +101,20 @@ public class MPrintFormat extends X_AD_PrintFormat
|
||||||
m_items = getItems();
|
m_items = getItems();
|
||||||
} // MPrintFormat
|
} // MPrintFormat
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy constructor
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public MPrintFormat(MPrintFormat copy)
|
||||||
|
{
|
||||||
|
this(Env.getCtx(), 0, (String)null);
|
||||||
|
copyPO(copy);
|
||||||
|
this.m_translationViewLanguage = copy.m_translationViewLanguage;
|
||||||
|
this.m_items = copy.m_items != null ? Arrays.stream(copy.m_items).map(MPrintFormatItem::new).toArray(MPrintFormatItem[]::new) : null;
|
||||||
|
this.m_language = copy.m_language != null ? new Language(copy.m_language) : null;
|
||||||
|
this.m_tFormat = copy.m_tFormat != null ? new MPrintTableFormat(copy.m_tFormat) : null;
|
||||||
|
}
|
||||||
|
|
||||||
/** Items */
|
/** Items */
|
||||||
private MPrintFormatItem[] m_items = null;
|
private MPrintFormatItem[] m_items = null;
|
||||||
/** Translation View Language */
|
/** Translation View Language */
|
||||||
|
@ -1116,11 +1130,7 @@ public class MPrintFormat extends X_AD_PrintFormat
|
||||||
|
|
||||||
if (pf != null)
|
if (pf != null)
|
||||||
{
|
{
|
||||||
try {
|
pf = new MPrintFormat(pf);
|
||||||
pf = pf.clone();
|
|
||||||
} catch (CloneNotSupportedException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return pf;
|
return pf;
|
||||||
} // get
|
} // get
|
||||||
|
@ -1254,6 +1264,7 @@ public class MPrintFormat extends X_AD_PrintFormat
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public MPrintFormat clone() throws CloneNotSupportedException {
|
public MPrintFormat clone() throws CloneNotSupportedException {
|
||||||
MPrintFormat clone = (MPrintFormat) super.clone();
|
MPrintFormat clone = (MPrintFormat) super.clone();
|
||||||
clone.m_items = m_items == null ? null : new MPrintFormatItem[m_items.length];
|
clone.m_items = m_items == null ? null : new MPrintFormatItem[m_items.length];
|
||||||
|
|
|
@ -111,6 +111,21 @@ public class MPrintFormatItem extends X_AD_PrintFormatItem
|
||||||
super(ctx, rs, trxName);
|
super(ctx, rs, trxName);
|
||||||
} // MPrintFormatItem
|
} // MPrintFormatItem
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy constructor
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public MPrintFormatItem(MPrintFormatItem copy)
|
||||||
|
{
|
||||||
|
this(Env.getCtx(), 0, (String)null);
|
||||||
|
copyPO(copy);
|
||||||
|
this.m_columnName = copy.m_columnName;
|
||||||
|
this.m_newTranslationLabel = copy.m_newTranslationLabel;
|
||||||
|
this.m_translationLabelChanged = copy.m_translationLabelChanged;
|
||||||
|
this.m_translationLabel = copy.m_translationLabel != null ? new HashMap<String, String>(copy.m_translationLabel) : null;
|
||||||
|
this.m_translationSuffix = copy.m_translationSuffix != null ? new HashMap<String, String>(copy.m_translationSuffix) : null;
|
||||||
|
}
|
||||||
|
|
||||||
/** Locally cached column name */
|
/** Locally cached column name */
|
||||||
private String m_columnName = null;
|
private String m_columnName = null;
|
||||||
/** Locally cached label translations */
|
/** Locally cached label translations */
|
||||||
|
|
|
@ -86,6 +86,39 @@ public class MPrintTableFormat extends X_AD_PrintTableFormat
|
||||||
super(ctx, rs, trxName);
|
super(ctx, rs, trxName);
|
||||||
} // MPrintTableFormat
|
} // MPrintTableFormat
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy constructor
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public MPrintTableFormat(MPrintTableFormat copy)
|
||||||
|
{
|
||||||
|
this(Env.getCtx(), 0, (String)null);
|
||||||
|
copyPO(copy);
|
||||||
|
this.standard_Font = copy.standard_Font;
|
||||||
|
this.funct_Font = copy.funct_Font;
|
||||||
|
this.functBG_Color = copy.functBG_Color;
|
||||||
|
this.functFG_Color = copy.functFG_Color;
|
||||||
|
this.hdrLine_Color = copy.hdrLine_Color;
|
||||||
|
this.header_Font = copy.header_Font;
|
||||||
|
this.header_Stroke = copy.header_Stroke;
|
||||||
|
this.headerBG_Color = copy.headerBG_Color;
|
||||||
|
this.headerFG_Color = copy.headerFG_Color;
|
||||||
|
this.lineH_Color = copy.lineH_Color;
|
||||||
|
this.lineH_Stroke = copy.lineH_Stroke;
|
||||||
|
this.lineV_Color = copy.lineV_Color;
|
||||||
|
this.lineV_Stroke = copy.lineV_Stroke;
|
||||||
|
this.m_image = copy.m_image;
|
||||||
|
this.m_image_water_mark = copy.m_image_water_mark;
|
||||||
|
this.pageFooter_Font = copy.pageFooter_Font;
|
||||||
|
this.pageFooterBG_Color = copy.pageFooterBG_Color;
|
||||||
|
this.pageFooterFG_Color = copy.pageFooterFG_Color;
|
||||||
|
this.pageHeader_Font = copy.pageHeader_Font;
|
||||||
|
this.pageHeaderBG_Color = copy.pageHeaderBG_Color;
|
||||||
|
this.pageHeaderFG_Color = copy.pageHeaderFG_Color;
|
||||||
|
this.parameter_Color = copy.parameter_Color;
|
||||||
|
this.parameter_Font = copy.parameter_Font;
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
private Font standard_Font = new Font(null);
|
private Font standard_Font = new Font(null);
|
||||||
|
|
|
@ -46,7 +46,7 @@ public class DocActionTemplate extends PO implements DocAction
|
||||||
*/
|
*/
|
||||||
private DocActionTemplate()
|
private DocActionTemplate()
|
||||||
{
|
{
|
||||||
super(null);
|
super((Properties)null);
|
||||||
} // DocActionTemplate
|
} // DocActionTemplate
|
||||||
/**
|
/**
|
||||||
* Init PO
|
* Init PO
|
||||||
|
|
|
@ -357,6 +357,22 @@ public class Language implements Serializable
|
||||||
this (name, AD_Language, locale, null, null, null);
|
this (name, AD_Language, locale, null, null, null);
|
||||||
} // Language
|
} // Language
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy constructor
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public Language(Language copy)
|
||||||
|
{
|
||||||
|
this.m_AD_Language = copy.m_AD_Language;
|
||||||
|
this.m_dateFormat = copy.m_dateFormat;
|
||||||
|
this.m_dbDateFormat = copy.m_dbDateFormat;
|
||||||
|
this.m_decimalPoint = copy.m_decimalPoint;
|
||||||
|
this.m_fromDB = copy.m_fromDB;
|
||||||
|
this.m_leftToRight = copy.m_leftToRight;
|
||||||
|
this.m_locale = copy.m_locale;
|
||||||
|
this.m_mediaSize = copy.m_mediaSize;
|
||||||
|
this.m_name = copy.m_name;
|
||||||
|
}
|
||||||
|
|
||||||
/** Name */
|
/** Name */
|
||||||
private String m_name;
|
private String m_name;
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
/***********************************************************************
|
||||||
|
* This file is part of iDempiere ERP Open Source *
|
||||||
|
* http://www.idempiere.org *
|
||||||
|
* *
|
||||||
|
* Copyright (C) Contributors *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or *
|
||||||
|
* modify it under the terms of the GNU General Public License *
|
||||||
|
* as published by the Free Software Foundation; either version 2 *
|
||||||
|
* of the License, or (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the Free Software *
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
|
||||||
|
* MA 02110-1301, USA. *
|
||||||
|
* *
|
||||||
|
* Contributors: *
|
||||||
|
* - hengsin *
|
||||||
|
**********************************************************************/
|
||||||
|
package org.idempiere.test.model;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
import org.compiere.print.MPrintFormat;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.idempiere.test.AbstractTestCase;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hengsin
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class MPrintFormatTest extends AbstractTestCase {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCopyConstructor() {
|
||||||
|
int orderHeader = 118;
|
||||||
|
|
||||||
|
MPrintFormat pf = new MPrintFormat(Env.getCtx(), orderHeader, getTrxName());
|
||||||
|
MPrintFormat copy = new MPrintFormat(pf);
|
||||||
|
assertFalse(copy.is_new());
|
||||||
|
assertFalse(copy.is_Changed());
|
||||||
|
assertNull(copy.get_TrxName());
|
||||||
|
assertTrue(copy.get_ID() == pf.get_ID());
|
||||||
|
assertTrue(pf.equals(copy));
|
||||||
|
int count = pf.get_ColumnCount();
|
||||||
|
for(int i = 0; i < count; i++)
|
||||||
|
assertEquals(pf.get_Value(i), copy.get_Value(i));
|
||||||
|
|
||||||
|
copy.set_TrxName(getTrxName());
|
||||||
|
String copyDescription = copy.getDescription() + " copy";
|
||||||
|
copy.setDescription(copyDescription);
|
||||||
|
assertTrue(copy.is_Changed());
|
||||||
|
copy.saveEx();
|
||||||
|
|
||||||
|
pf.load(getTrxName());
|
||||||
|
assertEquals(copyDescription, pf.getDescription());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue