package com.constellio.app.modules.rm.ui.pages.home;
import static com.constellio.model.services.contents.ContentFactory.isCheckedOutBy;
import static com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.from;
import java.io.IOException;
import java.io.Serializable;
import com.constellio.app.modules.rm.services.RMSchemasRecordsServices;
import com.constellio.app.services.factories.AppLayerFactory;
import com.constellio.app.services.factories.ConstellioFactories;
import com.constellio.app.ui.application.ConstellioUI;
import com.constellio.app.ui.entities.MetadataSchemaVO;
import com.constellio.app.ui.entities.RecordVO.VIEW_MODE;
import com.constellio.app.ui.framework.builders.MetadataSchemaToVOBuilder;
import com.constellio.app.ui.framework.builders.RecordToVOBuilder;
import com.constellio.app.ui.framework.data.RecordVODataProvider;
import com.constellio.app.ui.pages.base.PresenterService;
import com.constellio.app.ui.pages.base.SessionContext;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.entities.schemas.MetadataSchemaType;
import com.constellio.model.entities.schemas.Schemas;
import com.constellio.model.services.search.query.logical.LogicalSearchQuery;
public class CheckedOutDocumentsTable implements Serializable {
private transient AppLayerFactory appLayerFactory;
private transient SessionContext sessionContext;
private transient RMSchemasRecordsServices rm;
private transient User user;
public CheckedOutDocumentsTable(AppLayerFactory appLayerFactory, SessionContext sessionContext) {
init(appLayerFactory, sessionContext);
}
public RecordVODataProvider getDataProvider() {
MetadataSchemaVO schema = new MetadataSchemaToVOBuilder().build(
rm.documentSchemaType().getDefaultSchema(), VIEW_MODE.TABLE, sessionContext);
return new RecordVODataProvider(schema, new RecordToVOBuilder(), appLayerFactory.getModelLayerFactory(), sessionContext) {
@Override
protected LogicalSearchQuery getQuery() {
MetadataSchemaType document = rm.documentSchemaType();
return new LogicalSearchQuery(from(document).where(rm.documentContent()).is(isCheckedOutBy(user)))
.sortDesc(Schemas.MODIFIED_ON);
}
};
}
private void init(AppLayerFactory appLayerFactory, SessionContext sessionContext) {
this.appLayerFactory = appLayerFactory;
this.sessionContext = sessionContext;
rm = new RMSchemasRecordsServices(sessionContext.getCurrentCollection(), appLayerFactory);
user = new PresenterService(appLayerFactory.getModelLayerFactory()).getCurrentUser(sessionContext);
}
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException {
stream.defaultReadObject();
init(ConstellioFactories.getInstance().getAppLayerFactory(), ConstellioUI.getCurrentSessionContext());
}
}