INTEGRATION: CWS rptwizard01 (1.1.2); FILE ADDED

2008/06/24 14:58:01 kz 1.1.2.5: fixed wrong license header
2008/05/16 07:05:13 lla 1.1.2.4: #i86092# restructures to work with design templates
2008/04/14 09:22:19 lla 1.1.2.3: #i86092# make code readable/debugable
2008/03/31 12:15:43 lla 1.1.2.2: #i86092# brace cleanups
2008/02/14 12:54:02 lla 1.1.2.1: #i86092# new Report Wizard
This commit is contained in:
Kurt Zenker 2008-06-25 13:34:53 +00:00
parent fa988a28d8
commit 615e1a6975

View file

@ -0,0 +1,822 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: ReportTextDocument.java,v $
*
* $Revision: 1.2 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org 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 Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
package com.sun.star.wizards.report;
import com.sun.star.lang.IllegalArgumentException;
import com.sun.star.text.XRelativeTextContentRemove;
import com.sun.star.text.XTextContent;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Vector;
import com.sun.star.awt.Rectangle;
import com.sun.star.awt.VclWindowPeerAttribute;
import com.sun.star.container.XNameAccess;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.uno.AnyConverter;
import com.sun.star.uno.Exception;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.wizards.db.*;
import com.sun.star.wizards.common.*;
import com.sun.star.wizards.ui.*;
import com.sun.star.sdb.CommandType;
// import com.sun.star.table.XCell;
import com.sun.star.text.XTextDocument;
import com.sun.star.wizards.common.JavaTools;
import com.sun.star.wizards.text.TextTableHandler;
import com.sun.star.wizards.text.TextSectionHandler;
import com.sun.star.wizards.text.TextStyleHandler;
import com.sun.star.wizards.text.TextFieldHandler;
import com.sun.star.wizards.text.ViewHandler;
import com.sun.star.wizards.document.FormHandler;
class ReportTextDocument extends com.sun.star.wizards.text.TextDocument implements Comparator
{
// private XMultiServiceFactory xMSF;
// private XMultiServiceFactory xMSFDoc;
private Object ReportPageStyle;
private Object FirstPageStyle;
private int PageWidth;
private Rectangle PosSize;
// private String ReportFolderName;
public Vector DBColumnsVector;
private RecordTable CurRecordTable;
private String sMsgTableNotExisting;
private String sMsgCommonReportError;
private String ContentTemplatePath;
private String LayoutTemplatePath;
// private String sMsgInvalidTextField;
private String sMsgEndAutopilot;
public boolean bIsCurLandscape;
public TextTableHandler oTextTableHandler;
public TextSectionHandler oTextSectionHandler;
public FormHandler oFormHandler;
public TextStyleHandler oTextStyleHandler;
public TextFieldHandler oTextFieldHandler;
public ViewHandler oViewHandler;
public NumberFormatter oNumberFormatter;
public static final String TBLRECORDSECTION = "Tbl_RecordSection";
public static final String TBLGROUPSECTION = "Tbl_GroupField";
public static final String RECORDSECTION = "RecordSection";
public static final String GROUPSECTION = "GroupField";
public static final String COPYOFTBLRECORDSECTION = "CopyOf" + TBLRECORDSECTION;
public static final String COPYOFTBLGROUPSECTION = "CopyOf" + TBLGROUPSECTION;
public static final String COPYOFRECORDSECTION = "CopyOf" + RECORDSECTION;
public static final String COPYOFGROUPSECTION = "CopyOf" + GROUPSECTION;
private RecordParser CurDBMetaData;
/** Creates new ReportDocument */
public ReportTextDocument(XMultiServiceFactory xMSF,XTextDocument _textDocument, Resource oResource, RecordParser _aRP)
{
super(xMSF, _textDocument, false);
lateInit(oResource, _aRP);
}
public ReportTextDocument(XMultiServiceFactory xMSF, String _sPreviewURL, Resource oResource, RecordParser _aRP )
{
super(xMSF, _sPreviewURL, true, null);
lateInit(oResource, _aRP);
}
void lateInit(Resource oResource, RecordParser _aRecordParser)
{
oTextTableHandler = new TextTableHandler(xMSFDoc, xTextDocument);
oTextSectionHandler = new TextSectionHandler(xMSFDoc, xTextDocument);
oFormHandler = new FormHandler(xMSFDoc, xTextDocument);
oTextStyleHandler = new TextStyleHandler(xMSFDoc, xTextDocument);
oViewHandler = new ViewHandler(xMSFDoc, xTextDocument);
oTextFieldHandler = new TextFieldHandler(xMSFDoc, xTextDocument);
DBColumnsVector = new java.util.Vector();
oNumberFormatter = oTextTableHandler.getNumberFormatter();
// CurDBMetaData = new RecordParser(xMSF); //, CharLocale, oNumberFormatter);
CurDBMetaData = _aRecordParser;
long lDateCorrection = oNumberFormatter.getNullDateCorrection();
oNumberFormatter.setBooleanReportDisplayNumberFormat();
oNumberFormatter.setNullDateCorrection(lDateCorrection);
// sMsgInvalidTextField = oResource.getResText(UIConsts.RID_REPORT + 73);
sMsgTableNotExisting = oResource.getResText(UIConsts.RID_REPORT + 61);
sMsgCommonReportError = oResource.getResText(UIConsts.RID_REPORT + 72);
sMsgCommonReportError = JavaTools.replaceSubString(sMsgCommonReportError, String.valueOf((char)13), "<BR>");
sMsgEndAutopilot = oResource.getResText(UIConsts.RID_DB_COMMON + 33);
sMsgTableNotExisting = sMsgTableNotExisting + (char) 13 + sMsgEndAutopilot;
bIsCurLandscape = true;
getReportPageStyles();
}
public NumberFormatter getNumberFormatter()
{
return oNumberFormatter;
}
public boolean checkReportLayoutMode( String[] GroupFieldNames)
{
try
{
XNameAccess xTextSections = oTextSectionHandler.xTextSectionsSupplier.getTextSections();
Object oTextSection;
if (GroupFieldNames.length > 0)
{
oTextSection = xTextSections.getByName(GROUPSECTION + String.valueOf(1));
}
else
{
oTextSection = xTextSections.getByName(RECORDSECTION);
}
boolean bLayoutMode = AnyConverter.toBoolean(Helper.getUnoPropertyValue(oTextSection, "IsVisible"));
return bLayoutMode;
}
catch( Exception exception )
{
exception.printStackTrace(System.out);
// In doubt we rather suggest this is LayoutMode...
return true;
}
}
public void swapContentTemplate(String ContentTemplatePath)
{
// unlockallControllers();
//xProgressBar.start("", 10);
this.ContentTemplatePath = ContentTemplatePath;
loadSectionsfromTemplate(ContentTemplatePath);
// xProgressBar.setValue(40);
oTextStyleHandler.loadStyleTemplates(ContentTemplatePath, "LoadTextStyles");
// xProgressBar.setValue(70);
if (CurRecordTable != null)
{
CurRecordTable.adjustOptimalTableWidths(xMSF, oViewHandler);
}
// xProgressBar.setValue(100);
oViewHandler.selectFirstPage(oTextTableHandler);
// xProgressBar.end();
}
public void swapLayoutTemplate(String LayoutTemplatePath/*, String BitmapPath*/)
{
try
{
// xProgressBar.start("", 10);
this.LayoutTemplatePath = LayoutTemplatePath;
boolean bOldIsCurLandscape = AnyConverter.toBoolean(Helper.getUnoPropertyValue(ReportPageStyle, "IsLandscape"));
oTextStyleHandler.loadStyleTemplates(LayoutTemplatePath, "LoadPageStyles");
// xProgressBar.setValue(60);
changePageOrientation(bOldIsCurLandscape);
// xProgressBar.setValue(100);
oViewHandler.selectFirstPage(oTextTableHandler);
// xProgressBar.end();
}
catch( Exception exception )
{
exception.printStackTrace(System.out);
}
}
public void createReportForm(String SOREPORTFORMNAME)
{
com.sun.star.container.XNameContainer xNamedForm = oFormHandler.insertFormbyName(SOREPORTFORMNAME);
XNameAccess xNameAccess = (XNameAccess) UnoRuntime.queryInterface(XNameAccess.class, xNamedForm);
oFormHandler.insertHiddenControl(xNameAccess, xNamedForm, "CommandType", new String(Integer.toString(CurDBMetaData.getCommandType())));
if (CurDBMetaData.getCommandType() == CommandType.QUERY)
{
oFormHandler.insertHiddenControl(xNameAccess, xNamedForm, "QueryName", CurDBMetaData.getCommandName());
// oFormHandler.insertHiddenControl(xNameAccess, xNamedForm, "Command", "");
DBMetaData.CommandObject oCommand = CurDBMetaData.getQueryByName(CurDBMetaData.getCommandName());
oFormHandler.insertHiddenControl(xNameAccess, xNamedForm, "Command", CurDBMetaData.Command);
}
else
{
oFormHandler.insertHiddenControl(xNameAccess, xNamedForm, "QueryName", "");
oFormHandler.insertHiddenControl(xNameAccess, xNamedForm, "Command", CurDBMetaData.Command);
}
oFormHandler.insertHiddenControl(xNameAccess, xNamedForm, "GroupFieldNames", JavaTools.ArraytoString(CurDBMetaData.GroupFieldNames));
oFormHandler.insertHiddenControl(xNameAccess, xNamedForm, "FieldNames", JavaTools.ArraytoString(CurDBMetaData.getFieldNames()));
oFormHandler.insertHiddenControl(xNameAccess, xNamedForm, "RecordFieldNames", JavaTools.ArraytoString(CurDBMetaData.getRecordFieldNames()));
}
public void updateReportTitle(String _sTitleName)
{
Helper.setUnoPropertyValue(xDocInfo, "Title", _sTitleName);
}
public void getReportPageStyles()
{
try
{
Object oPageStyleFamily = oTextStyleHandler.xStyleFamiliesSupplier.getStyleFamilies().getByName("PageStyles");
ReportPageStyle = Helper.getUnoObjectbyName(oPageStyleFamily, "Standard");
FirstPageStyle = Helper.getUnoObjectbyName(oPageStyleFamily, "First Page");
}
catch(Exception exception)
{
exception.printStackTrace(System.out);
}
}
public void changePageOrientation(boolean bNewLandscape)
{
try
{
com.sun.star.awt.Size oNewSize;
getReportPageStyles();
com.sun.star.awt.Size oLocSize = (com.sun.star.awt.Size) Helper.getUnoStructValue(ReportPageStyle, "Size");
bIsCurLandscape = AnyConverter.toBoolean(Helper.getUnoPropertyValue(ReportPageStyle, "IsLandscape"));
if (bIsCurLandscape != bNewLandscape)
{
oNewSize = new com.sun.star.awt.Size(oLocSize.Height, oLocSize.Width);
Helper.setUnoPropertyValue(ReportPageStyle, "IsLandscape", new Boolean(bNewLandscape));
Helper.setUnoPropertyValue(ReportPageStyle, "Size", oNewSize);
Helper.setUnoPropertyValue(FirstPageStyle, "IsLandscape", new Boolean(bNewLandscape));
Helper.setUnoPropertyValue(FirstPageStyle, "Size", oNewSize);
int iLeftMargin = AnyConverter.toInt(Helper.getUnoPropertyValue(ReportPageStyle, "LeftMargin"));
int iRightMargin = AnyConverter.toInt(Helper.getUnoPropertyValue(ReportPageStyle, "RightMargin"));
PageWidth = oNewSize.Width - iLeftMargin - iRightMargin;
if (CurRecordTable != null)
{
CurRecordTable.adjustOptimalTableWidths(xMSF, oViewHandler);
}
}
}
catch(Exception exception)
{
exception.printStackTrace(System.out);
}
}
public boolean loadSectionsfromTemplate(String sTemplateUrl)
{
try
{
int i;
DBColumn CurDBColumn;
int GroupCount = CurDBMetaData.GroupFieldNames.length;
CurRecordTable = null;
for (i = 0; i< GroupCount; i++)
{
String SectionName = GROUPSECTION + Integer.toString(i + 1);
oTextTableHandler.renameTextTable("Tbl_" + SectionName, "MyTextTable");
oTextSectionHandler.linkSectiontoTemplate(sTemplateUrl, SectionName);
oTextTableHandler.renameTextTable("MyTextTable", "Tbl_" + SectionName);
}
if (oTextSectionHandler.xTextSectionsSupplier.getTextSections().getElementNames().length > CurDBMetaData.GroupFieldNames.length)
{
oTextSectionHandler.linkSectiontoTemplate(sTemplateUrl, RECORDSECTION);
CurRecordTable = new RecordTable(oTextTableHandler);
insertColumnstoRecordTable();
}
for (i = 0; i < GroupCount; i++)
{
CurDBColumn = new DBColumn(oTextTableHandler, CurDBMetaData, CurDBMetaData.GroupFieldNames[i], i, TBLGROUPSECTION + (i + 1));
if (CurDBColumn == null)
{
return false;
}
else
{
CurDBColumn.formatValueCell();
DBColumnsVector.set(i, CurDBColumn);
replaceFieldValueInGroupTable(CurDBColumn, i);
}
}
return true;
}
catch( Exception exception )
{
exception.printStackTrace(System.out);
return false;
}
}
public void setupRecordSection(String TemplateName)
{
this.ContentTemplatePath = TemplateName;
if (CurDBMetaData.getRecordFieldNames().length > 0)
{
boolean bAddParagraph = true;
if (CurDBMetaData.GroupFieldNames != null)
{
bAddParagraph = (CurDBMetaData.GroupFieldNames.length == 0);
}
oTextSectionHandler.insertTextSection(RECORDSECTION, TemplateName, bAddParagraph);
CurRecordTable = new RecordTable(oTextTableHandler);
insertColumnstoRecordTable();
if (CurRecordTable != null)
{
CurRecordTable.adjustOptimalTableWidths(xMSF, oViewHandler);
}
}
else
{
CurRecordTable = null;
}
}
public void refreshGroupFields(String[] _sNewNames)
{
int nSize = DBColumnsVector.size();
for (int i = 0; i < nSize ; i++)
{
DBColumn CurDBColumn = (DBColumn) DBColumnsVector.elementAt(i);
String sFieldName = CurDBColumn.CurDBField.FieldName;
if (!sFieldName.equals(_sNewNames[i]))
{
CurDBColumn.CurDBField = CurDBMetaData.getFieldColumnByDisplayName(_sNewNames[i]);
CurDBColumn.insertColumnData(oTextFieldHandler, bIsCurLandscape);
}
}
}
//public boolean isGroupField(String _FieldName)
// {
// return (JavaTools.FieldInList(CurDBMetaData.GroupFieldNames, _FieldName) != -1);
// }
public void replaceFieldValueInRecordSection(int RecordCount)
{
int GroupCount = CurDBMetaData.GroupFieldNames.length;
int FieldCount = CurDBMetaData.getFieldNames().length;
for (int i = GroupCount; i < FieldCount; i++)
{
((DBColumn) DBColumnsVector.elementAt(i)).insertColumnData(oTextFieldHandler, this.bIsCurLandscape);
}
}
public void updateTextSections(String[] SelGroupNames) throws Exception
{
String TableName;
DBColumn OldDBColumn;
DBColumn CurDBColumn;
XNameAccess xTableNames = oTextTableHandler.xTextTablesSupplier.getTextTables();
int GroupFieldCount = SelGroupNames.length;
for (int i = 0; i < GroupFieldCount; i++)
{
TableName = TBLGROUPSECTION + Integer.toString(i + 1);
OldDBColumn = (DBColumn) DBColumnsVector.get(i);
CurDBColumn = new DBColumn(oTextTableHandler, CurDBMetaData, SelGroupNames[i], i, TableName, OldDBColumn);
CurDBColumn.formatValueCell();
DBColumnsVector.setElementAt(CurDBColumn, i);
CurDBColumn.insertColumnData(oTextFieldHandler, this.bIsCurLandscape);
}
}
public void replaceFieldValueInGroupTable(DBColumn CurDBColumn, int TableIndex)
{
String TableName = TBLGROUPSECTION + (TableIndex + 1);
// Note: for some reason the table might lose its name and has to be renamed therefor
String OldTableName = CurDBColumn.xTableName.getName();
if (OldTableName.compareTo(TableName) != 0)
{
CurDBColumn.xTableName.setName(TableName);
}
CurDBColumn.insertColumnData(oTextFieldHandler, this.bIsCurLandscape);
CurDBColumn.setCellFont();
}
public void replaceFieldValueInRecordTable()
{
String TableName = TBLRECORDSECTION;
String OldTableName = CurRecordTable.xTableName.getName();
if (OldTableName.compareTo(TableName) != 0)
{
CurRecordTable.xTableName.setName(TableName);
}
int GroupCount = CurDBMetaData.GroupFieldNames.length;
int RecordCount = CurDBMetaData.getRecordFieldNames().length;
for (int i = GroupCount; i < RecordCount; i++)
{
((DBColumn) DBColumnsVector.elementAt(i)).insertColumnData(oTextFieldHandler, this.bIsCurLandscape);
}
}
public void insertColumnstoRecordTable()
{
try
{
int GroupCount = CurDBMetaData.GroupFieldNames.length;
DBColumn CurDBColumn;
// Note for some reason the table might lose its name and has to be renamed therefor
String OldTableName = CurRecordTable.xTableName.getName();
if (OldTableName.compareTo(TBLRECORDSECTION) != 0)
{
CurRecordTable = new RecordTable(oTextTableHandler);
}
com.sun.star.table.XTableColumns xColumns = CurRecordTable.xTextTable.getColumns();
int ColCount = xColumns.getCount();
int RecordCount = CurDBMetaData.getRecordFieldNames().length;
if (ColCount > RecordCount)
{
int RemoveCount = ColCount - RecordCount;
xColumns.removeByIndex(0, RemoveCount);
}
else if (ColCount < RecordCount)
{
int AddCount = RecordCount - ColCount;
CurRecordTable.xTextTable.getColumns().insertByIndex(ColCount, AddCount);
}
for (int i = 0; i < RecordCount; i++)
{
CurDBColumn = new DBColumn(CurRecordTable, oTextTableHandler, CurDBMetaData, i, true);
CurDBColumn.initializeNumberFormat();
CurDBColumn.insertColumnData(oTextFieldHandler, this.bIsCurLandscape);
if (DBColumnsVector.size() <= (i + GroupCount))
{
DBColumnsVector.add(CurDBColumn);
}
else
{
DBColumnsVector.set(i + GroupCount, CurDBColumn);
}
}
}
catch(Exception exception)
{
showCommonReportErrorBox(exception);
}
}
public boolean addGroupNametoDocument(String[] GroupNames, String CurGroupTitle, Vector GroupFieldVector, ArrayList ReportPath, int iSelCount)
{
DBColumn CurDBColumn = null;
int GroupCount = GroupFieldVector.size();
if (GroupCount < 4)
{
removeGroupNamesofRecordTable(iSelCount);
FieldColumn CurFieldColumn = CurDBMetaData.getFieldColumnByTitle(CurGroupTitle);
GroupFieldVector.addElement(CurFieldColumn.FieldName);
GroupCount += 1;
try
{
String sPath = FileAccess.getPathFromList(xMSF, ReportPath, "cnt-default.ott");
oTextSectionHandler.insertTextSection(GROUPSECTION + GroupCount, sPath, GroupCount == 1);
CurDBColumn = new DBColumn(oTextTableHandler, CurDBMetaData, CurFieldColumn.FieldName, GroupCount-1, TBLGROUPSECTION + (GroupCount));
CurDBColumn.formatValueCell();
if (CurDBColumn != null)
{
DBColumnsVector.addElement(CurDBColumn);
replaceFieldValueInGroupTable(CurDBColumn, GroupCount-1);
}
else
{
String sMessage = JavaTools.replaceSubString(sMsgTableNotExisting, TBLGROUPSECTION + (GroupCount), "<TABLENAME>");
CurDBMetaData.showMessageBox("ErrorBox", VclWindowPeerAttribute.OK, sMessage);
}
}
catch(Exception exception)
{
showCommonReportErrorBox(exception);
}
}
return (CurDBColumn != null);
}
public void removeGroupName(String[] NewSelGroupNames, String CurGroupTitle, java.util.Vector GroupFieldVector)
{
removeGroupNamesofRecordTable(NewSelGroupNames.length + 1);
FieldColumn CurFieldColumn = CurDBMetaData.getFieldColumnByTitle(CurGroupTitle);
GroupFieldVector.removeElement(CurFieldColumn.FieldName);
try
{
oTextSectionHandler.removeLastTextSection();
oTextTableHandler.removeLastTextTable();
// if the previously selected item is somewhere in the middle of the listbox (and not at the end) the
// Textsections have to be updated
if (JavaTools.FieldInList(NewSelGroupNames, CurGroupTitle) == -1)
{
updateTextSections(NewSelGroupNames);
}
int iSelItemCount = NewSelGroupNames.length;
DBColumnsVector.remove(iSelItemCount);
}
catch(Exception exception)
{
showCommonReportErrorBox(exception);
}
}
public void removeGroupNamesofRecordTable(int GroupFieldCount)
{
int CurFieldCount = DBColumnsVector.size();
if (CurFieldCount > GroupFieldCount)
{
for (int i = CurFieldCount-1; i >= GroupFieldCount; i--)
{
DBColumnsVector.removeElementAt(i);
}
}
}
public void showCommonReportErrorBox(Exception exception)
{
String SystemContentPath = JavaTools.convertfromURLNotation(ContentTemplatePath);
String sMsgCurCommonReportError = JavaTools.replaceSubString(sMsgCommonReportError, SystemContentPath, "%PATH");
CurDBMetaData.showMessageBox("ErrorBox", VclWindowPeerAttribute.OK, sMsgCurCommonReportError);
exception.printStackTrace(System.out);
}
public void getallDBColumns()
{
try
{
DBColumn CurDBColumn;
for (int i = 0; i < CurDBMetaData.FieldColumns.length; i++)
{
if (i < CurDBMetaData.GroupFieldNames.length)
{
CurDBColumn = new DBColumn(oTextTableHandler, CurDBMetaData, CurDBMetaData.GroupFieldNames[i], i, COPYOFTBLGROUPSECTION + (i + 1));
}
else
{
if (CurRecordTable == null)
{
CurRecordTable = new RecordTable(oTextTableHandler);
}
CurDBColumn = new DBColumn(CurRecordTable, oTextTableHandler, CurDBMetaData, i-CurDBMetaData.GroupFieldNames.length);
}
if (CurDBColumn != null)
{
if (CurDBColumn.xNameCell != null)
{
DBColumnsVector.addElement(CurDBColumn);
}
else
{
String DelFieldName;
if (i < CurDBMetaData.GroupFieldNames.length)
{
DelFieldName = CurDBMetaData.GroupFieldNames[i];
CurDBMetaData.GroupFieldNames = JavaTools.removefromList(CurDBMetaData.GroupFieldNames, new String[] {DelFieldName});
CurDBMetaData.GroupFieldColumns = removeFieldColumnByFieldName(DelFieldName, CurDBMetaData.GroupFieldColumns);
}
else
{
DelFieldName = CurDBMetaData.getRecordFieldName(i-CurDBMetaData.GroupFieldNames.length);
String []aNewList = JavaTools.removefromList(CurDBMetaData.getRecordFieldNames(), new String[] {DelFieldName});
CurDBMetaData.setRecordFieldNames(aNewList);
CurDBMetaData.RecordFieldColumns = removeFieldColumnByFieldName(DelFieldName, CurDBMetaData.RecordFieldColumns);
CurDBMetaData.FieldColumns = removeFieldColumnByFieldName(DelFieldName, CurDBMetaData.FieldColumns);
}
i--;
}
}
else
{
String sMessage = JavaTools.replaceSubString(sMsgTableNotExisting, TBLGROUPSECTION + (CurDBMetaData.GroupFieldNames.length), "<TABLENAME>");
CurDBMetaData.showMessageBox("ErrorBox", VclWindowPeerAttribute.OK, sMessage);
}
}
java.util.Arrays.sort(CurDBMetaData.RecordFieldColumns, this);
}
catch(Exception exception)
{
showCommonReportErrorBox(exception);
}
}
public int compare(Object _oObject1, Object _oObject2)
{
FieldColumn oFieldColumn1 = (FieldColumn) _oObject1;
FieldColumn oFieldColumn2 = (FieldColumn) _oObject2;
DBColumn oDBColumn1 = getDBColumnByName(oFieldColumn1.FieldName);
DBColumn oDBColumn2 = getDBColumnByName(oFieldColumn2.FieldName);
if (oDBColumn1.ValColumn < oDBColumn2.ValColumn)
{
return -1;
}
else if (oDBColumn1.ValColumn == oDBColumn2.ValColumn)
{
return 0;
}
else
{
return 1;
}
}
private DBColumn getDBColumnByName(String _FieldName)
{
for (int i = 0; i < DBColumnsVector.size(); i++)
{
DBColumn oDBColumn = (DBColumn) DBColumnsVector.get(i);
if (oDBColumn.CurDBField.FieldName.equals(_FieldName))
{
return oDBColumn;
}
}
return null;
}
public static FieldColumn[] removeFieldColumnByFieldName(String _FieldName, FieldColumn[] _FieldColumns)
{
try
{
Vector aFieldColumns = new Vector();
for (int i = 0; i < _FieldColumns.length; i++)
{
FieldColumn CurFieldColumn = _FieldColumns[i];
if (!CurFieldColumn.FieldName.equals(_FieldName))
{
aFieldColumns.add(CurFieldColumn);
}
}
FieldColumn[] aRetList = new FieldColumn[aFieldColumns.size()];
aFieldColumns.toArray(aRetList);
return aRetList;
}
catch (RuntimeException e)
{
e.printStackTrace(System.out);
return null;
}
}
public void removeAllVisibleTextSections()
{
int GroupCount = CurDBMetaData.GroupFieldNames.length;
String[] sInvisibleSectionNames = new String[GroupCount + 1];
sInvisibleSectionNames[0] = RECORDSECTION;
for (int i = 1; i <= GroupCount; i++)
{
sInvisibleSectionNames[i] = GROUPSECTION + i;
}
XNameAccess xNameAccessTextSections = (XNameAccess) UnoRuntime.queryInterface(XNameAccess.class, oTextSectionHandler.xTextSectionsSupplier.getTextSections());
String[] sSectionNames = xNameAccessTextSections.getElementNames();
for (int i = 0; i < sSectionNames.length; i++)
{
String sSectionName = sSectionNames[i];
if (JavaTools.FieldInList(sInvisibleSectionNames, sSectionName) < 0)
{
oTextSectionHandler.removeTextSectionbyName(sSectionName);
}
}
}
private String[] getLayoutTextTableNames()
{
int GroupCount = CurDBMetaData.GroupFieldNames.length;
String[] sLayoutTableNames = new String[GroupCount + 1];
for (int i = 0; i < GroupCount; i++)
{
sLayoutTableNames[i] = TBLGROUPSECTION + (i + 1);
}
sLayoutTableNames[GroupCount] = TBLRECORDSECTION;
return sLayoutTableNames;
}
public void removeNonLayoutTextTables()
{
String[] sLayoutTableNames = getLayoutTextTableNames();
XNameAccess xNameAccessTextTables = (XNameAccess) UnoRuntime.queryInterface(XNameAccess.class, oTextTableHandler.xTextTablesSupplier.getTextTables());
String[] sTableNames = xNameAccessTextTables.getElementNames();
for (int i = 0; i < sTableNames.length; i++)
{
String sTableName = sTableNames[i];
if (JavaTools.FieldInList(sLayoutTableNames, sTableName) < 0)
{
oTextTableHandler.removeTextTablebyName(sTableName);
}
}
}
public void removeLayoutTextTables()
{
String[] sLayoutTableNames = getLayoutTextTableNames();
XNameAccess xNameAccessTextTables = (XNameAccess) UnoRuntime.queryInterface(XNameAccess.class, oTextTableHandler.xTextTablesSupplier.getTextTables());
XRelativeTextContentRemove xRelativeTextContentRemove = (XRelativeTextContentRemove) UnoRuntime.queryInterface(XRelativeTextContentRemove.class, xText);
String[] sTableNames = xNameAccessTextTables.getElementNames();
for (int i = 0; i < sTableNames.length; i++)
{
String sTableName = sTableNames[i];
if (JavaTools.FieldInList(sLayoutTableNames, sTableName) > -1)
{
if (!sTableName.equals(sLayoutTableNames[0]))
{
XTextContent xTextContent = (XTextContent) UnoRuntime.queryInterface(XTextContent.class, oTextTableHandler.getByName(sTableName));
boolean bleaveloop = false;
while (!bleaveloop)
{
try
{
// xRelativeTextContentRemove.removeTextContentBefore(xTextContent);
xRelativeTextContentRemove.removeTextContentAfter(xTextContent);
// IllegalArgumentException may be thrown when no paragraphbreak is there
}
catch (IllegalArgumentException iexception)
{
bleaveloop = true;
}
}
}
oTextTableHandler.removeTextTablebyName(sTableName);
}
}
}
public void setLayoutSectionsVisible(boolean _IsVisible)
{
try
{
XNameAccess xTextSections = oTextSectionHandler.xTextSectionsSupplier.getTextSections();
Object oTextSection;
int GroupFieldCount = CurDBMetaData.GroupFieldNames.length;
for (int i = 0; i < GroupFieldCount; i++)
{
oTextSection = xTextSections.getByName(GROUPSECTION + String.valueOf(i + 1));
Helper.setUnoPropertyValue(oTextSection, "IsVisible", new Boolean(_IsVisible));
}
if (xTextSections.hasByName(RECORDSECTION))
{
oTextSection = xTextSections.getByName(RECORDSECTION);
Helper.setUnoPropertyValue(oTextSection, "IsVisible", new Boolean(_IsVisible));
}
}
catch (Exception exception)
{
exception.printStackTrace(System.out);
}
}
public void removeCopiedTextSections()
{
int GroupCount = CurDBMetaData.GroupFieldNames.length;
String[] sCopyTextSections = new String[GroupCount + 1];
String[] sCopyTextTables = new String[GroupCount + 1];
sCopyTextSections[0] = COPYOFRECORDSECTION;
sCopyTextTables[0] = COPYOFTBLRECORDSECTION;
for (int i = 1; i <= GroupCount; i++)
{
sCopyTextSections[i] = COPYOFGROUPSECTION + (i);
sCopyTextTables[i] = COPYOFTBLGROUPSECTION + (i);
}
for (int i = 0; i <= GroupCount; i++)
{
oTextTableHandler.removeTextTablebyName(sCopyTextTables[i]);
oTextSectionHandler.removeTextSectionbyName(sCopyTextSections[i]);
}
}
}