001package ca.uhn.fhir.jpa.search.builder.predicate;
002
003/*-
004 * #%L
005 * HAPI FHIR JPA Server
006 * %%
007 * Copyright (C) 2014 - 2022 Smile CDR, Inc.
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 *
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 *
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023import ca.uhn.fhir.jpa.search.builder.sql.SearchQueryBuilder;
024import com.healthmarketscience.sqlbuilder.BinaryCondition;
025import com.healthmarketscience.sqlbuilder.Condition;
026import com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn;
027import org.slf4j.Logger;
028import org.slf4j.LoggerFactory;
029
030public class SourcePredicateBuilder extends BaseJoiningPredicateBuilder {
031
032        private static final Logger ourLog = LoggerFactory.getLogger(SourcePredicateBuilder.class);
033        private final DbColumn myColumnSourceUri;
034        private final DbColumn myColumnRequestId;
035        private final DbColumn myResourceIdColumn;
036
037        /**
038         * Constructor
039         */
040        public SourcePredicateBuilder(SearchQueryBuilder theSearchSqlBuilder) {
041                super(theSearchSqlBuilder, theSearchSqlBuilder.addTable("HFJ_RES_VER_PROV"));
042
043                myResourceIdColumn = getTable().addColumn("RES_PID");
044                myColumnSourceUri = getTable().addColumn("SOURCE_URI");
045                myColumnRequestId = getTable().addColumn("REQUEST_ID");
046        }
047
048
049        @Override
050        public DbColumn getResourceIdColumn() {
051                return myResourceIdColumn;
052        }
053
054        public Condition createPredicateSourceUri(String theSourceUri) {
055                return BinaryCondition.equalTo(myColumnSourceUri, generatePlaceholder(theSourceUri));
056        }
057
058        public Condition createPredicateRequestId(String theRequestId) {
059                return BinaryCondition.equalTo(myColumnRequestId, generatePlaceholder(theRequestId));
060        }
061
062}