Giter VIP home page Giter VIP logo

telemaniacs's Introduction

Pre-filled users
---------------
* Regular user - username: [email protected], password: pepa
* Administrator - username: [email protected], password: admin

REST API
--------
Can be tested in regular way

Example:
* List of all channels - http://localhost:8080/pa165/rest/channel (GET method)
* Details of a single channel - http://localhost:8080/pa165/rest/channel/{ID} (GET method, you can try ID 1)

Full specification available at https://github.com/cyanteam/telemaniacs/wiki/REST-API

telemaniacs's People

Contributors

kubmir avatar lemichael avatar xmilota avatar xtinkova avatar

Watchers

 avatar

telemaniacs's Issues

Transmission service - business logic

  • getOccurrences - gets all occurrences of the transmission, incl. occurrences in history
  • getUpcomingOccurrences - gets all upcoming occurrences of the transmission
  • getVotings - gets all votings for the transmission
  • getAverageVoting - gets average numeric voting for the transmission

Schedule façade + DTO

Bude obsahovat metodu getSchedule, která zabaluje pouze volání služby
Dále bude obsahovat metodu getUserSchedule, která spojí služby UserProfileService a ScheduleService, získá oblíbené kanály uživatele a vrací pro něj TV program jeho oblíbených kanálů
Naopak nebude obsahovat metodu getEndDate

Voting entity

Create a voting entity according to class diagram

User service - business logic

  • authenticate - vezme uživatelské jméno, password hash a vrací boolean, zda je kombinace platná, nebo ne
  • isAdmin - vrací boolean, jestli je uživatel administrátor nebo ne

Transmission entity+DAO after review

  • Enum ageAvailability by ještě mohl obsahovat položku UNRESTRICTED (null object pattern)
  • @table(name = "Transmissions")
  • Typo: lenght -> length
  • CRUD update by měl ověřovat parametr user na null, při volání transmission.getId() by jinak mohlo dojít k NullPointerEx
  • CRUD update může vracet void (aby to bylo jednotné s create)
  • ConstraintViolationException, IllegalArgumentException jsou unchecked exceptions, není třeba uvádět throws (zjednoduší se i kontrakt), stačí očekávané výjimky uvést do JavaDocu
  • Kolekce by se měly vracet read-only

Update

  • Přidal jsem do Channel vztah k TransmissionOccurrence

Nízká priorita

  • Sjednotit JavaDoc: Created by -> @author
  • Do JavaDocu by bylo dobré doplnit vždy alespoň účel třídy/enumu

User entity+DAO after review

  • CRUD update by měl ověřovat parametr user na null, při volání user.getId() by jinak mohlo dojít k NullPointerEx
  • CRUD update může vracet void (aby to bylo jednotné s create)
  • ConstraintViolationException, IllegalArgumentException jsou unchecked exceptions, není třeba uvádět throws (zjednoduší se i kontrakt), stačí očekávané výjimky uvést do JavaDocu
  • Kolekce by se měly vracet read-only

Nízká priorita

  • Neměl by mít passwordHash anotaci @column(nullable = false)?
  • U atributu age by šla použít validace na @min
  • Regulární výraz pro e-mail není úplně správný
  • Konstruktory entity by šly vyfaktorovat do společné metody (DRY)
  • Pojmenování favouriteProgram mixuje US a UK EN, bylo by dobré sjednotit, nebo pojmenovat favouriteTransmissions (více výstižné)

TransmissionOccurrence entity + DAO after review II

  • Episode.equals()

    • napr. podmienka 'if ((name == null && episode.getName() != null)
      || !name.equals(episode.getName()))' - ak sa this.name == null a episode.getName() != null tak ti to spadne na NPE
    • to sa tyka vsetkych podmienok v tej metode
  • low priority:
    Episode - best practice je pristupovat k fieldom triedy cez getry, preto by som upravil equals ,hashcode, toString

  • velmi male detaily:

    • Episode.equals() - 'if (other == null || !(other instanceof Episode)) return false;' - instanceof počítá s null hodnotou, preto je prva podmienka zbytočná
    • EpisodeDaoImpl.update() - chekovat episode.getId() != null ?
  • len otázky:

    • Episode.isRerun - ako to planuješ využívat? myslím že tak ako to je navrhnuté bude pre každé vysielanie nová Episode a nenapadá ma, k čomu by sa tento parameter mohol využit

Channel entity+DAO after review

  • Implementace equals: (1) mělo by se použít instanceof místo getClass() != o.getClass(), (2) místo Objects.equals(getName(), channel.getName()) lze použít name.equals(...)
  • Kolekce by se měly vracet read-only
  • JoinColumn u episodes asi nebude potřeba (?)
  • CRUD update: zkontrolovat existenci editované položky v databázi

Nízká priorita

  • Do JavaDocu by bylo dobré doplnit vždy alespoň účel třídy/enumu
  • Jmenné konvence: @table(name = "Channels")

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.