Custom Patch
Custom Patch
m {'kernel','oe'}
o {'pat26062017000001::document',&&oe::Objects::document}
N document
f ExportVersions
s
retval.ok = TRUE
retval.errMsg = ""
attr.action = "addversion"
attr.type = this.OSParent.OSName
if max > 1
for i = 2 to max
result = .CreateFile( versions[i] )
if result.ok
metadata = Assoc.CreateAssoc()
// Get the major/minor version info
llNode = $LLIAPI.LLNodeSubsystem.GetItem(
node.pSubType )
if IsNotError( llNode )
if
llNode.IsMajorMinorNode( dapiCtx, node )
metadata.versionmajor =
Str.ValueToString( versions[i].pVerMajor )
metadata.versionminor =
Str.ValueToString( versions[i].pVerMinor )
end
else
retval.ok = FALSE
retval.errMsg =
Str.Format( [OE_ERRMSG.CouldNotGetNode], node.pID )
return retval
end
metadata._attr = attr
metadata.file= result.fileName
metadata.location = location
metadata.mime = versions[i].pMIMEType
metadata.created = $OE.Utils.Date2OIDate(
versions[i].pCreateDate )
metadata.modified =
$OE.Utils.Date2OIDate( versions[i].pModifyDate )
metadata.filename = versions[i].pFILENAME
if ( retval.ok )
if ( metaObj.fKey ==
'category')
checkVal =
metaObj.Execute( prgCtx, node, metadata )
if ( !checkVal.ok )
retval.ok = FALSE
retval.errMsg =
checkVal.errMsg
break
end
end
end
end
result =
$OE.Utils.GetUserNameFromID( prgCtx, versions[i].pOwner )
if result.ok
metadata.createdby = result.name
end
root = Assoc.CreateAssoc()
root.node = metadata
$OE.Export.WriteMetadata( root )
else
// log error but continue looping
$OE.Export.WriteErrorLog( result.errMsg )
end
end
end
return retval
end
sEND
f GetMetadata
s
/**
* This function will get object specific metadata (if any)
*
* @param {Object} prgCtx
* @param {DAPINODE} node
* @param {Assoc} metadata
*
* @return {Assoc}
* @returnFeature {Boolean} ok
* @returnFeature {String} errMsg
*
*/
function Assoc GetMetadata( \
Object prgCtx, \
DAPINODE node, \
Assoc metadata )
retval.ok = TRUE
retval.errMsg = ""
if ( verNum == 1 )
verNum = versions[1].pNumber
end
end
if ( IsNotError( version ) )
metadata.mime = version.pMIMEType
if ( IsNotError( llNode ) )
metadata.versioncontrol = "true"
metadata.versionmajor =
Str.ValueToString( version.pVerMajor )
metadata.versionminor =
Str.ValueToString( version.pVerMinor )
end
else
retval.ok = FALSE
retval.errMsg =
Str.Format( [OE_ERRMSG.CouldNotGetNode], node.pID )
return retval
end
else
retval.ok = FALSE
retval.errMsg = Str.Format( [OE_ERRMSG.CouldNotGetVersion],
verNum, node.pID )
return retval
end
if ( !result.ok )
retval.ok = FALSE
retval.errMsg = result.errMsg
return retval
end
if ( result.ok )
// AdminService.GetFreeDiskSpace returns MB
freeDiskSpace = result.Result
else
retval.ok = FALSE
retval.errMsg = [OE_ERRMSG.CouldNotCalcDiskSpace]
return retval
end
if ( File.Exists( fileName ) )
retval.ok = FALSE
retval.errMsg = Str.Format( [OE_ERRMSG.FileAlreadyExists],
fileName )
return retval
else
if ( result.ok )
if ( IsNotError( status ) )
metadata.file = virtualFileName
else
retval.ok = FALSE
retval.errMsg =
Str.Format( [OE_ERRMSG.CouldNotFetchVersion], verNum, node.pID )
return retval
end
else
retval.ok = FALSE
retval.errMsg = result.errMsg
return retval
end
end
end
return retval
end
sEND
o {'pat26062017000001::Metadata',&&oe::Metadata::category}
N Metadata
f Execute
s
retval.ok = TRUE
retval.errMsg = ""
if(Assoc.IsKey(metadata,'versionNo'))
result = .GetNodeVersionCategoryData( prgCtx,
node.pID,metadata)
else
result = .GetCategoryData( prgCtx, node.pID )
end
if result.ok
if IsDefined( result.attrdata )
attrData = result.AttrData
attrDef = attrData.fDefinitions
attrVal = attrData.fData
end // IS DEFINED
else
retval.ok = FALSE
retval.errMsg = result.errMsg
return retval
end
if IsDefined( result.attrdata )
attrData = result.AttrData
attrDef = attrData.fDefinitions
if key[1] in catList
// category is applied on
child, do nothing
else
result =
$OE.Utils.GetNodePath( prgCtx, key[1] )
if result.ok
cat =
Assoc.CreateAssoc()
attr =
Assoc.CreateAssoc()
attr.name = result.path
attr.action = "remove"
cat._attr = attr
categories =
{ @categories, cat }
else
retval.ok = FALSE
retval.errMsg =
result.errMsg
return retval
end
end
end
end
else
retval.ok = FALSE
retval.errMsg = result.errMsg
return retval
end
else
retval.ok = FALSE
retval.errMsg =
Str.Format( [OE_ERRMSG.CouldNotGetNode], node.pID )
return retval
end
if Length( categories )
metadata.category = categories
end
return retval
end
sEND
f fEnabled
v true
f GetCategoryData
s
/**
* This method will retrieve category data for a given node.
*
* @param {Object} prgCtx
* @param {Integer} nodeID
*
* @return {Assoc}
* @returnFeature {Boolean} ok
* @returnFeature {String} errMsg
* @returnFeature {Dynamic} apiError
* @returnFeature {Dynamic} attrData The current category and
attribute data for the given node
*/
function Assoc GetCategoryData( \
Object prgCtx, \
Integer nodeID )
Assoc checkVal
Assoc retVal
Dynamic attrData
Dynamic apiError
String query
String errMsg
RecArray recordset
Integer verNum
Boolean ok = TRUE
Boolean removeInherit = FALSE
Boolean srcRemoveInherit = FALSE
CAPICONNECT cconn = prgCtx.fDbConnect.fConnection
Integer cacheID = 0
Integer srcSourceID = 0
Integer srcSourceVNum = 0
Integer sourceType = $LLIAPI.AttrSourceOriginal
if ( IsNotError( recordset ) )
checkVal =
$LLIApi.AttrUtil.GetAttrDataWithSourceOption( \
prgCtx, \
cacheID, \
nodeID, \
verNum, \
removeInherit, \
sourceType, \
srcSourceID, \
srcSourceVNum, \
srcRemoveInherit )
if ( checkVal.ok == TRUE )
attrData = checkVal.attrData
else
ok = FALSE
errMsg = checkVal.errMsg
apiError = checkVal.apiError
end
end
else
ok = FALSE
errMsg = Str.Format( [OE_ERRMSG.CouldNotQueryTable],
"LLAttrBlobData" )
apiError = recordset
end
retVal.ok = ok
retVal.errMsg = errMsg
retVal.apiError = apiError
retVal.attrData = attrData
return retval
end
sEND
f GetNodeVersionCategoryData
s
/**
* This method will retrieve category data for a given node.
*
* @param {Object} prgCtx
* @param {Integer} nodeID
*
* @return {Assoc}
* @returnFeature {Boolean} ok
* @returnFeature {String} errMsg
* @returnFeature {Dynamic} apiError
* @returnFeature {Dynamic} attrData The current category and
attribute data for the given node
*/
function Assoc GetNodeVersionCategoryData( \
Object prgCtx, \
Integer nodeID,
Assoc metadata )
Assoc checkVal
Assoc retVal
Dynamic attrData
Dynamic apiError
String query
String errMsg
RecArray recordset
Integer verNum
Boolean ok = TRUE
Boolean removeInherit = FALSE
Boolean srcRemoveInherit = FALSE
CAPICONNECT cconn = prgCtx.fDbConnect.fConnection
Integer cacheID = 0
Integer srcSourceID = 0
Integer srcSourceVNum = 0
Integer sourceType = $LLIAPI.AttrSourceOriginal
verNum=metadata.versionNo
query = "SELECT VerNum FROM LLAttrBlobData WHERE ID = :A1 AND
VerNum=:A2"
recordset = CAPI.Exec( cconn, query, nodeID,verNum)
if ( IsNotError( recordset ) )
checkVal =
$LLIApi.AttrUtil.GetAttrDataWithSourceOption( \
prgCtx, \
cacheID, \
nodeID, \
verNum, \
removeInherit, \
sourceType, \
srcSourceID, \
srcSourceVNum, \
srcRemoveInherit )
if ( checkVal.ok == TRUE )
attrData = checkVal.attrData
else
ok = FALSE
errMsg = checkVal.errMsg
apiError = checkVal.apiError
end
end
else
ok = FALSE
errMsg = Str.Format( [OE_ERRMSG.CouldNotQueryTable],
"LLAttrBlobData" )
apiError = recordset
end
retVal.ok = ok
retVal.errMsg = errMsg
retVal.apiError = apiError
retVal.attrData = attrData
return retval
end
sEND
o {'pat26062017000001::OpenExportFiles',&&oe::Export}
N OpenExportFiles
f OpenExportFile
s
/**
* This function will open the export file
*
* @param {Object} prgCtx
* @param {String} filename
* @param {Integer} seq
*
* @return {Assoc}
* @returnFeature {Boolean} ok
* @returnFeature {String} errMsg
*
*/
retval.ok = TRUE
retval.errMsg = ""
if ( result.ok )
config = result.config
workingDirectory =
config.WorkingDirectory
if ( workingDirectory[:-2] !=
File.Separator() )
workingDirectory =
Str.Format( "%1%2", workingDirectory, File.Separator() )
end
else
retval.ok = FALSE
retval.errMsg =
Str.Format( [OE_ERRMSG.ValueIsNotDefined], "WorkingDirectory" )
return retval
end
else
retval.ok = FALSE
retval.errMsg = result.errMsg
return retval
end
if ( IsNotError( .fExportFilePointer ) )
// write the opening <export> tag
else
retval.ok = FALSE
retval.errMsg =
Str.Format( [OE_ERRMSG.CouldNotOpenFile], exportFile )
return retval
end
return retval
end
sEND