/*
* Copyright � 2016 TIBCO Software,Inc.All rights reserved.
* http://community.jaspersoft.com/project/jaspermobile-android
*
* Unless you have purchased a commercial license agreement from TIBCO Jaspersoft,
* the following license terms apply:
*
* This program is part of TIBCO Jaspersoft Mobile for Android.
*
* TIBCO Jaspersoft Mobile is free software:you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation,either version 3of the License,or
* (at your option)any later version.
*
* TIBCO Jaspersoft Mobile 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with TIBCO Jaspersoft Mobile for Android.If not,see
* <http://www.gnu.org/licenses/lgpl>.
*/
package com.jaspersoft.android.jaspermobile.activities.info.fragments;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import com.jaspersoft.android.jaspermobile.R;
import com.jaspersoft.android.jaspermobile.db.database.table.SavedItemsTable;
import com.jaspersoft.android.jaspermobile.db.model.SavedItems;
import com.jaspersoft.android.jaspermobile.dialog.DeleteDialogFragment;
import com.jaspersoft.android.jaspermobile.dialog.RenameDialogFragment;
import com.jaspersoft.android.jaspermobile.util.SavedItemHelper;
import com.jaspersoft.android.jaspermobile.util.resource.JasperResource;
import com.jaspersoft.android.jaspermobile.widget.InfoView;
import com.jaspersoft.android.sdk.util.FileUtils;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Bean;
import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.OptionsItem;
import org.androidannotations.annotations.OptionsMenu;
import org.androidannotations.annotations.ViewById;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author Andrew Tivodar
* @since 2.2
*/
@OptionsMenu(R.menu.am_saved_items_menu)
@EFragment(R.layout.fragment_resource_info)
public class SavedItemInfoFragment extends SimpleInfoFragment
implements DeleteDialogFragment.DeleteDialogClickListener,
RenameDialogFragment.RenameDialogClickListener {
@ViewById(R.id.infoDetailsView)
protected InfoView infoView;
@Bean
protected SavedItemHelper savedItemHelper;
private String mFileUri;
private String mFileExtension;
private String mCreationTime;
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
fetchSavedItemMetadata();
}
@AfterViews
protected void showSavedItemInfo() {
infoView.fillWithBaseData(jasperResource.getResourceType().name(), jasperResource.getLabel(),
jasperResource.getDescription(), mFileUri,
mCreationTime, null, null, -1);
infoView.addInfoItem(getString(R.string.ri_file_format), mFileExtension, 1);
infoView.addInfoItem(getString(R.string.ri_file_size), getHumanReadableFileSize(new File(mFileUri)), 4);
}
@OptionsItem(R.id.renameItem)
protected void renameSavedFile() {
RenameDialogFragment.createBuilder(getFragmentManager())
.setSelectedFile(new File(mFileUri).getParentFile())
.setExtension(mFileExtension)
.setRecordUri(Uri.parse(jasperResource.getId()))
.setTargetFragment(this)
.show();
}
@OptionsItem(R.id.deleteItem)
protected void deleteSavedFile() {
String deleteMessage = getActivity().getString(R.string.sdr_drd_msg, jasperResource.getLabel());
DeleteDialogFragment.createBuilder(getActivity(), getFragmentManager())
.setResource(jasperResource)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle(R.string.sdr_drd_title)
.setMessage(deleteMessage)
.setPositiveButtonText(R.string.spm_delete_btn)
.setNegativeButtonText(R.string.cancel)
.setTargetFragment(this)
.show();
}
private void fetchSavedItemMetadata() {
Cursor cursor = getActivity().getContentResolver().query(Uri.parse(jasperResource.getId()), null, null, null, null);
cursor.moveToFirst();
mFileUri = cursor.getString(cursor.getColumnIndex(SavedItemsTable.FILE_PATH));
mFileExtension = cursor.getString(cursor.getColumnIndex(SavedItemsTable.FILE_FORMAT));
long creationTime = cursor.getLong(cursor.getColumnIndex(SavedItemsTable.CREATION_TIME));
Date creationDate = new Date(creationTime);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
mCreationTime = simpleDateFormat.format(creationDate);
}
private String getHumanReadableFileSize(File file) {
long byteSize = FileUtils.calculateFileSize(file.getParentFile());
return FileUtils.getHumanReadableByteCount(byteSize);
}
//---------------------------------------------------------------------
// Implements DeleteDialogFragment.DeleteDialogClickListener
//---------------------------------------------------------------------
@Override
public void onDeleteConfirmed(JasperResource resource) {
savedItemHelper.deleteSavedItem(Uri.parse(resource.getId()));
getActivity().finish();
}
//---------------------------------------------------------------------
// Implements RenameDialogFragment.RenameDialogClickListener
//---------------------------------------------------------------------
@Override
public void onRenamed(String newFileName, Uri recordUri) {
if (savedItemHelper.renameSavedItem(recordUri, newFileName)) {
fetchSavedItemMetadata();
updateHeaderViewLabel(newFileName);
showSavedItemInfo();
} else {
Toast.makeText(getActivity(), R.string.sdr_t_report_renaming_error, Toast.LENGTH_SHORT).show();
}
}
}