Zadanie #1836

Zadanie #1802: Opracowanie integracji z OJS

dodanie sprawdzania poprawności danych do importu

Added by Łukasz Waśkiewicz over 6 years ago. Updated over 6 years ago.

Status:ZamkniętyStart date:2017-09-25
Priority:NormalnyDue date:
Assignee:Michał Komar% Done:

100%

Category:backend
Target version:0.3
Developer:Łukasz Waśkiewicz Tester:Jarosław Bąbel

springer_sample.zip (11.2 KB) Jarosław Bąbel, 2017-11-17 10:37

springer-20100709-00001.zip (1.22 MB) Jarosław Bąbel, 2017-11-17 10:38

test-pack.zip (7.62 KB) Jarosław Bąbel, 2017-11-17 10:45


Related issues

Copied to Jupiter - Błąd #1874: filtrowanie moze wyświetlać "Brek elementów" jeśli są Zamknięty 2017-11-22
Copied to Jupiter - Błąd #1875: nie działa kasowanie dokumentów w workflow.FULL Zamknięty 2017-11-22
Copied to Jupiter - Zadanie #1873: przejrzeć aplikację na rozdzielczości 1366 Zamknięty 2017-11-22

Associated revisions

Revision 3cdd22f7
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 walidacja danychimportu

Revision 99cc86f3
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 walidacja danych importu, sprawdzanie w storage

Revision 5a3354d7
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 walidacja elementu z importu, wyświetlanie błedów

Revision eb46944d
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 zmiany w walidacji dokumentów

Revision 1ad901fc
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 sprawdzanie obecności zadeklarowanych plików

sprawdzanie czy w wszystkie lokalne contenty zadeklarowane w bwmeta są
dostarczone

Revision 6f9a8704
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 odświeżanie dokumentów

Revision cc1a591b
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 wyświetlanie dokumentów dla importu, tłumaczenia

Revision 77ef1167
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 tłumaczenia

Revision 63325f90
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 poprawienie importu danych

zapis do poprawnego DocumentStorageSerwis
poprawa walidacji
wpłaszczanie YContentEntry
sprawdzenie dataset dokumentu vs dataset importu

Revision 3aa878e0
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 poprawienie importu danych, test dla importu do infony

Revision 8239c764
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 umożliwienie kasowania niewalidujących się dokumentów,
poprawa importu do infony

Revision cfe6f21e
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 poprawa testów

Revision 53f094b8
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 poprawa stylowania okien dialogowych

Revision 7b099da8
Added by Łukasz Waśkiewicz over 6 years ago

refs #1836 poprawa stylowania okien dialogowych

History

#1 Updated by Łukasz Waśkiewicz over 6 years ago

  • % Done changed from 0 to 90

#2 Updated by Łukasz Waśkiewicz over 6 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 6 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 6 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 6 years ago

  • Assignee changed from Michał Komar to Jarosław Bąbel

#6 Updated by Jarosław Bąbel over 6 years ago

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

  1. uruchomić od nowa przeglądarkę i zalogować się do jupitera
  2. sprawdzić dla porównania na dowolnym zasobie działanie przycisku "usuń" - powinno pojawić się okienko "usuń tak/nie"
  3. 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)
  4. przejść w aplikacji do zakładki "jupiter"
  5. wybrać w drzewie dowolny zasób
  6. wcisnąć przycisk "usuń" - brak reakcji, okienko "usuń tak/nie" nie pojawia się
  7. 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
  8. wejść w podgląd importu z błędami, wyświetlić okienko z podglądem wyjątku (przycisk błąd)
  9. kliknąć ok
  10. okienko znika, ale ekran pozostaje szary i aplikacja nie reaguje na klikanie
  11. 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

  1. zaimportować plik bwmeta bez nadpisywania, do bazy dml np. jupiter/jupiter-services/src/test/resources/import/bwmeta/sampleBwmeta.xml
  2. wylogować i uruchomić od nowa przeglądarkę (obejście problemu z blokowaniem przycisku usuń opisanego wyżej)
  3. wybrać zaimportowany zasób
  4. kliknąć usuń i "tak"
  5. 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.

  1. uruchomić import springer-sample.zip
  2. widać status importu "Przetwarzanie"
  3. w zakładce "dokumenty" pojawiają się importowane dokumenty, w kolumnie "Akcje" wszystkie ikonki zielone "Dane poprawne"
  4. po chwili klikamy odśwież
  5. status importu "Zakończony"
  6. w zakładce "Dokumenty" nadal wszystkie dokumenty mają "Dane poprawne"
  7. powrót do listy
  8. podgląd wykonanego importu
  9. 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
    1. uruchomić import springer-20100702-005aa_light.zip
    2. pojawia się okno szczegółów importu
    3. w zakładce dokumenty tabelka jest pusta
    4. klikanie odśwież nie pokazuje nowych dokumentów nawet, gdy import się zakończy
    5. 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
    1. przy imporcie pliku archive.zip dokumenty widać od razu
  • Różne ilości dokumentów
    1. uruchom import springer_sample.zip (z załącznika)
    2. 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)
    3. przejść do listy importów
    4. uruchomić import elsevier-20120402-00001.zip (bez tego kroku powtórzenie importu springer_sample.zip wyświetla dokumenty prawidłowo)
    5. przejść do listy importów
    6. ponownie uruchomić import springer_sample.zip (z załącznika)
    7. pojawia się okienko szczegółów, w zakładce dokumenty pojawia się mniejsza ilość dokumentów niż faktycznie zaimportowano ("losowa" mniejsza od 17)
    8. 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.

  1. wchodzimy w historię importów
  2. 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
  1. 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.

  1. zaimportować elsevier-20120402-00001.zip
  2. wejść w szczegóły importu, zakładka dokumenty
  3. filtrować po "ostrzeżeniach"
  4. przejść na 3 stronę wynikół
  5. filtrować po "OK"
  6. pojawia się strona "brak elementów do wyświetlenia", 25 wszystkich.

#7 Updated by Jarosław Bąbel over 6 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 6 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 6 years ago

  • Copied to Błąd #1875: nie działa kasowanie dokumentów w workflow.FULL added

#10 Updated by Łukasz Waśkiewicz over 6 years ago

  • Copied to Zadanie #1873: przejrzeć aplikację na rozdzielczości 1366 added

#11 Updated by Łukasz Waśkiewicz over 6 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 over 6 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

  1. uruchomić od nowa przeglądarkę i zalogować się do jupitera
  2. sprawdzić dla porównania na dowolnym zasobie działanie przycisku "usuń" - powinno pojawić się okienko "usuń tak/nie"
  3. wyświetlić okno szczegółów importu
  4. przejść w aplikacji do zakładki "jupiter"
  5. wybrać w drzewie dowolny zasób
  6. wcisnąć przycisk "usuń" - brak reakcji, okienko "usuń tak/nie" nie pojawia się
  7. dla importu z błędem (np. w załączniku plik springer-20100709-00001.zip):
    1. wejść w podgląd importu, wyświetlić okienko z podglądem wyjątku (przycisk błąd)
    2. kliknąć ok
    3. okienko znika, ale ekran pozostaje szary i aplikacja nie reaguje na klikanie
    4. 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 over 6 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 over 6 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 over 6 years ago

  • Status changed from Rozwiązany to Zamknięty
  • Assignee changed from Łukasz Waśkiewicz to Michał Komar

Also available in: Atom PDF