001/*
002 * This library is part of OpenCms -
003 * the Open Source Content Management System
004 *
005 * Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com)
006 *
007 * This library is free software; you can redistribute it and/or
008 * modify it under the terms of the GNU Lesser General Public
009 * License as published by the Free Software Foundation; either
010 * version 2.1 of the License, or (at your option) any later version.
011 *
012 * This library is distributed in the hope that it will be useful,
013 * but WITHOUT ANY WARRANTY; without even the implied warranty of
014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015 * Lesser General Public License for more details.
016 *
017 * For further information about Alkacon Software GmbH & Co. KG, please see the
018 * company website: http://www.alkacon.com
019 *
020 * For further information about OpenCms, please see the
021 * project website: http://www.opencms.org
022 *
023 * You should have received a copy of the GNU Lesser General Public
024 * License along with this library; if not, write to the Free Software
025 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
026 */
027
028package org.opencms.db;
029
030import org.opencms.db.log.CmsLogEntry;
031import org.opencms.db.log.CmsLogFilter;
032import org.opencms.db.userpublishlist.CmsUserPublishListEntry;
033import org.opencms.file.CmsDataAccessException;
034import org.opencms.file.CmsFile;
035import org.opencms.file.CmsFolder;
036import org.opencms.file.CmsGroup;
037import org.opencms.file.CmsProject;
038import org.opencms.file.CmsProject.CmsProjectType;
039import org.opencms.file.CmsResource;
040import org.opencms.file.CmsUser;
041import org.opencms.lock.CmsLock;
042import org.opencms.main.CmsException;
043import org.opencms.publish.CmsPublishJobInfoBean;
044import org.opencms.report.I_CmsReport;
045import org.opencms.util.CmsUUID;
046
047import java.util.List;
048import java.util.Set;
049
050/**
051 * Definitions of all required project driver methods. <p>
052 *
053 * @since 6.0.0
054 */
055public interface I_CmsProjectDriver {
056
057    /** The type ID to identify project driver implementations. */
058    int DRIVER_TYPE_ID = 1;
059
060    /** Name of the setup project. */
061    String SETUP_PROJECT_NAME = "_setupProject";
062
063    /** The name of the temp file project. */
064    String TEMP_FILE_PROJECT_NAME = "tempFileProject";
065
066    /**
067     * Creates a new project.<p>
068     *
069     * @param dbc the current database context
070     * @param id the project id
071     * @param owner the owner of the project
072     * @param group the group for the project
073     * @param managergroup the manager group for the project
074     * @param name the name of the project to create
075     * @param description the description for the project
076     * @param flags the flags for the project
077     * @param type the type for the project
078     *
079     * @return the created <code>{@link CmsProject}</code> instance
080     *
081     * @throws CmsDataAccessException if something goes wrong
082     */
083    CmsProject createProject(
084        CmsDbContext dbc,
085        CmsUUID id,
086        CmsUser owner,
087        CmsGroup group,
088        CmsGroup managergroup,
089        String name,
090        String description,
091        int flags,
092        CmsProjectType type) throws CmsDataAccessException;
093
094    /**
095     * Creates a new projectResource from a given CmsResource object.<p>
096     *
097     * @param dbc the current database context
098     * @param projectId The project in which the resource will be used
099     * @param resourceName The resource to be written to the Cms
100     *
101     * @throws CmsDataAccessException if something goes wrong
102     */
103    void createProjectResource(CmsDbContext dbc, CmsUUID projectId, String resourceName) throws CmsDataAccessException;
104
105    /**
106     * Inserts an entry for a publish job .<p>
107     *
108     * @param dbc the current database context
109     * @param publishJob the publish job data
110     *
111     * @throws CmsDataAccessException if something goes wrong
112     */
113    void createPublishJob(CmsDbContext dbc, CmsPublishJobInfoBean publishJob) throws CmsDataAccessException;
114
115    /**
116     * Deletes all entries in the published resource table.<p>
117     *
118     * @param dbc the current database context
119     * @param linkType the type of resource deleted (0= non-paramter, 1=parameter)
120     *
121     * @throws CmsDataAccessException if something goes wrong
122     */
123    void deleteAllStaticExportPublishedResources(CmsDbContext dbc, int linkType) throws CmsDataAccessException;
124
125    /**
126     * Deletes log entries matching the given filter.<p>
127     *
128     * @param dbc the database context
129     * @param filter the log entry filter
130     *
131     * @throws CmsDataAccessException if something goes wrong
132     */
133    void deleteLog(CmsDbContext dbc, CmsLogFilter filter) throws CmsDataAccessException;
134
135    /**
136     * Deletes a project from the cms.<p>
137     *
138     * Therefore it deletes all files, resources and properties.
139     *
140     * @param dbc the current database context
141     * @param project the project to delete
142     * @throws CmsDataAccessException if something goes wrong
143     */
144    void deleteProject(CmsDbContext dbc, CmsProject project) throws CmsDataAccessException;
145
146    /**
147     * Delete a projectResource from an given CmsResource object.<p>
148     *
149     * @param dbc the current database context
150     * @param projectId id of the project in which the resource is used
151     * @param resourceName name of the resource to be deleted from the Cms
152     *
153     * @throws CmsDataAccessException if something goes wrong
154     */
155    void deleteProjectResource(CmsDbContext dbc, CmsUUID projectId, String resourceName) throws CmsDataAccessException;
156
157    /**
158     * Deletes a specified project.<p>
159     *
160     * @param dbc the current database context
161     * @param project the project to be deleted
162     *
163     * @throws CmsDataAccessException if operation was not succesful
164     */
165    void deleteProjectResources(CmsDbContext dbc, CmsProject project) throws CmsDataAccessException;
166
167    /**
168     * Deletes all publish history entries with publish tags >=0 and < the specified max. publish tag.<p>
169     *
170     * @param dbc the current database context
171     * @param projectId the ID of the current project
172     * @param maxPublishTag entries with publish tags >=0 and < this max. publish tag get deleted
173     *
174     * @throws CmsDataAccessException if something goes wrong
175     */
176    void deletePublishHistory(CmsDbContext dbc, CmsUUID projectId, int maxPublishTag) throws CmsDataAccessException;
177
178    /**
179     * Deletes a publish history entry with publish tags >=0 and < the specified max. publish tag.<p>
180     *
181     * @param dbc the current database context
182     * @param publishHistoryId the id of the history to delete the entry from
183     * @param publishResource the entry to delete
184     *
185     * @throws CmsDataAccessException if something goes wrong
186     */
187    void deletePublishHistoryEntry(CmsDbContext dbc, CmsUUID publishHistoryId, CmsPublishedResource publishResource)
188    throws CmsDataAccessException;
189
190    /**
191     * Deletes a publish job identified by its history id.<p>
192     *
193     * @param dbc the current database context
194     * @param publishHistoryId the history id identifying the publish job
195     * @throws CmsDataAccessException if something goes wrong
196     */
197    void deletePublishJob(CmsDbContext dbc, CmsUUID publishHistoryId) throws CmsDataAccessException;
198
199    /**
200     * Deletes the publish list assigned to a publish job.<p>
201     *
202     * @param dbc the current database context
203     * @param publishHistoryId the history id identifying the publish job
204     * @throws CmsDataAccessException if something goes wrong
205     */
206    void deletePublishList(CmsDbContext dbc, CmsUUID publishHistoryId) throws CmsDataAccessException;
207
208    /**
209     * Deletes an entry in the published resource table.<p>
210     *
211     * @param dbc the current database context
212     * @param resourceName The name of the resource to be deleted in the static export
213     * @param linkType the type of resource deleted (0= non-paramter, 1=parameter)
214     * @param linkParameter the parameters of the resource
215     *
216     * @throws CmsDataAccessException if something goes wrong
217     */
218    void deleteStaticExportPublishedResource(CmsDbContext dbc, String resourceName, int linkType, String linkParameter)
219    throws CmsDataAccessException;
220
221    /**
222     * Deletes multiple publish list entries from the database.<p>
223     *
224     * @param dbc the current database context
225     * @param publishListDeletions the publish list entries to remove from the database
226     * @throws CmsDataAccessException if something goes wrong
227     */
228    void deleteUserPublishListEntries(CmsDbContext dbc, List<CmsUserPublishListEntry> publishListDeletions)
229    throws CmsDataAccessException;
230
231    /**
232     * Destroys this driver.<p>
233     *
234     * @throws Throwable if something goes wrong
235     */
236    void destroy() throws Throwable;
237
238    /**
239     * Fills the OpenCms database tables with default values.<p>
240     *
241     * @param dbc the current database context
242     *
243     * @throws CmsDataAccessException if something goes wrong
244     */
245    void fillDefaults(CmsDbContext dbc) throws CmsDataAccessException;
246
247    /**
248     * Returns the SqlManager of this driver.<p>
249     *
250     * @return the SqlManager of this driver
251     */
252    CmsSqlManager getSqlManager();
253
254    /**
255     * Returns the given user's publish list.<p>
256     *
257     * @param dbc the database context
258     * @param userId the user's id
259     *
260     * @return the given user's publish list
261     *
262     * @throws CmsDataAccessException if something goes wrong
263     */
264    List<CmsResource> getUsersPubList(CmsDbContext dbc, CmsUUID userId) throws CmsDataAccessException;
265
266    /**
267     * Initializes the SQL manager for this driver.<p>
268     *
269     * To obtain JDBC connections from different pools, further
270     * {online|offline|history} pool Urls have to be specified.<p>
271     *
272     * @param classname the classname of the SQL manager
273     *
274     * @return the SQL manager for this driver
275     */
276    CmsSqlManager initSqlManager(String classname);
277
278    /**
279     * Logs the given log entries.<p>
280     *
281     * @param dbc the database context
282     * @param logEntries the log entries to write
283     *
284     * @throws CmsDataAccessException if something goes wrong
285     */
286    void log(CmsDbContext dbc, List<CmsLogEntry> logEntries) throws CmsDataAccessException;
287
288    /**
289     * Publishes a deleted folder.<p>
290     *
291     * @param dbc the current database context
292     * @param report the report to log the output to
293     * @param m the number of the folder to publish
294     * @param n the number of all folders to publish
295     * @param onlineProject the online project
296     * @param offlineFolder the offline folder to publish
297     * @param publishHistoryId the publish history id
298     * @param publishTag the publish tag
299     *
300     * @throws CmsDataAccessException if something goes wrong
301     */
302    void publishDeletedFolder(
303        CmsDbContext dbc,
304        I_CmsReport report,
305        int m,
306        int n,
307        CmsProject onlineProject,
308        CmsFolder offlineFolder,
309        CmsUUID publishHistoryId,
310        int publishTag) throws CmsDataAccessException;
311
312    /**
313     * Publishes a new, changed or deleted file.<p>
314     *
315     * @param dbc the current database context
316     * @param report the report to log the output to
317     * @param m the number of the file to publish
318     * @param n the number of all files to publish
319     * @param onlineProject the online project
320     * @param offlineResource the offline file to publish
321     * @param publishedContentIds contains the UUIDs of already published content records
322     * @param publishHistoryId the publish history id
323     * @param publishTag the publish tag
324     *
325     * @throws CmsDataAccessException if something goes wrong
326     */
327    void publishFile(
328        CmsDbContext dbc,
329        I_CmsReport report,
330        int m,
331        int n,
332        CmsProject onlineProject,
333        CmsResource offlineResource,
334        Set<CmsUUID> publishedContentIds,
335        CmsUUID publishHistoryId,
336        int publishTag) throws CmsDataAccessException;
337
338    /**
339     * Publishes the content record of a file.<p>
340     *
341     * The content record is only published unless it's UUID is not contained in publishedContentIds.
342     * The calling method has to take care about whether an existing content record has to be deleted
343     * before or not.<p>
344     *
345     * The intention of this method is to get overloaded in a project driver
346     * for a specific DB server to shift the binary content from the offline into the online table
347     * in a more sophisticated way than in the generic ANSI-SQL implementation of this interface.
348     *
349     * @param dbc the current database context
350     * @param offlineProject the offline project to read data
351     * @param onlineProject the online project to write data
352     * @param offlineFileHeader the offline header of the file of which the content gets published
353     * @param publishedResourceIds a Set with the UUIDs of the already published content records
354     * @param needToUpdateContent <code>true</code> if the content record has to be updated
355     * @param publishTag the publish tag
356     *
357     * @return the published file (online)
358     *
359     * @throws CmsDataAccessException if something goes wrong
360     */
361    CmsFile publishFileContent(
362        CmsDbContext dbc,
363        CmsProject offlineProject,
364        CmsProject onlineProject,
365        CmsResource offlineFileHeader,
366        Set<CmsUUID> publishedResourceIds,
367        boolean needToUpdateContent,
368        int publishTag) throws CmsDataAccessException;
369
370    /**
371     * Publishes a new or changed folder.<p>
372     *
373     * @param dbc the current database context
374     * @param report the report to log the output to
375     * @param m the number of the folder to publish
376     * @param n the number of all folders to publish
377     * @param onlineProject the online project
378     * @param currentFolder the offline folder to publish
379     * @param publishHistoryId the publish history id
380     * @param publishTag the publish tag
381     *
382     * @throws CmsDataAccessException if something goes wrong
383     */
384    void publishFolder(
385        CmsDbContext dbc,
386        I_CmsReport report,
387        int m,
388        int n,
389        CmsProject onlineProject,
390        CmsFolder currentFolder,
391        CmsUUID publishHistoryId,
392        int publishTag) throws CmsDataAccessException;
393
394    /**
395     * Publishes a specified project to the online project.<p>
396     *
397     * @param dbc the current database context
398     * @param report an I_CmsReport instance to print output messages
399     * @param onlineProject the online project
400     * @param publishList a Cms publish list
401     * @param publishTag the publish tag
402     *
403     * @throws CmsException if something goes wrong
404     */
405    void publishProject(
406        CmsDbContext dbc,
407        I_CmsReport report,
408        CmsProject onlineProject,
409        CmsPublishList publishList,
410        int publishTag) throws CmsException;
411
412    /**
413     * Reads the <code>{@link List}&lt{@link org.opencms.lock.CmsLock};&gt; </code>
414     * that were saved to the database in the previous run of OpenCms.<p>
415     *
416     * @param dbc the current database context
417     *
418     * @return the <code>{@link List}&lt{@link org.opencms.lock.CmsLock};&gt; </code>
419     *      that were saved to the database in the previous run of OpenCms.
420     *
421     * @throws CmsDataAccessException if something goes wrong
422     */
423    List<CmsLock> readLocks(CmsDbContext dbc) throws CmsDataAccessException;
424
425    /**
426     * Reads log entries matching the given filter.<p>
427     *
428     * @param dbc the database context
429     * @param filter the log entry filter
430     *
431     * @return the list of log entries
432     *
433     * @throws CmsDataAccessException if something goes wrong
434     */
435    List<CmsLogEntry> readLog(CmsDbContext dbc, CmsLogFilter filter) throws CmsDataAccessException;
436
437    /**
438     * Reads a project given the projects id.<p>
439     *
440     * @param dbc the current database context
441     * @param id the id of the project
442     *
443     * @return the project read
444     *
445     * @throws CmsDataAccessException if something goes wrong
446     */
447    CmsProject readProject(CmsDbContext dbc, CmsUUID id) throws CmsDataAccessException;
448
449    /**
450     * Reads a project.<p>
451     *
452     * @param dbc the current database context
453     * @param name the name of the project
454     *
455     * @return the project with the given name
456     * @throws CmsDataAccessException if something goes wrong
457     */
458    CmsProject readProject(CmsDbContext dbc, String name) throws CmsDataAccessException;
459
460    /**
461     * Reads the project resource path for a given project and resource path,
462     * to validate if a resource path for a given project already exists.<p>
463     *
464     * @param dbc the current database context
465     * @param projectId the ID of the project for which the resource path is read
466     * @param resourcename the project's resource path
467     *
468     * @return String the project's resource path
469     * @throws CmsDataAccessException if something goes wrong
470     */
471    String readProjectResource(CmsDbContext dbc, CmsUUID projectId, String resourcename) throws CmsDataAccessException;
472
473    /**
474     * Reads the project resources for a specified project.<p>
475     *
476     * @param dbc the current database context
477     * @param project the project for which the resource path is read
478     *
479     * @return a list of all project resource paths
480     *
481     * @throws CmsDataAccessException if something goes wrong
482     */
483    List<String> readProjectResources(CmsDbContext dbc, CmsProject project) throws CmsDataAccessException;
484
485    /**
486     * Returns all projects in the given organizational unit.<p>
487     *
488     * @param dbc the current database context
489     * @param ouFqn the fully qualified name of the organizational unit to get the projects for
490     *
491     * @return a list of objects of type <code>{@link CmsProject}</code>
492     *
493     * @throws CmsDataAccessException if something goes wrong
494     */
495    List<CmsProject> readProjects(CmsDbContext dbc, String ouFqn) throws CmsDataAccessException;
496
497    /**
498     * Returns all projects, which are accessible by a group.<p>
499     *
500     * @param dbc the current database context
501     * @param group the requesting group
502     *
503     * @return a Vector of projects
504     * @throws CmsDataAccessException if something goes wrong
505     */
506    List<CmsProject> readProjectsForGroup(CmsDbContext dbc, CmsGroup group) throws CmsDataAccessException;
507
508    /**
509     * Returns all projects, which are manageable by a group.<p>
510     *
511     * @param dbc the current database context
512     * @param group The requesting group
513     * @return a Vector of projects
514     *
515     * @throws CmsDataAccessException if something goes wrong
516     */
517    List<CmsProject> readProjectsForManagerGroup(CmsDbContext dbc, CmsGroup group) throws CmsDataAccessException;
518
519    /**
520     * Reads all projects which are owned by a specified user.<p>
521     *
522     * @param dbc the current database context
523     * @param user the user
524     *
525     * @return a list of objects of type <code>{@link CmsProject}</code>
526     *
527     * @throws CmsDataAccessException if something goes wrong
528     */
529    List<CmsProject> readProjectsForUser(CmsDbContext dbc, CmsUser user) throws CmsDataAccessException;
530
531    /**
532     * Reads the resources that were published during a publish process for a given publish history ID.<p>
533     *
534     * @param dbc the current database context
535     * @param publishHistoryId unique int ID to identify the publish process in the publish history
536     *
537     * @return a list of <code>{@link org.opencms.db.CmsPublishedResource}</code> objects
538     *
539     * @throws CmsDataAccessException if something goes wrong
540     */
541    List<org.opencms.db.CmsPublishedResource> readPublishedResources(CmsDbContext dbc, CmsUUID publishHistoryId)
542    throws CmsDataAccessException;
543
544    /**
545     * Reads a single publish job identified by its publish history id.<p>
546     *
547     * @param dbc the current database context
548     * @param publishHistoryId unique id to identify the publish job in the publish history
549     * @return an object of type <code>{@link CmsPublishJobInfoBean}</code>
550     *
551     * @throws CmsDataAccessException if something goes wrong
552     */
553    CmsPublishJobInfoBean readPublishJob(CmsDbContext dbc, CmsUUID publishHistoryId) throws CmsDataAccessException;
554
555    /**
556     * Reads all publish jobs finished in the given time range.<p>
557     * If <code>(0L, 0L)</code> is passed as time range, all pending jobs are returned.
558     *
559     * @param dbc the current database context
560     * @param startTime the start of the time range for finish time
561     * @param endTime the end of the time range for finish time
562     * @return a list of objects of type <code>{@link CmsPublishJobInfoBean}</code>
563     *
564     * @throws CmsDataAccessException if something goes wrong
565     */
566    List<CmsPublishJobInfoBean> readPublishJobs(CmsDbContext dbc, long startTime, long endTime)
567    throws CmsDataAccessException;
568
569    /**
570     * Reads the publish list assigned to a publish job.<p>
571     *
572     * @param dbc the current database context
573     * @param publishHistoryId the history id identifying the publish job
574     * @return the assigned publish list
575     * @throws CmsDataAccessException if something goes wrong
576     */
577    CmsPublishList readPublishList(CmsDbContext dbc, CmsUUID publishHistoryId) throws CmsDataAccessException;
578
579    /**
580     * Reads the publish report assigned to a publish job.<p>
581     *
582     * @param dbc the current database context
583     * @param publishHistoryId the history id identifying the publish job
584     * @return the content of the assigned publish report
585     * @throws CmsDataAccessException if something goes wrong
586     */
587    byte[] readPublishReportContents(CmsDbContext dbc, CmsUUID publishHistoryId) throws CmsDataAccessException;
588
589    /**
590     * Returns the parameters of a resource in the table of all published template resources.<p>
591     *
592     * @param dbc the current database context
593     * @param rfsName the rfs name of the resource
594     *
595     * @return the paramter string of the requested resource
596     *
597     * @throws CmsDataAccessException if something goes wrong
598     */
599    String readStaticExportPublishedResourceParameters(CmsDbContext dbc, String rfsName) throws CmsDataAccessException;
600
601    /**
602     * Returns a list of all template resources which must be processed during a static export.<p>
603     *
604     * @param dbc the current database context
605     * @param parameterResources flag for reading resources with parameters (1) or without (0)
606     * @param timestamp the time stamp information
607     *
608     * @return a list of template resources as <code>{@link String}</code> objects
609     *
610     * @throws CmsDataAccessException if something goes wrong
611     */
612    List<String> readStaticExportResources(CmsDbContext dbc, int parameterResources, long timestamp)
613    throws CmsDataAccessException;
614
615    /**
616     * Sets the driver manager for this driver if possible.<p>
617     *
618     * @param driverManager the new driver manager
619     */
620    void setDriverManager(CmsDriverManager driverManager);
621
622    /**
623     * Sets the SQL manager for this driver if possible.<p>
624     *
625     * @param sqlManager the new SQL manager
626     */
627    void setSqlManager(CmsSqlManager sqlManager);
628
629    /**
630     * Removes the project id from all resources within a project.<p>
631     *
632     * This must be done when a project will deleted
633     *
634     * @param dbc the current database context
635     * @param project the project to delete
636     * @throws CmsDataAccessException if something goes wrong
637     */
638    void unmarkProjectResources(CmsDbContext dbc, CmsProject project) throws CmsDataAccessException;
639
640    /**
641     * Writes the <code>{@link List}&lt{@link org.opencms.lock.CmsLock};&gt; </code>
642     * to the database for reuse in the next run of OpenCms.<p>
643     *
644     * This method must only be called at startup or the in-memory locking will overwritten.<p>
645     *
646     * @param dbc the current database context
647     *
648     * @param locks the <code>{@link List}&lt{@link org.opencms.lock.CmsLock};&gt;</code> that
649     *      currently exist in OpenCms ({@link org.opencms.lock.CmsLockManager})
650     *
651     * @throws CmsDataAccessException if something goes wrong
652     */
653    void writeLocks(CmsDbContext dbc, List<CmsLock> locks) throws CmsDataAccessException;
654
655    /**
656     * Writes an already existing project.<p>
657     *
658     * The project id has to be a valid OpenCms project id.<br>
659     *
660     * The project with the given id will be completely overriden
661     * by the given data.<p>
662     *
663     * @param dbc the current database context
664     * @param project the project that should be written
665     *
666     * @throws CmsDataAccessException if operation was not successful
667     */
668    void writeProject(CmsDbContext dbc, CmsProject project) throws CmsDataAccessException;
669
670    /**
671     * Inserts an entry in the publish history for a published VFS resource.<p>
672     *
673     * @param dbc the current database context
674     * @param publishId the ID of the current publishing process
675     * @param resource the state of the resource *before* it was published
676     *
677     * @throws CmsDataAccessException if something goes wrong
678     */
679    void writePublishHistory(CmsDbContext dbc, CmsUUID publishId, CmsPublishedResource resource)
680    throws CmsDataAccessException;
681
682    /**
683     * Writes a publish job.<p>
684     *
685     * @param dbc the current database context
686     * @param publishJob the publish job to write
687     * @throws CmsDataAccessException if something goes wrong
688     */
689    void writePublishJob(CmsDbContext dbc, CmsPublishJobInfoBean publishJob) throws CmsDataAccessException;
690
691    /**
692     * Writes a publish report for a publish job.<p>
693     *
694     * @param dbc the current database context
695     * @param publishId the ID of the current publishing process
696     * @param content the report output
697     * @throws CmsDataAccessException if something goes wrong
698     */
699    void writePublishReport(CmsDbContext dbc, CmsUUID publishId, byte[] content) throws CmsDataAccessException;
700
701    /**
702     * Inserts an entry in the published resource table.<p>
703     *
704     * This is done during static export.<p>
705     *
706     * @param dbc the current database context
707     * @param resourceName The name of the resource to be added to the static export
708     * @param linkType the type of resource exported (0= non-paramter, 1=parameter)
709     * @param linkParameter the parameters added to the resource
710     * @param timestamp a timestamp for writing the data into the db
711     *
712     * @throws CmsDataAccessException if something goes wrong
713     */
714    void writeStaticExportPublishedResource(
715        CmsDbContext dbc,
716        String resourceName,
717        int linkType,
718        String linkParameter,
719        long timestamp) throws CmsDataAccessException;
720
721    /**
722     * Writes multiple user publish list entries to the database.<p>
723     *
724     * @param dbc the current database context
725     * @param publishListAdditions the user publish list entries to write
726     * @throws CmsDataAccessException if something goes wrong
727     */
728    void writeUserPublishListEntries(CmsDbContext dbc, List<CmsUserPublishListEntry> publishListAdditions)
729    throws CmsDataAccessException;
730}