Package org.apache.openmeetings.web.util

Source Code of org.apache.openmeetings.web.util.OmUrlFragment

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License") +  you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.openmeetings.web.util;

import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LANDING_ZONE;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getLanguage;
import static org.apache.openmeetings.web.app.WebSession.getSid;
import static org.apache.openmeetings.web.user.profile.SettingsPanel.EDIT_PROFILE_TAB_ID;
import static org.apache.openmeetings.web.user.profile.SettingsPanel.MESSAGES_TAB_ID;

import java.io.Serializable;

import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
import org.apache.openmeetings.web.admin.backup.BackupPanel;
import org.apache.openmeetings.web.admin.configurations.ConfigsPanel;
import org.apache.openmeetings.web.admin.connection.ConnectionsPanel;
import org.apache.openmeetings.web.admin.groups.GroupsPanel;
import org.apache.openmeetings.web.admin.labels.LangPanel;
import org.apache.openmeetings.web.admin.ldaps.LdapsPanel;
import org.apache.openmeetings.web.admin.oauth.OAuthPanel;
import org.apache.openmeetings.web.admin.rooms.RoomsPanel;
import org.apache.openmeetings.web.admin.servers.ServersPanel;
import org.apache.openmeetings.web.admin.users.UsersPanel;
import org.apache.openmeetings.web.common.BasePanel;
import org.apache.openmeetings.web.user.calendar.CalendarPanel;
import org.apache.openmeetings.web.user.dashboard.OmDashboardPanel;
import org.apache.openmeetings.web.user.profile.SettingsPanel;
import org.apache.openmeetings.web.user.record.RecordingsPanel;
import org.apache.openmeetings.web.user.rooms.RoomPanel;
import org.apache.openmeetings.web.user.rooms.RoomsSelectorPanel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

public class OmUrlFragment implements Serializable {
  private static final long serialVersionUID = 7382435810352033914L;
  private AreaKeys area = AreaKeys.user;
  private String type = "";
  public static final String CHILD_ID = "child";
  public static final String TYPE_CALENDAR = "calendar";
  public static final String TYPE_DASHBOARD = "dashboard";
  public static final String TYPE_MESSAGES = "messages";
  public static final String TYPE_EDIT = "edit";
  public static final String TYPE_RECORDINGS = "record";
  public static final String TYPE_MY = "my";
  public static final String TYPE_GROUP = "group";
  public static final String TYPE_PUBLIC = "public";
  public static final String TYPE_USER = "user";
  public static final String TYPE_CONNECTION = "connection";
  public static final String TYPE_ROOM = "room";
  public static final String TYPE_CONFIG = "config";
  public static final String TYPE_LANG = "lang";
  public static final String TYPE_LDAP = "ldap";
  public static final String TYPE_BACKUP = "backup";
  public static final String TYPE_SERVER = "server";
  public static final String TYPE_OAUTH2 = "oauth2";
  public static final OmUrlFragment DASHBOARD = new OmUrlFragment(AreaKeys.user, TYPE_DASHBOARD);
  public static final OmUrlFragment PROFILE_EDIT = new OmUrlFragment(AreaKeys.profile, TYPE_EDIT);
  public static final OmUrlFragment PROFILE_MESSAGES = new OmUrlFragment(AreaKeys.profile, TYPE_MESSAGES);
  public static final OmUrlFragment CALENDAR = new OmUrlFragment(AreaKeys.user, TYPE_CALENDAR);
  public static final OmUrlFragment ROOMS_PUBLIC = new OmUrlFragment(AreaKeys.rooms, TYPE_PUBLIC);
 
  public enum AreaKeys {
    user
    , admin
    , profile
    , room
    , rooms
  }
 
  public enum MenuActions {
    dashboardModuleStartScreen
    , dashboardModuleCalendar
    , recordModule
    , conferenceModuleRoomList
    , eventModuleRoomList
    , moderatorModuleUser
    , moderatorModuleRoom
    , adminModuleUser
    , adminModuleConnections
    , adminModuleOrg
    , adminModuleRoom
    , adminModuleConfiguration
    , adminModuleLanguages
    , adminModuleLDAP
    , adminModuleBackup
    , adminModuleServers
    , adminModuleOAuth
  }
 
  public enum MenuParams {
    publicTabButton
    , privateTabButton
    , myTabButton
  }
 
  public static OmUrlFragment get() {
    String[] arr = getBean(ConfigurationDao.class).getConfValue(CONFIG_DEFAULT_LANDING_ZONE, String.class, "").split("/");
    if (arr != null && arr.length == 2) {
      try {
        return new OmUrlFragment(AreaKeys.valueOf(arr[0]), arr[1]);
      } catch (Exception e) {
        // no-op
      }
    }
    return DASHBOARD;
  }
 
  public OmUrlFragment(AreaKeys area, String type) {
    this.setArea(area);
    this.setType(type);
  }
 
  public OmUrlFragment(MenuActions action) {
    this(action, MenuParams.myTabButton);
  }
 
  public OmUrlFragment(MenuActions action, MenuParams params) {
    switch(action) {
      case dashboardModuleStartScreen:
        setArea(AreaKeys.user);
        setType(TYPE_DASHBOARD);
        break;
      case dashboardModuleCalendar:
        setArea(AreaKeys.user);
        setType(TYPE_CALENDAR);
        break;
      case recordModule:
        setArea(AreaKeys.user);
        setType(TYPE_RECORDINGS);
        break;
      case conferenceModuleRoomList:
        setArea(AreaKeys.rooms);
        switch (params) {
          case myTabButton:
            setType(TYPE_MY);
            break;
          case privateTabButton:
            setType(TYPE_GROUP);
            break;
          case publicTabButton:
            setType(TYPE_PUBLIC);
            break;
        }
        break;
      case eventModuleRoomList:
        break;
      case moderatorModuleUser:
        break;
      case moderatorModuleRoom:
        break;
      case adminModuleUser:
        setArea(AreaKeys.admin);
        setType(TYPE_USER);
        break;
      case adminModuleConnections:
        setArea(AreaKeys.admin);
        setType(TYPE_CONNECTION);
        break;
      case adminModuleOrg:
        setArea(AreaKeys.admin);
        setType(TYPE_GROUP);
        break;
      case adminModuleRoom:
        setArea(AreaKeys.admin);
        setType(TYPE_ROOM);
        break;
      case adminModuleConfiguration:
        setArea(AreaKeys.admin);
        setType(TYPE_CONFIG);
        break;
      case adminModuleLanguages:
        setArea(AreaKeys.admin);
        setType(TYPE_LANG);
        break;
      case adminModuleLDAP:
        setArea(AreaKeys.admin);
        setType(TYPE_LDAP);
        break;
      case adminModuleBackup:
        setArea(AreaKeys.admin);
        setType(TYPE_BACKUP);
        break;
      case adminModuleServers:
        setArea(AreaKeys.admin);
        setType(TYPE_SERVER);
        break;
      case adminModuleOAuth:
        setArea(AreaKeys.admin);
        setType(TYPE_OAUTH2);
    }
  }

  public AreaKeys getArea() {
    return area;
  }

  public void setArea(AreaKeys area) {
    this.area = area;
  }

  public String getType() {
    return type;
  }

  public void setType(String type) {
    this.type = type;
  }
 
  public static BasePanel getPanel(AreaKeys area, String type) {
    BasePanel basePanel = null;
    switch(area) {
      case admin:
        if (TYPE_USER.equals(type)) {
          basePanel = new UsersPanel(CHILD_ID);
        } else if (TYPE_CONNECTION.equals(type)) {
          basePanel = new ConnectionsPanel(CHILD_ID);
        } else if (TYPE_GROUP.equals(type)) {
          basePanel = new GroupsPanel(CHILD_ID);
        } else if (TYPE_ROOM.equals(type)) {
          basePanel = new RoomsPanel(CHILD_ID);
        } else if (TYPE_CONFIG.equals(type)) {
          basePanel = new ConfigsPanel(CHILD_ID);
        } else if (TYPE_LANG.equals(type)) {
          basePanel = new LangPanel(CHILD_ID);
        } else if (TYPE_LDAP.equals(type)) {
          basePanel = new LdapsPanel(CHILD_ID);
        } else if (TYPE_BACKUP.equals(type)) {
          basePanel = new BackupPanel(CHILD_ID);
        } else if (TYPE_SERVER.equals(type)) {
          basePanel = new ServersPanel(CHILD_ID);
        } else if (TYPE_OAUTH2.equals(type)) {
          basePanel = new OAuthPanel(CHILD_ID);
        }
        break;
      case profile:
        if (TYPE_MESSAGES.equals(type)) {
          basePanel = new SettingsPanel(CHILD_ID, MESSAGES_TAB_ID);
        } else if (TYPE_EDIT.equals(type)) {
          basePanel = new SettingsPanel(CHILD_ID, EDIT_PROFILE_TAB_ID);
        }
        break;
      case room:
        try {
          Long roomId = Long.parseLong(type);
          if (roomId != null) {
            PageParameters pp = new PageParameters();
            pp.add("wicketsid", getSid());
            pp.add("wicketroomid", roomId);
            pp.add("language", getLanguage());
            basePanel = new RoomPanel(CHILD_ID, pp);
          }
        } catch(NumberFormatException ne) {
          //skipit, bad roomid passed
        }
        break;
      case rooms:
        MenuParams params = MenuParams.publicTabButton;
        if (TYPE_GROUP.equals(type)) {
          params = MenuParams.privateTabButton;
        } else if (TYPE_MY.equals(type)) {
          params = MenuParams.myTabButton;
        }
        basePanel = new RoomsSelectorPanel(CHILD_ID, params);
        break;
      case user:
        if (TYPE_CALENDAR.equals(type)) {
          basePanel = new CalendarPanel(CHILD_ID);
        } else if (TYPE_RECORDINGS.equals(type)) {
          basePanel = new RecordingsPanel(CHILD_ID);
        } else {
          basePanel = new OmDashboardPanel(CHILD_ID);
        }
        break;
      default:
        break;
    }
    return basePanel;
  }
 
  public String getLink() {
    return getBean(ConfigurationDao.class).getBaseUrl() + "#" + getArea().name() + "/" + getType();
  }
}
TOP

Related Classes of org.apache.openmeetings.web.util.OmUrlFragment

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.