/*
This file is part of ZAX.
ZAX is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ZAX is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ZAX. If not, see <http://www.gnu.org/licenses/>.
*/
package com.inovex.zabbixmobile.activities.fragments;
import android.content.ComponentName;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.inovex.zabbixmobile.R;
import com.inovex.zabbixmobile.adapters.EventsDetailsPagerAdapter;
import com.inovex.zabbixmobile.model.Item;
import com.inovex.zabbixmobile.model.Trigger;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
/**
* Represents one page of the event details view pager (see
* {@link EventsDetailsPagerAdapter} ). Shows the details of a specific event.
*
*/
public class ProblemsDetailsPage extends BaseDetailsPage {
private static final String TAG = ProblemsDetailsPage.class.getSimpleName();
private static final String ARG_TRIGGER_ID = "arg_trigger_id";
Trigger mTrigger;
private long mTriggerId;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.page_problems_details, null);
if (savedInstanceState != null)
mTriggerId = savedInstanceState.getLong(ARG_TRIGGER_ID, -1);
return rootView;
}
@Override
protected void fillDetailsText() {
if (mTrigger != null && getView() != null) {
((TextView) getView().findViewById(R.id.trigger_details_host))
.setText(mTrigger.getHostNames());
((TextView) getView().findViewById(R.id.trigger_details_trigger))
.setText(mTrigger.getDescription());
((TextView) getView().findViewById(R.id.trigger_details_severity))
.setText(mTrigger.getPriority().getNameResourceId());
((TextView) getView().findViewById(R.id.trigger_details_expression))
.setText(mTrigger.getExpression());
Item i = mTrigger.getItem();
if (i != null) {
((TextView) getView().findViewById(R.id.trigger_details_item))
.setText(i.getDescription());
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(i.getLastClock());
DateFormat dateFormatter = SimpleDateFormat
.getDateTimeInstance(SimpleDateFormat.SHORT,
SimpleDateFormat.SHORT, Locale.getDefault());
cal.setTimeInMillis(i.getLastClock());
((TextView) getView().findViewById(R.id.latest_data)).setText(i
.getLastValue()
+ " "
+ i.getUnits()
+ " "
+ getResources().getString(R.string.at)
+ " "
+ dateFormatter.format(cal.getTime()));
}
}
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
super.onServiceConnected(name, service);
// if the trigger is not set, this fragment was apparently restored and
// we
// need to refresh the event data
if (mTrigger == null) {
Log.d(TAG, "trigger was null, loading trigger from database.");
this.mTrigger = mZabbixDataService.getTriggerById(mTriggerId);
}
if (mTrigger != null) {
fillDetailsText();
if (!mHistoryDetailsImported && mTrigger.getItem() != null)
mZabbixDataService.loadHistoryDetailsByItem(mTrigger.getItem(),
false, this);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putLong(ARG_TRIGGER_ID, mTriggerId);
super.onSaveInstanceState(outState);
}
public void setTrigger(Trigger trigger) {
this.mTrigger = trigger;
this.mTriggerId = trigger.getId();
if (!mHistoryDetailsImported && getView() != null)
mZabbixDataService.loadHistoryDetailsByItem(mTrigger.getItem(),
false, this);
}
@Override
protected void showGraph() {
showGraph(mTrigger.getItem());
}
/**
* Refreshes this page's view by reloading the trigger from the database.
*/
public void refresh() {
if (mZabbixDataService != null) {
this.mTrigger = mZabbixDataService.getTriggerById(mTriggerId);
fillDetailsText();
}
}
}