08-08-2011 01:53 AM
// Mail
var destinationMail="watchdog@custom.ch";
// Lucene Search
var exactTypeString = "EXACTTYPE"; // no children (sub-type)
// Qname finance
var qNameInvoiceCreditor = "{http://www.custom.ch/model/finance/1.0}invoiceCreditor";
var qNameInvoiceDebtor = "{http://www.custom.ch/model/finance/1.0}invoiceDebtor";
var qNamePaymentCreditor = "{http://www.custom.ch/model/finance/1.0}paymentCreditor";
var qNamePaymentDebtor = "{http://www.custom.ch/model/finance/1.0}paymentDebtor";
var qNameFinancialAccount = "{http://www.custom.ch/model/finance/1.0}financialAccount";
var qNameCondensedAccount = "{http://www.custom.ch/model/finance/1.0}condensedAccount";
var arrayQName= [qNameInvoiceCreditor,
qNameInvoiceDebtor,
qNamePaymentCreditor,
qNamePaymentDebtor,
qNameFinancialAccount,
qNameCondensedAccount];
// Query that would be execute
var queryString;
var response = "";
// Information about webscript
var nameWebscriptUser = "Webscript custom Redundant" + " by "
+ person.properties.userName;
var arguments = "Arguments : ";
script: {
logger.log(nameWebscriptUser);
var existSameFile=false; // Will be set to true if same file exist
// For all Types
for (var i=0;i< arrayQName.length;i++){
logger.log("Search for "+arrayQName[i]);
// Search and compare
if (checkSameAttributes(arrayQName[i])==true){
existSameFile=true;
}
}
//sendMail();
if (existSameFile){
response+="Problems… Same file exists:-( \n" ;
response+="See in alfresco logs the results… \n" ;
}else{
response+="All is ok 🙂 \n" ;
}
logger.log("End");
}
/*
* Check if there are same attributes (type, …)
*/
function checkSameAttributes(qName) {
// Request
// Type
var queryString= "(" + exactTypeString + ":\"" + qName + "\")";
// Query
var docs = search.luceneSearch(queryString);
logger.log("Total : "+docs.length);
// Need to continue ?
if (docs.length<2){
return false;
}
var existSameFile=false; // Will be set to true if same file exist
// Test
for ( var current = 0; current < (docs.length-1); current++) {
//logger.log("Read "+current+"/"+docs.length);
for ( var other = (current +1); other < docs.length; other++) {
// Same firm
if (getNumber(docs[current].properties["sg:firmNb"]) == 0 ||
getNumber(docs[current].properties["sg:firmNb"]) != getNumber(docs[other].properties["sg:firmNb"])){
continue;
}
// Same Document Nb ?
if ( getNumber(docs[current].properties["sg:documentNb"]) == 0 ||
getNumber(docs[current].properties["sg:documentNb"]) != getNumber(docs[other].properties["sg:documentNb"])){
continue;
}else{
// Yes… same.
printSameFile(docs[current].displayPath+"/"+ docs[current].name,docs[other].displayPath+ "/"+docs[other].name);
existSameFile=true;
}
}
}
return existSameFile;
}
/*
* Print output for same files (in logger)
*/
function printSameFile(file1,file2){
logger.log("Same attributs !!!");
logger.log("\t"+file1);
logger.log("\t"+file2);
}
/*
* Get number (null will be 0)
*/
function getNumber(numberCouldBeNull){
if (numberCouldBeNull== null || numberCouldBeNull== "null" || numberCouldBeNull==""){
return 0;
}
return numberCouldBeNull;
}
/*
* Send a mail
*/
function sendMail(){
logger.log("Send a mail notification to : "+destinationMail);
// Create mail action
var mail = actions.create("mail");
mail.parameters.to = destinationMail;
mail.parameters.subject = "Warning - GED - Data Redundant";
mail.parameters.text = "Redundant data are in Alfresco (documents with same keys (documentNb + firmNb)). Please check the Alfresco logs to see the details.";
// execute action against a document
mail.execute(document);
}
#
# Properties to limit resources spent on individual searches
# (Useful for the script test SearchRedundant. It allow to show more 1000 documents)
# The maximum time spent pruning results (*********I Changed from 10000 to 100000)
system.acl.maxPermissionCheckTimeMillis=100000
# The maximum number of results to perform permission checks against (*********I Changed from 1000 to 10000)
system.acl.maxPermissionChecks=10000
09-22-2011 08:13 AM
select a, b, c, count(*)
from tablename
where…
group by a, b, c
having count(*) > 1
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.