HTML

JIRA DEV

Az Atlassian termékek felhasználási területei, paraméterezésük és alkalmazásfejlesztési lehetőségeik. Esettanulmány és érdekességek a JIRA-ról, Confluence-ről, GreenHopper-ről és a hozzájuk kapcsolódó plugin fejlesztésről, egy kevés Scrum módszertannal fűszerezve.

Kérdéseket és észrevételeidet a lacimol kukatc gmail pont com címre tudod elküldeni.

Üdv:
lacimol ()

Legutóbbi bejegyzések

Nincs megjeleníthető elem

Címkék

JiraDevTutor

Nincs megjeleníthető elem

Friss topikok

15.
július

Jira plugin fejlesztés 6.

CRUD műveletek |  lacimol

Mi is az a CRUD?

A CRUD egy mozaikszó az alapvető adattárolási műveletekre: Create, Retrieve (vagy Read), Update és Delete. Azaz létrehozás, lekérdezés, módosítás és törlés.

Hol tartunk most?

A legutóbbi plugin fejlesztés posztban (JIRA Active Objects) létrehoztam egy rekordot, majd  a plugin megjelenítette a többivel együtt egy listában, mindezt egy oldalon. Így a CRUD műveletekből a C-t és az R-t már megnéztük. A JIRA dokumentációk közül egy CRUD tutor leírás és egy elérhető SVN plugin kód együttese jól mutatja az adatbázis, a megjelenítés és a háttérműveletek kapcsolatát. Ezek ötvözetével folytatom a ToDo entitásra épülő miniprojektet.

CRUD Action

A JIRA által létrehozott CRUD példa jól mutatja a lehetőségeket, de szervletet használ, így a felelősségi szintek nem válnak szét teljesen. A két példa összefésülésével a következő csomagszintű bontást használom: action (request-ek kezelése), model (adatszerkezet), service (DAO műveletek összefogása). A megjelenítéshez szükséges velocity fájlok továbbra is a templates alatt vannak.

crud_package.png

Az Action-ök a TodoAction-ből származnak, ahol a TodoService-en keresztül mentjük és kapjuk vissza az adatokat. A TodoAction végzi az alapvető és ismétlődő validálási folyamatokat is.

TodoAction.java részlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class TodoAction extends JiraWebActionSupport {
 
    protected final static String VIEW_PAGE = "ViewTodoAction.jspa";
 
    protected final TodoService todoService;
 
    public TodoAction(TodoService todoService) {
        this.todoService = checkNotNull(todoService);
    }
 
    protected void doKeyValidation() {
        log.debug("Entering doKeyValidation");
        final String id = request.getParameter("key");
        if (id == null || id.isEmpty()) {
            //?key=
            addErrorMessage(getText("todo.form.id.missing"));
        } else {
            try {
                todo = this.todoService.findById(Integer.valueOf(id));
                todo.getDescription();
            } catch (NumberFormatException e) {
                //?key=aaa
                addErrorMessage(getText("todo.form.id.wrong.format"));
            } catch (NullPointerException e) {
                //?key=111
                addErrorMessage(getText("todo.form.not.found"));
            }
 
        }
    }
 
    protected void doFieldValidation() {
        final String description = request.getParameter("description");
        if (description == null || description.isEmpty()) {
            addErrorMessage(getText("todo.form.description.missing"));
        }
        int maxLength = 50;
        if (description != null && description.length() > maxLength) {
            addErrorMessage(getText("todo.form.description.too.long"));
        }
    }
 
    protected Todo todo;
    public Todo getTodo() {
        return todo;
    }
 
}

TodoService.java részlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Transactional
public interface TodoService {
 
    Todo create(String description);
 
    List<todo> findAll();
 
    List<todo> find(String description);
 
    Todo findById(int id);
 
    void delete(int id);
 
    void addComment(Todo todo, String text);
 
}

A végeredmény

A fejlesztés eredménye egy kiindulási oldal (lista), ahonnan indíthatunk egy keresést a description mező teljes egyezésére (R), törölhetjük (D) vagy szerkeszthetjük (U) az eddig felvitt rekordokat vagy újat hozhatunk létre (C).

ViewTodoAction_list_2.png

A fenti módosítások letölthetők SVN-en keresztül és becsomagolva a blog GoogleCode oldaláról a JiraDevTutor projektből.

Címkék: crud webwork

komment

süti beállítások módosítása