Package org.fluxtream.core.services.impl

Source Code of org.fluxtream.core.services.impl.PartnerAppsServiceImpl

package org.fluxtream.core.services.impl;

import org.fluxtream.core.domain.oauth2.Application;
import org.fluxtream.core.services.PartnerAppsService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import java.util.List;

/**
* User: candide
* Date: 16/04/14
* Time: 10:04
*/
@Service
@Transactional(readOnly=true)
public class PartnerAppsServiceImpl implements PartnerAppsService {

    @PersistenceContext
    EntityManager em;

    @Override
    @Transactional(readOnly=false)
    public void createApplication(final long guestId, String organization, final String name, final String description, final String website) {
        Application app = new Application(guestId, organization, name, description, website);
        em.persist(app);
    }

    @Override
    @Transactional(readOnly=false)
    public void deleteApplication(final long guestId, final String uid) {
        final Application app = getApplication(guestId, uid);
        if (app!=null)
            em.remove(app);
    }

    @Override
    public List<Application> getApplications(final long guestId) {
        final TypedQuery<Application> query = em.createQuery("SELECT app FROM Application app WHERE app.guestId=?", Application.class);
        query.setParameter(1, guestId);
        return query.getResultList();
    }

    @Override
    public Application getApplication(long guestId, String uid) {
        final TypedQuery<Application> query = em.createQuery("SELECT app FROM Application app WHERE app.uid=?", Application.class);
        query.setParameter(1, uid);
        if (query.getResultList().size()>0) {
            final Application app = query.getResultList().get(0);
            if (app.guestId!=guestId)
                throw new RuntimeException("Could not delete app: guestIds don't match");
            return app;
        }
        return null;
    }

    @Override
    public Application getApplication(String appSecret) {
        final TypedQuery<Application> query = em.createQuery("SELECT app FROM Application app WHERE app.sharedSecret=?", Application.class);
        query.setParameter(1, appSecret);
        if (query.getResultList().size()>0) {
            final Application app = query.getResultList().get(0);
            return app;
        }
        return null;
    }

    @Override
    @Transactional(readOnly=false)
    public void updateApplication(final long guestId, final String organization, final String uid, final String name, final String description, final String website) {
        final Application app = getApplication(guestId, uid);
        if (app!=null) {
            app.name = name;
            app.organization = organization;
            app.description = description;
            app.website = website;
            em.persist(app);
        }
    }

}
TOP

Related Classes of org.fluxtream.core.services.impl.PartnerAppsServiceImpl

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.