Domino SSJS – Função auxiliar de vetor de retorno

Situação clássica do IBM / Lotus Domino: deseja obter valores únicos ou múltiplos de um campo em um documento pelo método getItemValue (), mas não tem certeza se é um vetor ou uma string?

Isso é baseado no XSnippet de converter qualquer valor em uma matriz por Mark Leusink .

A principal diferença é que implementei isso como Domino-SSJS para retornar qualquer objeto como um objeto instanciado java.util.Vector. Meu caso de uso inicial e principal foi ao extrair valor (es) de um campo potencialmente com vários valores; se for único, o Domino retorna um objeto de string. Portanto, para evitar a necessidade de sempre verificar se typeof currentDocument.getItemValue (“FieldName”) retorna um java.util.Vector, criei uma função auxiliar. Eu o expandi de apenas manipular objetos Vector e String para levar em conta java.util.ArrayList (uma preferência minha) e objetos Array simples. Não é completo, mas deve ajudar a atender às necessidades de muitos.

Snippet:

function getValueAsVector(obj){
switch(typeof obj){
case "java.util.Vector":
//it's already a Vector, just return it
return obj;
break;
case "java.util.ArrayList":
//it's an ArrayList, return it as a Vector
var x:java.util.Vector = new java.util.Vector();
for(i=0;i<obj.size();i++){
x
.add(obj[i]);
}
return x;
break;
case "Array":
//it's an Array prototype, return it as a Vector
var x:java.util.Vector = new java.util.Vector();
for(i=0;i<obj.length;i++){
x
.add(obj[i]);
}
return x;
break;
default:
//it's most likely a String, return it as a Vector
var x:java.util.Vector = new java.util.Vector();
x
.add(obj);
return x;
break;
}
}