// Path: src/main/java/com/civilizer/dao/TagDao.java
// public interface TagDao {
//     
//     public List<?> executeQueryForResult(String query);
// 
//     public void executeQuery(String query, boolean sql);
//     
// 	public long countAll();
// 	
//     public List<Tag> findAll();
// 
//     public List<Tag> findAllWithChildren(boolean includeSpecialTags);
// 
//     public void findIdsOfAllDescendants(Long parentTagId, Session s, Set<Long> idsInOut);
// 
//     public long countAllDescendants(Long id);
// 
//     public Tag findById(Long id);
// 
//     public Tag findById(Long id, boolean withFragments, boolean withChildren);
//     
//     public void populate(Tag target, boolean withFragments, boolean withChildren);
// 
//     public List<Tag> findParentTags(Long id);
// 
//     public void save(Tag tag);
// 
//     public void saveWithHierarchy(Tag tag, Collection<Tag> parents, Collection<Tag> children);
// 
//     public void delete(Tag tag);
//     
// }


import java.util.*;
import javax.annotation.Resource;
import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.civilizer.dao.TagDao;
import com.civilizer.domain.*;
package com.civilizer.dao.hibernate;





@Repository("tagDao")
@Transactional
// Path: src/main/java/com/civilizer/dao/TagDao.java
// public interface TagDao {
//     
//     public List<?> executeQueryForResult(String query);
// 
//     public void executeQuery(String query, boolean sql);
//     
// 	public long countAll();
// 	
//     public List<Tag> findAll();
// 
//     public List<Tag> findAllWithChildren(boolean includeSpecialTags);
// 
//     public void findIdsOfAllDescendants(Long parentTagId, Session s, Set<Long> idsInOut);
// 
//     public long countAllDescendants(Long id);
// 
//     public Tag findById(Long id);
// 
//     public Tag findById(Long id, boolean withFragments, boolean withChildren);
//     
//     public void populate(Tag target, boolean withFragments, boolean withChildren);
// 
//     public List<Tag> findParentTags(Long id);
// 
//     public void save(Tag tag);
// 
//     public void saveWithHierarchy(Tag tag, Collection<Tag> parents, Collection<Tag> children);
// 
//     public void delete(Tag tag);
//     
// }


// Path: src/main/java/com/civilizer/dao/hibernate/TagDaoImpl.java
import java.util.*;
import javax.annotation.Resource;
import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.civilizer.dao.TagDao;
import com.civilizer.domain.*;

package com.civilizer.dao.hibernate;





@Repository("tagDao")
@Transactional
public final class TagDaoImpl implements TagDao {