/*******************************************************************************
* Copyright (c) 2012-2015 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.api.local;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import org.eclipse.che.api.account.server.dao.Account;
import org.eclipse.che.api.account.server.dao.AccountDao;
import org.eclipse.che.api.account.server.dao.Subscription;
import org.eclipse.che.api.auth.AuthenticationDao;
import org.eclipse.che.api.factory.FactoryStore;
import org.eclipse.che.api.user.server.TokenValidator;
import org.eclipse.che.api.user.server.dao.PreferenceDao;
import org.eclipse.che.api.user.server.dao.User;
import org.eclipse.che.api.user.server.dao.UserDao;
import org.eclipse.che.api.user.server.dao.UserProfileDao;
import org.eclipse.che.api.workspace.server.dao.Member;
import org.eclipse.che.api.workspace.server.dao.MemberDao;
import org.eclipse.che.api.workspace.server.dao.Workspace;
import org.eclipse.che.api.workspace.server.dao.WorkspaceDao;
import org.eclipse.che.inject.DynaModule;
import javax.inject.Named;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@DynaModule
public class LocalInfrastructureModule extends AbstractModule {
@Override
protected void configure() {
bind(UserDao.class).to(LocalUserDaoImpl.class);
bind(WorkspaceDao.class).to(LocalWorkspaceDaoImpl.class);
bind(UserProfileDao.class).to(LocalProfileDaoImpl.class);
bind(PreferenceDao.class).to(LocalPreferenceDaoImpl.class);
bind(MemberDao.class).to(LocalMemberDaoImpl.class);
bind(AccountDao.class).to(LocalAccountDaoImpl.class);
bind(AuthenticationDao.class).to(LocalAuthenticationDaoImpl.class);
bind(FactoryStore.class).to(InMemoryFactoryStore.class);
bind(TokenValidator.class).to(DummyTokenValidator.class);
}
//~~~ AccountDao
@Provides
@Named("codenvy.local.infrastructure.accounts")
Set<Account> accounts() {
final Set<Account> accounts = new HashSet<>(1);
accounts.add(new Account().withName("codenvy_account").withId("account1234567890"));
return accounts;
}
@Provides
@Named("codenvy.local.infrastructure.account.members")
Set<org.eclipse.che.api.account.server.dao.Member> accountMembers() {
final Set<org.eclipse.che.api.account.server.dao.Member> members = new HashSet<>(1);
final org.eclipse.che.api.account.server.dao.Member member =
new org.eclipse.che.api.account.server.dao.Member().withUserId("codenvy").withAccountId("account1234567890");
Collections.addAll(member.getRoles(), "account/owner", "account/member");
members.add(member);
return members;
}
@Provides
@Named("codenvy.local.infrastructure.account.subscriptions")
Set<Subscription> subscriptions() {
return Collections.emptySet();
}
// AccountDao ~~~
// ~~~ WorkspaceDao
@Provides
@Named("codenvy.local.infrastructure.workspaces")
Set<Workspace> workspaces() {
final Set<Workspace> workspaces = new HashSet<>(1);
workspaces.add(new Workspace().withId("1q2w3e").withName("default").withTemporary(false));
return workspaces;
}
// WorkspaceDao ~~~
// ~~~ MemberDao
@Provides
@Named("codenvy.local.infrastructure.workspace.members")
Set<Member> workspaceMembers() {
final Set<Member> members = new HashSet<>(1);
final Member member =
new Member().withUserId("codenvy").withWorkspaceId("1q2w3e");
Collections.addAll(member.getRoles(), "workspace/admin", "workspace/developer");
members.add(member);
return members;
}
// MemberDao ~~~
// ~~~ UserDao
@Provides
@Named("codenvy.local.infrastructure.users")
Set<User> users() {
final Set<User> users = new HashSet<>(1);
final User user = new User().withId("codenvy")
.withEmail("codenvy@codenvy.com")
.withPassword("secret");
user.getAliases().add("codenvy@codenvy.com");
users.add(user);
return users;
}
// UserDao ~~~
}