Apêndices Apêndice 1 - Principais Casos de Uso DiTeD Apêndice 1.a - Ciclo de vida de um documento digital no DiTeD Apêndice 1.1 - Depositar Documento (Casos de Uso) Apêndice 1.1d - Descrição completa dos Casos de Uso Apêndice 1.1s - Depositar Documento (Diagrama de Sequências) Apêndice 1.1.1s - Seleccionar Género, Seleccionar Língua (Diagrama de Sequências) Apêndice 1.1.2s - Seleccionar Organizações (Diagrama de Sequências idêntico à selecção de termos) As organizações, quer ao nível da base de dados quer ao nível da lógica de negócio são em todo idênticas aos termos de indexação. Possuem uma hierarquia semelhante, logo uma navegação e um processo de escolha idênticos (Veja o apêndice 1.1.3s que mostra a selecção de termos de indexação). Apêndice 1.1.3s - Seleccionar Termos de Indexação (Diagrama de Sequências) Apêndice 1.1.4s - Seleccionar Autores (Diagrama de Sequências) Apêndice 1.1.5s - Seleccionar Colaboradores (Diagrama de Sequências) Apêndice 1.1.6s - Upload de Ficheiros (Diagrama de Sequências) Apêndice 1.2 - Editar Documento Depositado (Casos de Uso) Apêndice 1.2s - Editar Documento Depositado (Casos de Uso) Apêndice 1.3 - Pesquisar Entidades (Casos de Uso) Apêndice 1.3d - Descrição completa dos Casos de Uso Apêndice 1.3.1s - Navegar por Índices (Diagrama de Sequências) Apêndice 1.3.2s - Pesquisar Entidades (Diagrama de Sequências) Apêndice 1.4 - Administrar Sistema (Casos de Uso) Apêndice 1.4d - Descrição completa dos Casos de Uso Apêndice 1.4.1s - Login/Logout Administrador (Diagrama de Sequências) Apêndice 1.4.2s - Importação de Entidades a Partir de Ficheiros de Texto (Diagrama de Sequências) Apêndice 1.4.3s - Historial (Diagrama de Sequência) Apêndice 1.4.3.1s - Historial Pesquisa (Diagrama de Sequência) Apêndice 1.4.4s - Consultar Estatísticas de Administração (Diagrama de Sequências) Apêndice 1.4.5s - Inserção/Edição/Validação de Documentos A ferramenta de edição de documentos para administração é a mesma que para o utilizador (apêndice 1.2) com a excepção de que não é feita qualquer autenticação prévia, visto que o administrador já fez Login. Além de todos os passos normais que englobam a edição o administrador dispõe ainda do controlo do estado de validade do documento Apêndice 1.4.6s - Criar Entidade (Diagrama de Sequências) Apêndice 1.4.7s - Seleccionar Entidade (Diagrama de Sequências) Apêndice 1.4.8s - Editar Entidade (Diagrama de Sequências) Apêndice 1.4.9s - Eliminar Entidade (Diagrama de Sequências) Apêndice 1.4.10s - Substituir Entidade (Diagrama de Sequências) Apêndice 2 - Diagramas de Classes e Tabelas DB Apêndice 2.1 - Estrutura da Base de Dados (Classes Principais) DocumentLangParameterss ID Title SubTitle Abstract Notes 1 DPLangLocal 1 Long String String Text String Organization 1 1 DPLangDefault DPLangDoc 1 1 Long Integer Integer Integer String Date String String String String Bimary Boolean Boolean * 1 1 0..* Genre ID GenreNameLocal GenreNameDefult Notes Status OtherIdentifier Long String String String Bool String ID Code NameLocal NameDefault Notes Status OtherIdentifier * ID Long String String String String Bool String 1 * Editor * Document ID PublishingDateYear PublishingDateMonth PublishingDateDay PublishementLocal RecordDate Language (ISO 639-2) Link (página de apresentação) Notes Public Notes Admin Password IsInLocalFileSistem Status Diagrama de Classes Primary Authority Subject * ID Name Initials Email PhoneNumber Address URL Notes Status OtherIdentifier Long String String String String String String String Bool String 1 * * Primary Authority 1 ID Name Email Password Long String String Binary * Person * Author * 1 Copies OtherContributor OtherContributor Long 1 * ID Name BirthYear Month Day Email Address PhoneNumber Web-Site Notes Status OtherIdentifier Long String String Int Int String String String String String Bool String * * 1 DocumentsCopy OtherContributorRole Long String String String Bool String ID AccessRestrictions AccessRestrDuration Notes DescriptionLocal DescriptionDefault Status Long String Date String String String Bool Primary Authority 1 File * ID RoleNameLocal RoleNameDefault Notes Status OtherIdentifier Administrator 1 * ID Name MD5 Size Path Notes DescriptionLocal DescriptionDefault Status Long String Byte[] Long String String String String Bool • Autoridades: –“Autoridades” significa toda a lista de nomes que é controlada, isto é, cujos valores são verificados e registados segundo determinados princípios. Deverá haver três classes de autoridades no sistema: Assuntos, Organizações e Pessoas. –Estruturas das autoridades: As três classes de autoridades devem ter a mesma estrutura em árvore, isto é, deverá haver um nível de topo, com vários nomes, podendo a partir de cada elemento desse nível descender outros elementos, e assim sucessivamente. Não existem restrições a estas estruturas. –Criação e gestão de autoridades: Para cada classe de autoridades os processos de criação e gestão são os mesmos: 1.O administrador local de um sistema poderá criar listas de autoridades iniciais. 2.Cada utilizador, ao registar um novo documento, pode estabelecer ligações a autoridades existentes ou criar novas. 3.O administrador deverá SEMPRE verificar as NOVAS autoridades, podendo em cada caso (para isso, as autoridades novas, isto é, ainda não validadas, deverão ser TODAS visíveis claramente – status): 1.Aceitar a autoridade tal como está 2.Corrigir um destes aspecto na autoridade (nome ou ligação “para cima”), e aceitar 3.Recusar a autoridade. Neste caso deverá ser possível apagá-la e substituir a ligação a outro caso. –As três classes de autoridades são: • Subject: Assuntos!!! Aos níveis de topo serão criadas, por exemplo, áreas de assuntos (Eng. Informática, Eng. Física, Medicina, Sociologia, etc., podendo depois ser criados vários sub-níveis). Mas isto não implica nada para a construção do sistema!!! Os nomes de cada elemento serão dados pelo utilizador/administrador, e podem ser mudados em qualquer altura. Para assuntos que não existam na base de dados será derivado um assunto novo do assunto de topo “Outros”. • Organization: Nomes de organizações editoras (editores comerciais ou universidades), podendo servir ainda para registar a ligação conhecida mais recente de uma pessoa. No caso de teses, por exemplo, a universidade onde ela for defendida é registada como a organização editora!!! • Person: Qualquer pessoa, seja autor ou com outra relação! • Tabelas/classes Genre e OtherContributorRole –Estas tabelas serão definidas dinamicamente pela utilização do sistema, isto é, o administrador local pode configurar alguns casos, que os utilizadores podem seleccionar, mas estes podem também criar novos valores, que o administrador pode depois manter, corrigir ou anular –neste caso implica associar os documentos a outros casos já existentes. Exemplos de valores são: • Genre: Relatório, Artigo, Tese ou dissertação de mestrado, Tese ou dissertação de doutoramento, ... • OtherContributorRole: Orientador, Co-Orientador, Presidente de júri, Membro de júri, ... • • • • Tabelas/classes DocumentCopy, DocumentFile – No sistema cada documento tem uma serie de Copias, ou seja, a cada documento serão submetidos e associados ficheiros cada um associado a uma dada cópia. Cada cópia poderá ter quaisquer ficheiros que o utilizador deseje submeter, por exemplo uma cópia com o o resumo e imagens, uma copia com todos os documentos, outra com aqueles que o autor não permite que sejam visualizados pelo publico. Assim a cada copia será atribuída uma duração de restrições de acesso ao público e um tipo de acesso, público restrito ou interno. – Todos os utilizadores poderão ver os Metadados do documento mas só terão acesso a determinadas copias para download. Telefones, moradas, etc. : cuidado que poderemos ter de registar contactos não normais, como por exemplo telefones estrangeiros. Por isso estes campos são strings!!! Notas: devem-se artilhar as tabelas com campos de notas, para uso interno do administrador (e do próprio autor, claro, que as pode preencher da primeira vez!). Línguas: O sistema será configurado para o uso de três ou duas línguas. A local: Português, a default: o Inglês e para cada documento existirá também a língua do documento. No caso da Língua do documento ser uma das duas primeiras então não será apresentada para preenchimento de campos visto ser uma repetição. Isto aplica-se à tabela DocumentLangParameters onde constam todos os parâmetros que um documento pode dispor em várias línguas Apêndice 2.2 - Classes para Tabelas com línguas ISO 639-2 Langs Lang ID Lang (ISO 639) unique Long String 1 * ID Code (ISO 639) Word (Palavra na lingua respectiva) Long String String Apêndice 2.3 - Classes Core (Classes para controlo de historial) Context Eperson History ID Action Long String 1 1 ID SessionID SessionStartDate OriginIP RequestPath IgnoreAuth String String Date String String Boolean 1 1 ID EntityID Email Group String Long String String Apêndice 2.4 - Classes para controlo de Resultados de Pesquisas (Classes de Estado BEANS) FormSimplePreviousNext (abstract) Na sessão anda sempre uma form destas, com uma form especifica dentro de si e com o nome “FormSimplePreviousNext” FormPreviousNextSearch (abstract) NextResults int callPreviousResults() callNextResults() Abstract Abstract calcFirstResultPrevious() InitializeNext() InitializePrevious() GetParametersToRequest Method Method Method Method AreMoreNext AreMorePrevious Objects TotalResults1 TotalResults2 TotalResults3 classType Bool Bool List Integer Integer Integer String callPreviousResults() callNextResults() Initialize() GetParameterToRequest() Abstract Abstract Method Method Tudo o que se necessita para apresentar resultados está nesta form Basta colocar os links previous e next se as respectivas variaveis estiverem a true FormStringsSearch (abstract) FormGeneralSearch FormStringsIterate (abstract) callPreviousResults() callNextResults() Initialize() Abstract Abstract Method Find() NextResults() PreviousResults() GetParametersToRequest() Method Method Method Method FormAuthorsIterate FormIndexTermIterate callPreviousResults() callNextResults() Initialize() Method Method Method callPreviousResults() callNextResults() Initialize() Method Method Method Find() NextResults() PreviousResults() Method Method Method Find() NextResults() PreviousResults() Method Method Method SearchKeys String SearchKeys String callPreviousResults() callNextResults() Abstract Abstract callPreviousResults() callNextResults() Abstract Abstract InitializeNext() InitializePrevious() Method Method InitializeNext() InitializePrevious() Method Method Find() NextResults() PreviousResults() Method Method Method Find() NextResults() PreviousResults() Method Method Method … FormAuthorsSearch callPreviousResults() callNextResults() Method Method Find() NextResults() PreviousResults() Method Method Method Apêndice 2.5 - Classes para controlo de Resultados de Pesquisas (Controladores Servlets) Tira da Sessão um FormSimplePreviousNext Instância a classe em causa através do parâmetro classType ControllerGlobalPreviousNext PreviousResults() NextResults() Method Method de seguida invoca sobre o objecto FormSimplePreviousNext.callPreviousResults() ou FormSimplePreviousNext.callNextResults() ControllerGeneralSearch ControllerSearchPersons find() Index() Method Method find() Index() Method Method Instâncía a FormSimplePreviousNext Neste caso instancía uma FormAuthorsIterate ou AuthorsSearch De seguida é invocado o método find sobre a instância respectiva. Ela saberá como se inicializar e executar a busca na form acima de si na hierarquia Controladores para a submissão de documentos ControllerStartContributor ControllerStartAuthor FormAuthorsIterate.find(familyName) FormAuthorsSearch.find(familyName) Apêndice 2.6s - Mecanismo para garantir segurança nas palavraschave na BD (Diagrama de Sequências) Apêndice 3 - Arquitectura Apêndice 3.1 (MVC) Internet Filters Security line Authentication (IP, MAIL, Password) Authorization Permission List Action Forms (BEANS) Controllers (servlets) DLProperties ModelClasses Util Admin Server (Interfaces Server) Services Factory Log4j Service Results DBManager DLExceptions User Server (Interfaces Server) Services Factory Core (LogManager, HistoryManager, Email Alert) FileManager Session Monitor (Sessions Factory) Hibernate O/R Model XML Mapping DB FS Apêndice 3.2 - Diagrama de Componentes (Utilizador) Apêndice 3.3 - Diagrama de Componentes (Administrador) Apêndice 3.4 - Arquitectura de Controladores (Servlets) Disposição maneira como está agrupado o código no que respeita a controladores e form beans Administração Utilizadores Recursos Filtrados Recursos Não Filtrados Admin Interfaces JSP’s User Interfaces JSP’s Controladores Administrativos Controladores Comuns Controladores Para Utilizadores Form Beans Administrativos Form Beans Comuns Form Beans Para Utilizadores Apêndice 3.5 - Diagrama de Instalação Apêndice 3.5.1s - Download de um ficheiro - Funcionamento dos Filtros - (Diagrama de Sequência) Apêndice 3.5.2 - Login Geral segurança nas palavras chave As palavras chave e a forma como estas são guardadas faz parte da arquitectura de segurança do sistema. Este diagrama foi apresentado na secção das tabelas da base de dados, de qualquer forma está bastante preso a este capitulo Apêndice 3.5.3s - Login Administrador (Diagrama de Sequência) Este diagrama já foi apresentado em 1.4.1s nos casos de uso, mas tal como a segurança das palavras chave este é um caso bastante virado para a forma como a arquitectura foi montada Apêndice 4 - Hibernate (O/R Model) http://hibernate.sourceforge.net Apêndice 4.1 - Arquitectura do Modelo Geral de funcionamento Apêndice 4.2 - Arquitectura do Modelo mais detalhada Apêndice 5 - Struts http://jakarta.apache.org/struts Apêndice 5.1 - Arquitectura do Modelo Geral de funcionamento Apêndice 5.2 - Arquitectura do Modelo com o DiTeD (Detalhado)