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

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

@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