# Netty upgraded versions
if node['neo4j']['version'].to_i < 5
  remote_file 'netty-tcnative-classes' do
    source node['neo4j']['netty-tcnative-53']['tcnative-classes-url']
    path '/usr/share/neo4j/lib/netty-tcnative-classes-2.0.53.Final.jar'
    owner 'root'
    group 'root'
    mode '0755'
    notifies :run, 'ruby_block[restart_neo4j]', :delayed
  end

  remote_file 'netty-tcnative-boringssl' do
    source node['neo4j']['netty-tcnative-53']['tcnative-boringssl-url']
    path '/usr/share/neo4j/lib/netty-tcnative-boringssl-static-2.0.53.Final-linux-x86_64.jar'
    owner 'root'
    group 'root'
    mode '0755'
    notifies :run, 'ruby_block[restart_neo4j]', :delayed
  end

  file "#{node['neo4j']['config']['dbms.directories.plugins']}/#{node['neo4j']['netty-tcnative']['file_name']}" do
    action :delete
    only_if { ::File.exist?("#{node['neo4j']['config']['dbms.directories.plugins']}/#{node['neo4j']['netty-tcnative']['file_name']}") }
  end
end

# Install APOC plugin
remote_file "#{node['neo4j']['config']['dbms.directories.plugins']}/apoc-all.jar" do
  source node['neo4j']['apoc']['install_url']
  checksum node['neo4j']['apoc']['checksum']
  backup 5
  owner node['neo4j']['user']
  group node['neo4j']['user']
  mode '0640'
  action :create
  notifies :run, 'ruby_block[restart_neo4j]', :delayed
end

# Install Streams/Kafka plugin
if node['neo4j']['version'].to_i < 5
  remote_file "#{node['neo4j']['config']['dbms.directories.plugins']}/neo4j-streams.jar" do
    source node['neo4j']['streams']['install_url']
    checksum node['neo4j']['streams']['checksum']
    backup 5
    owner node['neo4j']['user']
    group node['neo4j']['user']
    mode '0640'
    action :create
    notifies :run, 'ruby_block[restart_neo4j]', :delayed
  end
end

maven 'mysql-connector-java' do
  group_id 'mysql'
  version node['neo4j']['mysql-connector-java']['version']
  dest node['neo4j']['config']['dbms.directories.plugins']
  owner node['neo4j']['user']
  group node['neo4j']['user']
  mode '0640'
  timeout 60
  notifies :run, 'execute[remove_old_mysql_connector_java_versions]', :immediately
  notifies :run, 'ruby_block[restart_neo4j]', :delayed
end

execute 'remove_old_mysql_connector_java_versions' do
  command "mkdir -p /opt/chef/cache/mysql-connector-java && find #{node['neo4j']['config']['dbms.directories.plugins']} -type f -name '*mysql-connector-*.jar' ! -name 'mysql-connector-java-#{node['neo4j']['mysql-connector-java']['version']}.jar' -exec mv {} /opt/chef/cache/mysql-connector-java/ \\;"
  action :nothing
end

maven 'snowflake-jdbc' do
  group_id 'net.snowflake'
  version node['neo4j']['snowflake-jdbc']['version']
  dest node['neo4j']['config']['dbms.directories.plugins']
  owner node['neo4j']['user']
  group node['neo4j']['user']
  mode '0640'
  timeout 60
  notifies :run, 'execute[remove_old_snowflake_jdbc_versions]', :immediately
  notifies :run, 'ruby_block[restart_neo4j]', :delayed
end

execute 'remove_old_snowflake_jdbc_versions' do
  command "mkdir -p /opt/chef/cache/snowflake-jdbc && find #{node['neo4j']['config']['dbms.directories.plugins']} -type f -name '*snowflake-jdbc-*.jar' ! -name 'snowflake-jdbc-#{node['neo4j']['snowflake-jdbc']['version']}.jar' -exec mv {} /opt/chef/cache/snowflake-jdbc/ \\;"
  action :nothing
end
