Zadanie #1836
Zadanie #1802: Opracowanie integracji z OJS
dodanie sprawdzania poprawności danych do importu
Status: | Zamknięty | Start date: | 2017-09-25 | |
---|---|---|---|---|
Priority: | Normalny | Due date: | ||
Assignee: | Michał Komar | % Done: | 100% | |
Category: | backend | |||
Target version: | 0.3 | |||
Developer: | Łukasz Waśkiewicz | Tester: | Jarosław Bąbel |
Related issues
Associated revisions
refs #1836 walidacja danychimportu
refs #1836 walidacja danych importu, sprawdzanie w storage
refs #1836 walidacja elementu z importu, wyświetlanie błedów
refs #1836 zmiany w walidacji dokumentów
refs #1836 sprawdzanie obecności zadeklarowanych plików
sprawdzanie czy w wszystkie lokalne contenty zadeklarowane w bwmeta są
dostarczone
refs #1836 odświeżanie dokumentów
refs #1836 wyświetlanie dokumentów dla importu, tłumaczenia
refs #1836 tłumaczenia
refs #1836 poprawienie importu danych
zapis do poprawnego DocumentStorageSerwis
poprawa walidacji
wpłaszczanie YContentEntry
sprawdzenie dataset dokumentu vs dataset importu
refs #1836 poprawienie importu danych, test dla importu do infony
refs #1836 umożliwienie kasowania niewalidujących się dokumentów,
poprawa importu do infony
refs #1836 poprawa testów
refs #1836 poprawa stylowania okien dialogowych
refs #1836 poprawa stylowania okien dialogowych
History
#1 Updated by Łukasz Waśkiewicz over 7 years ago
- % Done changed from 0 to 90
#2 Updated by Łukasz Waśkiewicz over 7 years ago
- Category set to backend
- Status changed from Nowy to Testowanie
- Assignee changed from Łukasz Waśkiewicz to Michał Komar
- Target version set to 0.3
- % Done changed from 90 to 100
#3 Updated by Michał Komar over 7 years ago
- Status changed from Testowanie to Odpowiedź
- Assignee changed from Michał Komar to Łukasz Waśkiewicz
Tak jak rozmawialiśmy, można to zintegrować z walidacją dokumentu podczas zapisu. Generowane byłyby wtedy warningi/info.
#4 Updated by Łukasz Waśkiewicz over 7 years ago
- Status changed from Odpowiedź to Testowanie
- Assignee changed from Łukasz Waśkiewicz to Michał Komar
przerobione wyświetlanie walidacji, kolory, ikonki
#5 Updated by Michał Komar over 7 years ago
- Assignee changed from Michał Komar to Jarosław Bąbel
#6 Updated by Jarosław Bąbel over 7 years ago
- File springer_sample.zip added
- File springer-20100709-00001.zip added
- File test-pack.zip added
- Status changed from Testowanie to Odpowiedź
- Assignee changed from Jarosław Bąbel to Łukasz Waśkiewicz
- Tester Jarosław Bąbel added
Aplikacja w wersji: 0.0.3-SNAPSHOT d344748 uruchomiona lokalnie.
FF 56.0 (64 bity) Ubuntu, ekran 1366x768
Błędy¶
Po wykonaniu importu i/lub po wejściu w podgląd pojedynczego importu przestaje działać przycisk usuń dla zasobu i psuje się okno podglądu błędów importu¶
- uruchomić od nowa przeglądarkę i zalogować się do jupitera
- sprawdzić dla porównania na dowolnym zasobie działanie przycisku "usuń" - powinno pojawić się okienko "usuń tak/nie"
- wyświetlić okno szczegółów importu (wejść w import z listy importów lub dodać nowy import - tu od razu pojawia się okno szczegółów)
- przejść w aplikacji do zakładki "jupiter"
- wybrać w drzewie dowolny zasób
- wcisnąć przycisk "usuń" - brak reakcji, okienko "usuń tak/nie" nie pojawia się
- jeżeli mamy import z błędami (nie walidacji, tylko wyjątki/błędy całego importu np. w załączniku plik springer-20100709-00001.zip), to
- wejść w podgląd importu z błędami, wyświetlić okienko z podglądem wyjątku (przycisk błąd)
- kliknąć ok
- okienko znika, ale ekran pozostaje szary i aplikacja nie reaguje na klikanie
- przycisk back przeglądarki przywraca działanie aplikacji, ale przycisk usuń zasób nadal nie działa.
Do przywrócenia działania przycisku usuń trzeba zrestartować przeglądarkę, samo przelogowanie nie pomaga.
Brak możliwości usunięcia zaimportowanego zasobu, w konsoli leci NPE dla StateMachine¶
- zaimportować plik bwmeta bez nadpisywania, do bazy dml np. jupiter/jupiter-services/src/test/resources/import/bwmeta/sampleBwmeta.xml
- wylogować i uruchomić od nowa przeglądarkę (obejście problemu z blokowaniem przycisku usuń opisanego wyżej)
- wybrać zaimportowany zasób
- kliknąć usuń i "tak"
- zasób nie zostaje usunięty, w logu leci wyjątek
Po uruchomieniu importu w oknie szczegółów w zakładce "dokumenty" wszystkie dokumenty są oznaczone "OK" pomimo warningów lub błędów, które pojawiają się po wejściu w podgląd z listy importów po zakończeniu importu, odśwież nie zmienia statusów¶
Import w trybie "Nadpisz wszystko" do bazy DML.
Plik z załącznika: springer-sample.zip.
- uruchomić import springer-sample.zip
- widać status importu "Przetwarzanie"
- w zakładce "dokumenty" pojawiają się importowane dokumenty, w kolumnie "Akcje" wszystkie ikonki zielone "Dane poprawne"
- po chwili klikamy odśwież
- status importu "Zakończony"
- w zakładce "Dokumenty" nadal wszystkie dokumenty mają "Dane poprawne"
- powrót do listy
- podgląd wykonanego importu
- w zakładce "dokumenty" kolumna pokazuje zielone i żółte ikonki
Przy wykonywaniu tego samego importu kolejny raz działa prawidłowo. Być może jest to związane z uruchamianiem walidacji w drugiej fazie, "po wczytaniu" danych do import storage.
Wyświetlanie różnej ilości dokumentów w oknie podglądu po uruchomieniu importu¶
Import w trybie "Nadpisz wszystko" do bazy DML.
- Brak dokumentów pomimo zaimportowania wielu dokumentów
- uruchomić import springer-20100702-005aa_light.zip
- pojawia się okno szczegółów importu
- w zakładce dokumenty tabelka jest pusta
- klikanie odśwież nie pokazuje nowych dokumentów nawet, gdy import się zakończy
- po zakończeniu importu i wejściu w szczegóły z poziomu listy importów, w zakładce dokumenty pojawia się 59 dokumentów
- Wszystkie dokumenty widoczne OK
- przy imporcie pliku archive.zip dokumenty widać od razu
- Różne ilości dokumentów
- uruchom import springer_sample.zip (z załącznika)
- pojawia się okienko szczegółów, widać 17 dokumentów (wszystkie na zielono, później część zmienia się na żółto jak w błędzie powyżej)
- przejść do listy importów
- uruchomić import elsevier-20120402-00001.zip (bez tego kroku powtórzenie importu springer_sample.zip wyświetla dokumenty prawidłowo)
- przejść do listy importów
- ponownie uruchomić import springer_sample.zip (z załącznika)
- pojawia się okienko szczegółów, w zakładce dokumenty pojawia się mniejsza ilość dokumentów niż faktycznie zaimportowano ("losowa" mniejsza od 17)
- kliknięcie odśwież nie pomaga, dopiero wejście z listy importów wyświetla prawidłową ilość i statusy zaimportowanych dokumentów
Odporność na błędy w importowanych plikach¶
Podczas importu springer-20100709-00001.zip (załącznik) dostajemy wyjątek (brak deklarowanego załącznika?):¶
DocumentImportMerger - 69 linijka get() bez isPresent().
java.util.NoSuchElementException: No value present at java.util.Optional.get(Optional.java:135) at pl.edu.icm.jupiter.services.imports.DocumentImportMerger.lambda$findAttachment$0(DocumentImportMerger.java:69) at pl.edu.icm.jupiter.services.imports.DocumentImportMerger.buildAttachment(DocumentImportMerger.java:63) at pl.edu.icm.jupiter.services.imports.DocumentImportMerger.lambda$onImportMergeRequestEvent$2(DocumentImportMerger.java:95) at pl.edu.icm.jupiter.integration.api.util.YContentUtils.processContentFiles(YContentUtils.java:40) at pl.edu.icm.jupiter.services.imports.DocumentImportMerger.onImportMergeRequestEvent(DocumentImportMerger.java:94) at pl.edu.icm.jupiter.services.imports.DocumentImportMerger$$FastClassBySpringCGLIB$$1a13a154.invoke(<generated>)
Powtórzone id w paczce (załącznik test-pack.zip) - to raczej prawidłowe zachowanie, ale ku pamięci wrzucam.¶
Leci sql constraint violation:
org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:259) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:225) at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:540) Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:112) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:178) at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:45) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3013) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3513) at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:89) Caused by: org.postgresql.util.PSQLException: BŁĄD: podwójna wartość klucza narusza ograniczenie unikalności "jupiter_imported_document_idx" Szczegóły: Klucz (import_id, identifier)=(24, bwmeta1.element.i075) już istnieje. at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2477) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2190) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:300) at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:428)
Drobiazgi z UI¶
- literówka na przycisku błędów w szczegółach importu - Błedy -> Błędy (brak ogonka przy e), tak samo w tytule okienka podglądu błędów
- przy węższym ekranie w tabelce historii importów wartości w kolumnach: typ, status, data początku, data zakończenia są obcięte i nie da się ich odczytać. Potrzebny atrybut "title", żeby pokazać cały napis po najechaniu kursorem
UI być może do osobnych tasków.¶
Pasek filtra importów i przyciski "zaimportuj", "odśwież" nie są odporne na zmianę szerokości okienka przeglądarki. Kłopot pojawia się przy laptopie z ekranem 1366x768.¶
- wchodzimy w historię importów
- zmniejszamy szerokość okienka przeglądarki - pasek filtrowania znika za prawą krawędzią ramki, przy ekranie laptopowym 1366x768 przyciski filtra wyjeżdżają na bok ramki
- jeżeli przyciski/kółka "zaimportuj", "odśwież" znajdą się np. nad polem filtra "Nazwa użytkownika", to klikanie działa tylko w ich górnej części - i tu znowu na ekranie 1366x768 dolna połowa przycisku "zaimportuj" nie reaguje na klikanie
Paginacja, filtr wyników importu - nieprawidłowe wyświetlanie po zmianie filtrowania po "Poprawność danych"¶
Może dotyczyć innych paginacji z filtrowaniem.
- zaimportować elsevier-20120402-00001.zip
- wejść w szczegóły importu, zakładka dokumenty
- filtrować po "ostrzeżeniach"
- przejść na 3 stronę wynikół
- filtrować po "OK"
- pojawia się strona "brak elementów do wyświetlenia", 25 wszystkich.
#7 Updated by Jarosław Bąbel over 7 years ago
Takie jest założenie - walidacja ma się zatrzymywać po pierwszym wykrytym błędzie.Walidacja kończy się na pierwszym błędzie, ElementValidatorManager uruchamia kolejno walidatory z listy. Pierwszy wykryty błąd walidacji rzuca wyjątek i zatrzymuje uruchamianie pozostałych walidatorów.
To samo dzieje się dla walidacji przy zapisie dokumentów w DocumentValidatorManager (dotyczy #1850)
#8 Updated by Łukasz Waśkiewicz over 7 years ago
- Copied to Błąd #1874: filtrowanie moze wyświetlać "Brek elementów" jeśli są added
#9 Updated by Łukasz Waśkiewicz over 7 years ago
- Copied to Błąd #1875: nie działa kasowanie dokumentów w workflow.FULL added
#10 Updated by Łukasz Waśkiewicz over 7 years ago
- Copied to Zadanie #1873: przejrzeć aplikację na rozdzielczości 1366 added
#11 Updated by Łukasz Waśkiewicz over 7 years ago
- Status changed from Odpowiedź to Testowanie
- Assignee changed from Łukasz Waśkiewicz to Jarosław Bąbel
kasowanie dokumentów jest niezależne od importu, wydzielone do innego taska
- zakładka dokumenty widoczna po zakończeniu importu
- błąd braku pliku w paczek -> dodany odpowiedni walidator
- duplikacja id, zostawione bez zmian
- literówki poprawione
- wyświetlanie w 1366 wydzielone do innego taska, bo problemy dotyczą całego systemu (przyciski dodaj , odśwież, filtrowanie, kolumny w tabelach)
- filtrowanie na dalekich stronach -> wydzielone do innego taska bo dotyczy całego systemu
#12 Updated by Jarosław Bąbel about 7 years ago
- Status changed from Testowanie to Odpowiedź
- Assignee changed from Jarosław Bąbel to Łukasz Waśkiewicz
- Tester deleted (
Michał Komar)
Poniższy błąd nadal występuje.
Blokowanie przycisku "śmietnik/usuń". Po wykonaniu importu i/lub po wejściu w podgląd pojedynczego importu przestaje działać przycisk usuń dla zasobu i psuje się okno podglądu błędów importu¶
- uruchomić od nowa przeglądarkę i zalogować się do jupitera
- sprawdzić dla porównania na dowolnym zasobie działanie przycisku "usuń" - powinno pojawić się okienko "usuń tak/nie"
- wyświetlić okno szczegółów importu
- przejść w aplikacji do zakładki "jupiter"
- wybrać w drzewie dowolny zasób
- wcisnąć przycisk "usuń" - brak reakcji, okienko "usuń tak/nie" nie pojawia się
- dla importu z błędem (np. w załączniku plik springer-20100709-00001.zip):
- wejść w podgląd importu, wyświetlić okienko z podglądem wyjątku (przycisk błąd)
- kliknąć ok
- okienko znika, ale ekran pozostaje szary i aplikacja nie reaguje na klikanie
- przycisk back przeglądarki przywraca działanie aplikacji, ale przycisk usuń zasób nadal nie działa.
Do przywrócenia prawidłowego działania trzeba zrestartować przeglądarkę, samo przelogowanie nie pomaga.
#13 Updated by Łukasz Waśkiewicz about 7 years ago
- Status changed from Odpowiedź to Testowanie
- Assignee changed from Łukasz Waśkiewicz to Jarosław Bąbel
poprawione ostylowanie okien i zbędny dialog-outlet
#14 Updated by Jarosław Bąbel about 7 years ago
- Status changed from Testowanie to Rozwiązany
- Assignee changed from Jarosław Bąbel to Łukasz Waśkiewicz
#15 Updated by Łukasz Waśkiewicz about 7 years ago
- Status changed from Rozwiązany to Zamknięty
- Assignee changed from Łukasz Waśkiewicz to Michał Komar