package rocks.inspectit.ui.rcp.editor.table.input; import java.util.ArrayList; import java.util.Date; import java.util.EnumSet; import java.util.List; import java.util.Set; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.StyledString; import rocks.inspectit.shared.all.communication.data.HttpTimerData; import rocks.inspectit.shared.cs.cmr.service.IHttpTimerDataAccessService; import rocks.inspectit.ui.rcp.editor.inputdefinition.InputDefinition; import rocks.inspectit.ui.rcp.editor.preferences.PreferenceEventCallback.PreferenceEvent; import rocks.inspectit.ui.rcp.editor.preferences.PreferenceId; import rocks.inspectit.ui.rcp.editor.preferences.PreferenceId.LiveMode; import rocks.inspectit.ui.rcp.preferences.PreferencesConstants; import rocks.inspectit.ui.rcp.preferences.PreferencesUtils; import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition; /** * Reduce the redundancy in http controllers. Still as the de-facto standard of realizing * controllers is based on the enum to create the columns lots of code needs to be doubled. We can * address this in the future in a better way. * * @author Stefan Siegl */ public abstract class AbstractHttpInputController extends AbstractTableInputController { /** * Http Timer data access service. */ protected IHttpTimerDataAccessService httptimerDataAccessService; /** * List of Timer data to be displayed. */ protected List<HttpTimerData> timerDataList = new ArrayList<>(); /** * Template object used for querying. */ protected HttpTimerData template; /** * Empty styled string. */ protected final StyledString emptyStyledString = new StyledString(); /** * Date to display invocations from. */ protected Date fromDate = null; /** * Date to display invocations to. */ protected Date toDate = null; /** * Are we in live mode. */ protected boolean autoUpdate = LiveMode.ACTIVE_DEFAULT; /** * Decimal places. */ protected int timeDecimalPlaces = PreferencesUtils.getIntValue(PreferencesConstants.DECIMAL_PLACES); /** * Flag identifying whether the aggregation should take the request method into account. */ protected boolean httpCatorizationOnRequestMethodActive = false; /** * {@inheritDoc} */ @Override public void setInputDefinition(InputDefinition inputDefinition) { super.setInputDefinition(inputDefinition); template = new HttpTimerData(); template.setPlatformIdent(inputDefinition.getIdDefinition().getPlatformId()); httptimerDataAccessService = inputDefinition.getRepositoryDefinition().getHttpTimerDataAccessService(); } /** * {@inheritDoc} */ @Override public boolean canOpenInput(List<? extends Object> data) { if (null == data) { return false; } return true; } /** * {@inheritDoc} */ @Override public Object getTableInput() { return timerDataList; } @Override public void preferenceEventFired(PreferenceEvent preferenceEvent) { if (null == preferenceEvent) { return; } switch (preferenceEvent.getPreferenceId()) { case TIMELINE: if (preferenceEvent.getPreferenceMap().containsKey(PreferenceId.TimeLine.FROM_DATE_ID)) { fromDate = (Date) preferenceEvent.getPreferenceMap().get(PreferenceId.TimeLine.FROM_DATE_ID); } if (preferenceEvent.getPreferenceMap().containsKey(PreferenceId.TimeLine.TO_DATE_ID)) { toDate = (Date) preferenceEvent.getPreferenceMap().get(PreferenceId.TimeLine.TO_DATE_ID); } break; case LIVEMODE: if (preferenceEvent.getPreferenceMap().containsKey(PreferenceId.LiveMode.BUTTON_LIVE_ID)) { autoUpdate = (Boolean) preferenceEvent.getPreferenceMap().get(PreferenceId.LiveMode.BUTTON_LIVE_ID); } break; case TIME_RESOLUTION: if (preferenceEvent.getPreferenceMap().containsKey(PreferenceId.TimeResolution.TIME_DECIMAL_PLACES_ID)) { timeDecimalPlaces = (Integer) preferenceEvent.getPreferenceMap().get(PreferenceId.TimeResolution.TIME_DECIMAL_PLACES_ID); } break; case HTTP_AGGREGATION_REQUESTMETHOD: if (preferenceEvent.getPreferenceMap().containsKey(PreferenceId.HttpAggregationRequestMethod.BUTTON_HTTP_AGGREGATION_REQUESTMETHOD_ID)) { httpCatorizationOnRequestMethodActive = (Boolean) preferenceEvent.getPreferenceMap().get(PreferenceId.HttpAggregationRequestMethod.BUTTON_HTTP_AGGREGATION_REQUESTMETHOD_ID); } break; default: break; } } /** * {@inheritDoc} */ @Override public Set<PreferenceId> getPreferenceIds() { Set<PreferenceId> preferences = EnumSet.noneOf(PreferenceId.class); if (getInputDefinition().getRepositoryDefinition() instanceof CmrRepositoryDefinition) { preferences.add(PreferenceId.CLEAR_BUFFER); preferences.add(PreferenceId.LIVEMODE); } preferences.add(PreferenceId.UPDATE); preferences.add(PreferenceId.TIMELINE); preferences.add(PreferenceId.HTTP_AGGREGATION_REQUESTMETHOD); preferences.add(PreferenceId.TIME_RESOLUTION); return preferences; } /** * {@inheritDoc} */ @Override public IContentProvider getContentProvider() { return new ArrayContentProvider(); } }