Package com.subgraph.vega.ui.http.conditions

Source Code of com.subgraph.vega.ui.http.conditions.ConditionInput

/*******************************************************************************
* Copyright (c) 2011 Subgraph.
* 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:
*     Subgraph - initial API and implementation
******************************************************************************/
package com.subgraph.vega.ui.http.conditions;

import java.util.Collections;
import java.util.List;

import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.swt.widgets.Composite;

import com.subgraph.vega.api.model.conditions.IHttpCondition;
import com.subgraph.vega.api.model.conditions.IHttpConditionManager;
import com.subgraph.vega.api.model.conditions.IHttpConditionType;
import com.subgraph.vega.api.model.conditions.match.IHttpConditionIntegerMatchAction;
import com.subgraph.vega.api.model.conditions.match.IHttpConditionMatchAction;
import com.subgraph.vega.api.model.conditions.match.IHttpConditionRangeMatchAction;
import com.subgraph.vega.api.model.conditions.match.IHttpConditionStringMatchAction;

public class ConditionInput {
  private final IHttpConditionManager conditionManager;
 
  private ConditionTypeComboViewer conditionTypeViewer;
  private MatchActionComboViewer matchActionViewer;
  private MatchActionArgumentPanel matchActionArguments;
 
  public ConditionInput(IHttpConditionManager conditionManager) {
    this.conditionManager = conditionManager;
  }
 
  public ComboViewer createConditionTypeCombo(Composite parent) {
    conditionTypeViewer = new ConditionTypeComboViewer(parent, getConditionTypes(conditionManager));
    if(matchActionViewer != null)
      conditionTypeViewer.setMatchTypeViewer(matchActionViewer);
    return conditionTypeViewer;
  }
 
  private List<IHttpConditionType> getConditionTypes(IHttpConditionManager manager) {
    if(manager == null)
      return Collections.emptyList();
    else
      return manager.getConditionTypes();
  }
  public ComboViewer createConditionMatchCombo(Composite parent) {
    matchActionViewer = new MatchActionComboViewer(parent);
    if(conditionTypeViewer != null)
      conditionTypeViewer.setMatchTypeViewer(matchActionViewer);
    if(matchActionArguments != null)
      matchActionViewer.setMatchActionArgumentPanel(matchActionArguments);
    return matchActionViewer;
  }
 
  public Composite createInputPanel(Composite parent) {
    matchActionArguments = new MatchActionArgumentPanel(parent);
    if(matchActionViewer != null)
      matchActionViewer.setMatchActionArgumentPanel(matchActionArguments);
    return matchActionArguments;
  }
 
  public void reset() {
    conditionTypeViewer.reset();
    matchActionViewer.reset();
  }

  public IHttpCondition createConditionFromData() {
    final IHttpConditionMatchAction matchAction = matchActionViewer.getSelectedMatchAction();
    final IHttpConditionType conditionType = conditionTypeViewer.getSelectedConditionType();
    if(matchAction == null || conditionType == null)
      return null;
   
    switch(matchAction.getArgumentType()) {
    case ARGUMENT_STRING:
      return createStringCondition(conditionType, matchAction, matchActionArguments.getStringText());
    case ARGUMENT_REGEX:
      return createStringCondition(conditionType, matchAction, matchActionArguments.getRegexText());
    case ARGUMENT_INTEGER:
      return createIntegerCondition(conditionType, matchAction, matchActionArguments.getIntegerText());
    case ARGUMENT_RANGE:
      return createRangeCondition(conditionType, matchAction, matchActionArguments.getRangeLowText(), matchActionArguments.getRangeHighText());
    }
    return null;
  }
 
 
  private IHttpCondition createStringCondition(IHttpConditionType type, IHttpConditionMatchAction matchAction, String value) {
    if(!value.isEmpty() && (matchAction instanceof IHttpConditionStringMatchAction)) {
      ((IHttpConditionStringMatchAction) matchAction).setString(value);
      return type.createConditionInstance(matchAction);
    }
    return null;
  }
 
  private IHttpCondition createIntegerCondition(IHttpConditionType type, IHttpConditionMatchAction matchAction, String integerString) {
    if(integerString.isEmpty() || !(matchAction instanceof IHttpConditionIntegerMatchAction))
      return null;
    try {
      final int value = Integer.parseInt(integerString);
      ((IHttpConditionIntegerMatchAction) matchAction).setInteger(value);
      return type.createConditionInstance(matchAction);
    } catch (NumberFormatException e) {
      return null;
    }
  }

  private IHttpCondition createRangeCondition(IHttpConditionType type, IHttpConditionMatchAction matchAction, String rangeLowText, String rangeHighText) {
    if(rangeLowText.isEmpty() || rangeHighText.isEmpty() || !(matchAction instanceof IHttpConditionRangeMatchAction))
      return null;
    try {
      final int low = Integer.parseInt(rangeLowText);
      final int high = Integer.parseInt(rangeHighText);
      if(low < 0 || high < 0 || low > high)
        return null;
      ((IHttpConditionRangeMatchAction) matchAction).setRange(low, high);
      return type.createConditionInstance(matchAction);
    } catch (NumberFormatException e) {
      return null;
    }
  }
}
TOP

Related Classes of com.subgraph.vega.ui.http.conditions.ConditionInput

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.