En esta entrada vamos aprender a recuperar objetos de un usuario en MicroStrategy con Java. Utilizaremos Eclipse como herramienta para escribir y ejecutar el código Java. Partiremos de un tutorial anterior donde aprendimos a iniciar y cerrar sesión correctamente y lo complementaremos con el código de este articulo.
Especificaciones del entorno
- Microsoft Windows 10
- MicroStrategy 2020 update 2
- SDK MicroStrategy 2020
- Eclipse 2019-12
Proyecto Java
Punto de partida
Este tutorial presupone que ya has creado un Proyecto Java y que se ha creado el paquete y la clase principal estableciendo la conexión al servidor de Microtrategy. Si no es así, puedes seguir este tutorial para realizarlo antes de continuar.
Importación de clases
Para recuperar objetos de un usuario en MicroStrategy con Java es necesario importar las siguientes clases adicionales a las que ya has utilizado para iniciar sesión.
- Escribe después de la definición package las siguientes líneas:
import javax.swing.JOptionPane; import com.microstrategy.web.objects.WebFolder; import com.microstrategy.web.objects.WebObjectInfo; import com.microstrategy.web.objects.WebObjectSource; import com.microstrategy.web.objects.WebSearch; import com.microstrategy.webapi.EnumDSSXMLObjectTypes; import com.microstrategy.webapi.EnumDSSXMLSearchDomain; import com.microstrategy.webapi.EnumDSSXMLSearchFlags;
Código para recuperar objetos de un usuario
- Situate entre los métodos main e iniciarSesión
- Escribe el siguiente código:
public static void recuperarObjetos() throws WebObjectsException, IllegalArgumentException { try { WebObjectSource fuente = factory.getObjectSource(); WebSearch buscar = fuente.getNewSearchObject(); //Parametros a buscar buscar.setDisplayName("*"); //ID del propietario de los informes buscar.setSearchOwner("54F3D26011D2896560009A8E67019608"); //Indicadores de busqueda buscar.setSearchFlags(buscar.getSearchFlags() + EnumDSSXMLSearchFlags.DssXmlSearchUsedByOneOf + EnumDSSXMLSearchFlags.DssXmlSearchNameWildCard); buscar.setAsync(false); //Descomenta la siguiente línea si solo quieres buscar un tipo de objeto //Modifica DssXmlTypeAttribute si no quieres buscar atributos //buscar.types().add(new Integer(EnumDSSXMLObjectTypes.DssXmlTypeAttribute)); buscar.setDomain(EnumDSSXMLSearchDomain.DssXmlSearchDomainProject); buscar.submit(); WebFolder carpeta = buscar.getResults(); System.out.println("Número de resultados: " + carpeta.size()); JOptionPane.showMessageDialog(null, "Número de resultados: " + carpeta.size()); WebObjectInfo informacionObjeto = null; if(carpeta.size()>0){ for(int i=0;i<carpeta.size();i++){ informacionObjeto = carpeta.get(i); System.out.println(informacionObjeto.getType() + ":" + informacionObjeto.getID() + ": " + informacionObjeto.getDisplayName()); } } } catch (WebObjectsException | IllegalArgumentException ex) { mostrarError(sesionServidor, "Error al buscar:" + ex.getMessage()); JOptionPane.showMessageDialog(null, "Error al buscar:" + ex.getMessage()); } }
A tener en cuenta
Puedes descomentar la línea 21 si solo quieres buscar un tipo de objeto. Si descomentas esta linea solo se buscaran los objetos de tipo Atributo. Puedes modificar esta línea para buscar solo lo que necesites sustituyendo DssXmlTypeAttribute por el objeto a buscar ayudándote de esta web.
- Ubicate en el método main y escribe entre las llamadas a los métodos iniciarSesion y cerrarSesion la llamada al nuevo método escribiendo recuperarObjetos();
Resultado
Si ejecutamos el código anterior se nos mostrara una ventana indicando el número de objetos de los que es propietario el id de usuario que hemos indicado y además nos mostrara por pantalla el tipo de objeto, ID y el nombre de los objetos.
Ahora puedes exportar tu código o seguir modificando tu programa.