Package it.unipd.netmus.server

Source Code of it.unipd.netmus.server.SongServiceImpl

package it.unipd.netmus.server;

import it.unipd.netmus.client.service.SongService;
import it.unipd.netmus.server.persistent.Album;
import it.unipd.netmus.server.persistent.MusicLibrary;
import it.unipd.netmus.server.persistent.Song;
import it.unipd.netmus.server.persistent.UserAccount;
import it.unipd.netmus.server.utils.Utils;
import it.unipd.netmus.shared.SongDTO;
import it.unipd.netmus.shared.SongSummaryDTO;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

/**
* Nome: SongServiceImpl.java
* Autore: VT.G
* Licenza: GNU GPL v3
* Data Creazione: 13 Febbraio 2011
*/

@SuppressWarnings("serial")
public class SongServiceImpl extends RemoteServiceServlet implements
        SongService {

    /**
     * Rimuove la canzone dalla libreria dell’utente. Le canzoni rimosse
     * rimangono nel Datastore poiché potrebbero contenere informazioni utili
     * per inserimenti futuri.
     */
    @Override
    public boolean deleteSong(String user, String artist, String title,
            String album) {

        UserAccount useraccount = UserAccount.load(user);
        return useraccount.getMusicLibrary().removeSong(artist, title, album);

    }

    /**
     * Questo metodo permette di assegnare una nuova chiave primaria ad una
     * canzone variando almeno uno tra gli attributi title, artist e album
     * trasformandola di fatto in un altro brano nel Datastore. Sarà possibile
     * invocare questo metodo solamente su canzoni le cui informazioni che
     * formano la chiave primaria sono incomplete.
     */
    @Override
    public boolean editSong(String user, String artist, String title,
            String album) {
        // TODO Auto-generated method stub
        return false;
    }

    /**
     * Carica dal Datastore o da Last.fm la copertina relativa al brano in
     * input. Per fare ciò utilizza la classe di persistenza Album.
     */
    @Override
    public synchronized String getCoverImage(SongSummaryDTO song_summary_dto) {

        return Album.getAlbumCoverLastFm(song_summary_dto.getAlbum(),
                song_summary_dto.getArtist());

    }

    /**
     * Metodo chiamato quando si vogliono avere tutte le info di una certa
     * canzone. Cerco il video su youtube e lo metto nel DTO... ogni volta
     * faccio una ricerca su youtube (per Copyright legati al Country)
     */
    @Override
    public synchronized SongDTO getSongDTO(SongSummaryDTO song_summary_dto) {

        Song song = Song.loadFromDTO(song_summary_dto);

        SongDTO song_dto = null;
        if (song != null) {
            song_dto = song.toSongDTO();
        } else {
            return new SongDTO();
        }

        String ip = getThreadLocalRequest().getRemoteAddr();
        if (ip.equals("127.0.0.1"))
            ip = "";

        song_dto.setAlbumCover(Album.getAlbumCoverLastFm(song_dto.getAlbum(),
                song_dto.getArtist()));
        song_dto.setYoutubeCode(Utils.getYouTubeCode(song.getTitle() + " "
                + song.getArtist(), ip));

        return song_dto;
    }

    /**
     * Assegna la votazione compresa tra 1 e 5 alla canzone specificata dal
     * SongSummaryDTO. Dopo aver aggiornato i campi relativi di Song nel
     * Datastore ritorna il valore double che rappresenta la nuova media tra
     * tutte le votazione effettuate su quella canzone.
     */
    @Override
    public double rateSong(String user, SongSummaryDTO song, int rating) {
        UserAccount userAccount = UserAccount.load(user);
        MusicLibrary library = userAccount.getMusicLibrary();
        library.rateSong(Song.loadFromDTO(song), rating);
        return Song.loadFromDTO(song).getRatingDouble();
    }

}
TOP

Related Classes of it.unipd.netmus.server.SongServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.