4. Message Driven Bean
@MessageDriven(activationConfig =
{ @ActivationConfigProperty(propertyName = "dir", propertyValue = "/tmp") })
public class FileWatchingMDB implements FileSystemWatcher {
@Inject
private Event<FileEvent> fileEvent;
@Created(".*.txt")
public void onNewTextFile(final File f) {
fileEvent.fire(new FileEvent(CREATED, f));
}
@RunWith(Arquillian.class)
public class FileWatcherTest {
private static FileEvent observedFileEvent;
public void notifyFileEvent(@Observes FileEvent fileEvent) {
observedFileEvent = fileEvent;
}
Fájl illetve mappa tartalmát figyelő példa osztály
és a hozzátartozó teszt kód
5. Entity öröklődés
@Entity
public abstract class Employee {
@Id
protected Integer employeeId;
@Entity
public class FullTimeEmployee extends Employee {
protected Integer salary;
@Entity
public class PartTimeEmployee extends Employee {
protected Float hourlyWage;
Employee szerepelhet lekérdezésben:
például entityManager.find(Employee.class, id);
Az entity osztályok leszármazhatnak más entity osztályokból és
közönséges osztályokból
Az entity osztályokból leszármazhatnak más entity osztályok és
közönséges osztályok is
Azt entity osztályok lehetnek absztraktak és konkrétak is
6. Mapped entity öröklődés
@MappedSuperclass
public abstract class Employee {
@Id
protected Integer employeeId;
@Entity
public class FullTimeEmployee extends Employee {
protected Integer salary;
@Entity
public class PartTimeEmployee extends Employee {
protected Float hourlyWage;
Employee MappedSuperclass nem szerepelhet lekérdezésben és nem
használhatóak más EntityManager vagy Query metódusokkal sem
Nem használhatóak targetEntity-ként @OneToMany, @ManyToOne,
@OneToOne és @ManyToMany esetében
Az entity osztályok leszármazhatnak MappedSuperclass osztályokból
A javax.persistence.Inheritance annotációval meghatározható az
adatbázisban tárolás: SINGLE_TABLE, JOINED, TABLE_PER_CLASS
7. 1. Beadandó feladat
Határidő: 2016. 10. 12.
Egyszerű listakezelő létrehozása egyetlen terem foglalásának
kezelésére
A lista kezdési idő szerint legyen rendezve
Allocation Entity class létrehozása a következő mezőkkel
String subject - a teremfoglalás tárgya
String email - annak a címe, aki lefoglalta
Date start - foglalás kezdete
Date end - foglalás vége
Mindegyik mező kötelező
Github-on kell beadni a beadandó feladatokat
7
8. github.com
Sign up gomb jobb felül
https://github.com/jseteny/tigra-jee-kurzus, Fork gomb
IntelliJ-ben Close Project és Check out from Version Control, Github
Az új, fork-olás utáni címet adjuk meg neki és egy helyi mappát
Would you like to create … -re No-val válaszoljunk
Terminálban gittel nevezzük át a most keletkezett 1608 mappát:
git mv 1608 resource_allocator
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
IntelliJ-ben nyissuk meg a resource_allocator mappát
Bal oldalt lent: Frameworks detected: Configure, OK
Unregistered VCS root detected, klikk a pici ablak jobb alsó sarkába és Add root
Fontos: Ctrl + K, Reformat code és Optimize imports majd Commit Message utána
Commit gomb. Code Analisys ablakon Commit
Fontos: Ctrl + Shift + K, Push - evvel kerül föl a változtatás a github-ra és így folytatható
a munka egy másik számítógépen illetve egy másik programozó által
8
9. Segítség a feladathoz
Az előző lapon leírt módon a 1608-as projektből kell kiindulni
Átalakítani a szükséges részeket
Majd törölni a szükségtelenné váltakat
Amikor a megfelelő mezőket a megfelelő annotációkkal
létrehoztad a get/set metódusokat az alábbi módon készítsd
Ctr + Shift + A, Generate …
Getter and Setter, Ctrl + A, Enter
Ctr + Shift + A, Refactor This …, Rename
Ctr + Shift + A, Find in Path és Replace in Path
9