// Changed on 02 April 2012 at 11:32:59 by Jimmy Xie
/*
Creates a record containing the data from _data, and either for all field in _data or the fields
which are specified in SysExpImpField table.
/*
Creates a record containing the data from _data, and either for all field in _data or the fields
which are specified in SysExpImpField table.
AOT/class/SysDataIntegration/prepareFields*/
protected Common prepareFields(
SysExpImpTable _expImpTable,
DictTable _dictTable,
container _line,
Common _notUsed = null,
ListIterator _listIteratorSysExpImpField = null
)
{
SysExpImpField expImpField; // Table containing information about field setup
Common common;
str s;
SysDictField sysDictField;
fieldId fieldIdBase; // Base fieldid without array idx
int enumInt;
XppCompiler compiler;
ExecutePermission executePermission = new ExecutePermission();
;
common = _dictTable.makeRecord();
executePermission.assert(); // ExpImpField has been protected by AOS Table security
if (!_listIteratorSysExpImpField)
{
_listIteratorSysExpImpField = new ListIterator(this.witListSysExpImpFields(_expImpTable));
}
_listIteratorSysExpImpField.begin();
while (_listIteratorSysExpImpField.more())
{
expImpField = _listIteratorSysExpImpField.value();
s = this.getFieldStr(_expImpTable,expImpField);
if (s)
{
if (expImpField.Expression)
{
// This should do it since the data is already converted.
//BP deviation documented
compiler = new XppCompiler();
if (!compiler.compile(expImpField.expressionAll()))
{
throw error("@SYS96991");
}
else
{
//BP deviation documented
s = runBuf(expImpField.expressionAll(), s);
}
}
fieldIdBase = fieldExt2Id(expImpField.ConvFieldId);
sysDictField = new SysDictField(
expImpField.ConvTableId,
fieldIdBase,
fieldExt2Idx(expImpField.ConvFieldId));
if (! sysDictField)
continue;
switch (sysDictField.baseType())
{
// Changed on 02 April 2012 at 11:32:59 by Jimmy Xie Begin
case Types::UtcDateTime:
common.(expImpField.ConvFieldId) = str2datetime(s,-1);
break;
// Changed on 02 April 2012 at 11:32:59 by Jimmy Xie End
case Types::Date:
common.(expImpField.ConvFieldId) = str2date(s,-1);
break;
case Types::Enum:
enumInt = str2enum(common.(sysDictField.id()), s);
if (enumInt==255) // str not regonized
{
common.(sysDictField.id()) = str2int(s);
}
else
{
common.(sysDictField.id()) = enumInt;
}
break;
case Types::String:
case Types::RString:
case Types::VarString:
common.(expImpField.ConvFieldId) += s;
break;
case Types::UserType:
if (isTypeTime(sysDictField.extendedTypeId()))
{
common.(expImpField.ConvFieldId) = str2time(s);
}
else
common.(expImpField.ConvFieldId) = s;
break;
case Types::Guid:
common.(expImpField.ConvFieldId) = str2guid(s);
break;
default:
common.(expImpField.ConvFieldId) = s;
}
}
_listIteratorSysExpImpField.next();
}
CodeAccessPermission::revertAssert();
return common;
}
protected Common prepareFields(
SysExpImpTable _expImpTable,
DictTable _dictTable,
container _line,
Common _notUsed = null,
ListIterator _listIteratorSysExpImpField = null
)
{
SysExpImpField expImpField; // Table containing information about field setup
Common common;
str s;
SysDictField sysDictField;
fieldId fieldIdBase; // Base fieldid without array idx
int enumInt;
XppCompiler compiler;
ExecutePermission executePermission = new ExecutePermission();
;
common = _dictTable.makeRecord();
executePermission.assert(); // ExpImpField has been protected by AOS Table security
if (!_listIteratorSysExpImpField)
{
_listIteratorSysExpImpField = new ListIterator(this.witListSysExpImpFields(_expImpTable));
}
_listIteratorSysExpImpField.begin();
while (_listIteratorSysExpImpField.more())
{
expImpField = _listIteratorSysExpImpField.value();
s = this.getFieldStr(_expImpTable,expImpField);
if (s)
{
if (expImpField.Expression)
{
// This should do it since the data is already converted.
//BP deviation documented
compiler = new XppCompiler();
if (!compiler.compile(expImpField.expressionAll()))
{
throw error("@SYS96991");
}
else
{
//BP deviation documented
s = runBuf(expImpField.expressionAll(), s);
}
}
fieldIdBase = fieldExt2Id(expImpField.ConvFieldId);
sysDictField = new SysDictField(
expImpField.ConvTableId,
fieldIdBase,
fieldExt2Idx(expImpField.ConvFieldId));
if (! sysDictField)
continue;
switch (sysDictField.baseType())
{
// Changed on 02 April 2012 at 11:32:59 by Jimmy Xie Begin
case Types::UtcDateTime:
common.(expImpField.ConvFieldId) = str2datetime(s,-1);
break;
// Changed on 02 April 2012 at 11:32:59 by Jimmy Xie End
case Types::Date:
common.(expImpField.ConvFieldId) = str2date(s,-1);
break;
case Types::Enum:
enumInt = str2enum(common.(sysDictField.id()), s);
if (enumInt==255) // str not regonized
{
common.(sysDictField.id()) = str2int(s);
}
else
{
common.(sysDictField.id()) = enumInt;
}
break;
case Types::String:
case Types::RString:
case Types::VarString:
common.(expImpField.ConvFieldId) += s;
break;
case Types::UserType:
if (isTypeTime(sysDictField.extendedTypeId()))
{
common.(expImpField.ConvFieldId) = str2time(s);
}
else
common.(expImpField.ConvFieldId) = s;
break;
case Types::Guid:
common.(expImpField.ConvFieldId) = str2guid(s);
break;
default:
common.(expImpField.ConvFieldId) = s;
}
}
_listIteratorSysExpImpField.next();
}
CodeAccessPermission::revertAssert();
return common;
}