/**
* License Agreement for OpenSearchServer
*
* Copyright (C) 2010-2014 Emmanuel Keller / Jaeksoft
*
* http://www.open-search-server.com
*
* This file is part of OpenSearchServer.
*
* OpenSearchServer 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.
*
* OpenSearchServer 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 OpenSearchServer.
* If not, see <http://www.gnu.org/licenses/>.
**/
package com.jaeksoft.searchlib;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
import org.apache.commons.io.FileUtils;
import com.jaeksoft.searchlib.util.LastModifiedAndSize;
public class ClientCatalogItem implements Comparable<ClientCatalogItem> {
private final String indexName;
private LastModifiedAndSize lastModifiedAndSize;
public ClientCatalogItem(String indexName) {
this.indexName = indexName == null ? null : indexName.intern();
this.lastModifiedAndSize = null;
}
public String getIndexName() {
return indexName;
}
public Client getClient() {
try {
return ClientCatalog.getClient(indexName);
} catch (SearchLibException e) {
Logging.error(e);
return null;
}
}
public Long getSize() {
if (lastModifiedAndSize == null)
return null;
return lastModifiedAndSize.getSize();
}
public String getSizeString() {
if (lastModifiedAndSize == null)
return null;
return FileUtils.byteCountToDisplaySize(lastModifiedAndSize.getSize());
}
public Integer getNumDocs() throws IOException, SearchLibException {
Client client = getClient();
if (client == null)
return null;
if (!client.isOnline())
return null;
return client.getStatistics().getNumDocs();
}
public long getLastModified() {
if (lastModifiedAndSize == null)
return -1;
return lastModifiedAndSize.getLastModified();
}
public Date getLastModifiedDate() {
if (lastModifiedAndSize == null)
return null;
return new Date(lastModifiedAndSize.getLastModified());
}
public String getLastModifiedString() {
Date dt = getLastModifiedDate();
if (dt == null)
return null;
return DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM).format(dt);
}
public File getLastModifiedFile() {
if (lastModifiedAndSize == null)
return null;
return lastModifiedAndSize.getLastModifiedFile();
}
@Override
public int hashCode() {
return indexName.hashCode();
}
@Override
public boolean equals(Object o) {
if (!(o instanceof ClientCatalogItem))
return false;
ClientCatalogItem item = (ClientCatalogItem) o;
return indexName.equals(item.indexName);
}
@Override
public int compareTo(ClientCatalogItem o) {
return indexName.compareTo(o.indexName);
}
public void computeInfos() throws SearchLibException {
lastModifiedAndSize = ClientCatalog.getLastModifiedAndSize(indexName);
}
}