Sharepoint.Dev() Just another SharePoint weblog

21Mar/100

Usando LINQ

Olá todos,

Um pequeno post sobre sobre como usar o LINQ para retornar os dados do Sharepoint.

A forma mais comum seria retornar um SPListItemCollection (SPList["lista"].Items) ou utilizando SPQuery para fazer os filtros necessários.

Eu particularmente não gosto muito de utilizar SPQuery pois precisamos criar uma  "grande" string. E ainda fica pouco dinamico a montagem desse filtro. Confesso que já cheguei a criar um método que cria dinamicamente esta query utilizando AND, OR e CONTAINS e ORDENAÇÃO mas deu trabalho pra montar a lógica visando utilizar mais de um parametro. E ainda acabei deixando de usar depois que aprendi o básico de LINQ.

O exemplo abaixo é um começo para se trabalhar como LINQ retornando um List<> (Generic.List) de SPListItems

public List ObterItens(SPList lista)
{
   List itens = (from SPListItem i in lista.Items
                              where i["Coluna"].ToString() == "texto para comparação"
                               orderby i.Created descending
                               select i).ToList();

   return itens;
}

Basicamente este código acima faz um filtro de uma determinada coluna (i["Coluna"]) e ordena pela data de criação dos itens.

Ainda estou na minha fase de estudos explorando todos as possibilidades do uso do LINQ.
Espero que possa auxiliar mais alguém.

Em breve posto meus novos testes e estudos.
Abraços a todos.

26Aug/080

Wget – Fazendo backup dos arquivos anexados em Custom List

Um dos últimos desafios que passei foi realizar uma migração dos documentos anexados em registros de uma lista customizada de um portal versão 2003 para a biblioteca de documentos no portal novo (WSS 3.0).

Como fazer isso? Depois de um levantamento dos arquivos que deveriam ser migrados tive uma surpresa: eram 2.860 arquivos totalizando mais de 800MB. Ou seja, fazer manualmente certamente estava fora de questão.

Pesquisando pela internet achei algumas soluções e destaco algumas. Quem já mexeu LINUX vai identificar rapidamente. Um programa chamado WGET. Originalmente criado para linux, com ele é possivel fazer downloads, uploads, acesso à FTP, HTTP, conexão segura, entre outras finalidades. EU não me aprofundei muito no programa, então deixo aqui aberto para quem conhecer melhor e dar mais definições sobre esse WGET.

O que me chamou a atenção foi que além de re-escreverem esse programa para windows é possível fazer download baseado em um arquivo TXT. E foi aí que me foquei. Fiz uma lista com TODOS os arquivos e executei o seguinte comando:

wget -i arquivotxt.txt -o log.txt --http-user=Usuariohttp --http-passwd=Senha

Basicamente esses parametros são para informar o nome da lista (-i), usuário e senha caso necessite fazer a conexão (--http-user e --http-passwd) e criar um log das tentativas/downloads feitos no processo (-o). Esse último é opcional.

Um único detalhe que não achei outra solução foi que, arquivos que contém caracteres especiais, etc não são reconhecidos no servidor, ou seja, se um arquivo chama "baixa de faturamento.xls" na lista dos arquivos deve estar assim: "baixa%20de%20faturamento.xls". Caso não faça as alterações baseadas na codificação UTF-8 a tentativa de download do arquivo vai retornar "404 - Arquivo não encontrado".

Bom é isso. Vi em forums que outras pessoas estavam tendo essa necessidade também e por isso resolvi escrever aqui no blog.

Segue duas referencias que utilizei muito para realizar essa tarefa:

Lista de codificação UTF-8: http://www.natalihr.nl/html/encoding.html

Referencia do programa WGET: http://sunsite.univie.ac.at/textbooks/wget/wget.html

 

Abraços e até a próxima!